YKNCT / YKNCT_I2C_lib

Dependents:   arim_AutoMachine

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers YKNCT_I2C.h Source File

YKNCT_I2C.h

00001 #ifndef INCLUDED_I2C_h_
00002 #define INCLUDED_I2C_h_
00003 
00004 #include "mbed.h"
00005 /* マクロ定義 ----------------------------------------------------------------*/
00006 
00007 /**
00008     @brief  MDデータ構造内のモーターに出力するPWM値をセットする
00009     @param  __MD_DATA__: MDデータ構造
00010     @param  __NUMBER__: MDデータ構造の番号
00011     @param  __PWMVAL__: セットするPWMの値
00012     @retval None
00013 */
00014 #define MD_SET_PWM(__MD_DATA__, __NUMBER__, __PWMVAL__) \
00015   (((__MD_DATA__) + (__NUMBER__))->PWMVal = (__PWMVAL__))
00016 
00017 /**
00018     @brief  MD用データ構造内のモーターの動作状態をセットする
00019     @param  __MD_DATA__: MDデータ構造
00020     @param  __NUMBER__: MDデータ構造の番号
00021     @param  __STATUS__: 動作させたいモーターの状態
00022         @arg MD_BRAKE   ブレーキ
00023         @arg MD_FORWARD 正転
00024         @arg MD_REVERSE 逆転
00025     @retval None
00026 */
00027 #define MD_SET_DRIVE(__MD_DATA__, __NUMBER__, __STATUS__) \
00028   (((__MD_DATA__) + (__NUMBER__))->DriveStatus = (__STATUS__))
00029 
00030 /**
00031     @brief  MD用にMDデータ構造にセットされたPWM値を取得する
00032     @param  __MD_DATA__: MDデータ構造
00033     @param  __NUMBER__: MDデータ構造の番号
00034     @retval PWM値
00035 */
00036 #define MD_GET_PWM(__MD_DATA__, __NUMBER__) \
00037   (((__MD_DATA__) + (__NUMBER__))->PWMVal)
00038 
00039 /**
00040     @brief  MD用にMDデータ構造にセットされたモーターの動作状態を取得する
00041     @param  __MD_DATA__: MDデータ構造
00042     @param  __NUMBER__: MDデータ構造の番号
00043     @retval モーターの動作状態
00044 */
00045 #define MD_GET_DRIVE(__MD_DATA__, __NUMBER__) \
00046   (((__MD_DATA__) + (__NUMBER__))->DriveStatus)
00047   
00048   
00049   
00050 #define GET_IN(__IN_I2C_Data__,__NUM__) (__IN_I2C_Data__+(__NUM__)) -> in_data
00051 #define GET_ADC(__ADC_I2C_Data__,__NUM__) (__ADC_I2C_Data__+(__NUM__)) ->adc_data
00052 #define GET_ENC(__ENC_I2C_Data__,__NUM__) (__ENC_I2C_Data__ + (__NUM__))->enc_data
00053 
00054 
00055 typedef struct {
00056     uint8_t             DevAddress;     /* 通信相手デバイスのアドレス */
00057     uint8_t             Number;         /* PICから出力出来る2つのMDの出力先指定(0or1) */
00058     uint8_t             PWMVal;         /* モーターに出力するPWM値(0~100) */
00059     uint8_t             DriveStatus;    /* モーターの動作状態MD_DriveStatus_TypeDefを代入 */
00060     char                pData[2];       /* PICに送信するデータ用領域 */
00061 } MD_I2C_Data_TypeDef;
00062 
00063 typedef struct {
00064     uint8_t DevAddress;
00065     uint8_t Number;
00066     bool    out_data;
00067 } OUT_I2C_Data_TypeDef;
00068 
00069 typedef struct {
00070     uint8_t DevAddress;
00071     uint8_t Number;
00072     bool    in_data;
00073 } IN_I2C_Data_TypeDef;
00074 
00075 typedef struct {
00076     uint8_t DevAddress;
00077     uint8_t Number;
00078     uint16_t adc_data;
00079 } ADC_I2C_Data_TypeDef;
00080 
00081 typedef struct {
00082     uint8_t DevAddress;
00083     int32_t enc_data;
00084 } ENC_I2C_Data_TypeDef;
00085 
00086 typedef struct {
00087     uint8_t DevAddress;
00088     uint8_t Number;
00089     uint16_t pulse;
00090 } SERVO_I2C_Data_TypeDef;
00091 
00092 typedef enum {
00093     MD_BRAKE       = 0x00U,
00094     MD_FORWARD     = 0x01U,
00095     MD_REVERSE     = 0x02U
00096 } MD_DriveStatus_TypeDef;
00097 
00098 class Y_I2C
00099 {
00100 private:
00101     I2C i2c;
00102 
00103 public:
00104     Y_I2C(PinName sda, PinName scl);
00105     void Out_Set(OUT_I2C_Data_TypeDef *OUT_I2C_Data, uint8_t num, uint8_t value);
00106     void Out(OUT_I2C_Data_TypeDef *OUT_I2C_Data, uint8_t MAX);
00107     void Servo_Set(SERVO_I2C_Data_TypeDef *SERVO_I2C_Data, uint8_t num, uint16_t pulse);
00108     void Servo(SERVO_I2C_Data_TypeDef *SERVO_I2C_Data, uint8_t MAX);
00109     void In(IN_I2C_Data_TypeDef *IN_I2C_Data, uint8_t num);
00110     void Adc(ADC_I2C_Data_TypeDef *ADC_I2C_Data, uint8_t num);
00111     void Enc(ENC_I2C_Data_TypeDef *ENC_I2C_Data, uint8_t num);
00112     void MD_I2C(MD_I2C_Data_TypeDef *MD_I2C_Data, uint8_t num);
00113     void MD_I2C_Empty(MD_I2C_Data_TypeDef *MD_I2C_Data, uint8_t num);
00114 };
00115 
00116 #endif