![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
a
YKNCT_I2C_lib/YKNCT_I2C.h@0:761a63c6d020, 2019-08-22 (annotated)
- Committer:
- Tom0108
- Date:
- Thu Aug 22 09:26:20 2019 +0000
- Revision:
- 0:761a63c6d020
08/22
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Tom0108 | 0:761a63c6d020 | 1 | #ifndef INCLUDED_I2C_h_ |
Tom0108 | 0:761a63c6d020 | 2 | #define INCLUDED_I2C_h_ |
Tom0108 | 0:761a63c6d020 | 3 | |
Tom0108 | 0:761a63c6d020 | 4 | #include "mbed.h" |
Tom0108 | 0:761a63c6d020 | 5 | /* マクロ定義 ----------------------------------------------------------------*/ |
Tom0108 | 0:761a63c6d020 | 6 | |
Tom0108 | 0:761a63c6d020 | 7 | /** |
Tom0108 | 0:761a63c6d020 | 8 | @brief MDデータ構造内のモーターに出力するPWM値をセットする |
Tom0108 | 0:761a63c6d020 | 9 | @param __MD_DATA__: MDデータ構造 |
Tom0108 | 0:761a63c6d020 | 10 | @param __NUMBER__: MDデータ構造の番号 |
Tom0108 | 0:761a63c6d020 | 11 | @param __PWMVAL__: セットするPWMの値 |
Tom0108 | 0:761a63c6d020 | 12 | @retval None |
Tom0108 | 0:761a63c6d020 | 13 | */ |
Tom0108 | 0:761a63c6d020 | 14 | #define MD_SET_PWM(__MD_DATA__, __NUMBER__, __PWMVAL__) \ |
Tom0108 | 0:761a63c6d020 | 15 | (((__MD_DATA__) + (__NUMBER__))->PWMVal = (__PWMVAL__)) |
Tom0108 | 0:761a63c6d020 | 16 | |
Tom0108 | 0:761a63c6d020 | 17 | /** |
Tom0108 | 0:761a63c6d020 | 18 | @brief MD用データ構造内のモーターの動作状態をセットする |
Tom0108 | 0:761a63c6d020 | 19 | @param __MD_DATA__: MDデータ構造 |
Tom0108 | 0:761a63c6d020 | 20 | @param __NUMBER__: MDデータ構造の番号 |
Tom0108 | 0:761a63c6d020 | 21 | @param __STATUS__: 動作させたいモーターの状態 |
Tom0108 | 0:761a63c6d020 | 22 | @arg MD_BRAKE ブレーキ |
Tom0108 | 0:761a63c6d020 | 23 | @arg MD_FORWARD 正転 |
Tom0108 | 0:761a63c6d020 | 24 | @arg MD_REVERSE 逆転 |
Tom0108 | 0:761a63c6d020 | 25 | @retval None |
Tom0108 | 0:761a63c6d020 | 26 | */ |
Tom0108 | 0:761a63c6d020 | 27 | #define MD_SET_DRIVE(__MD_DATA__, __NUMBER__, __STATUS__) \ |
Tom0108 | 0:761a63c6d020 | 28 | (((__MD_DATA__) + (__NUMBER__))->DriveStatus = (__STATUS__)) |
Tom0108 | 0:761a63c6d020 | 29 | |
Tom0108 | 0:761a63c6d020 | 30 | /** |
Tom0108 | 0:761a63c6d020 | 31 | @brief MD用にMDデータ構造にセットされたPWM値を取得する |
Tom0108 | 0:761a63c6d020 | 32 | @param __MD_DATA__: MDデータ構造 |
Tom0108 | 0:761a63c6d020 | 33 | @param __NUMBER__: MDデータ構造の番号 |
Tom0108 | 0:761a63c6d020 | 34 | @retval PWM値 |
Tom0108 | 0:761a63c6d020 | 35 | */ |
Tom0108 | 0:761a63c6d020 | 36 | #define MD_GET_PWM(__MD_DATA__, __NUMBER__) \ |
Tom0108 | 0:761a63c6d020 | 37 | (((__MD_DATA__) + (__NUMBER__))->PWMVal) |
Tom0108 | 0:761a63c6d020 | 38 | |
Tom0108 | 0:761a63c6d020 | 39 | /** |
Tom0108 | 0:761a63c6d020 | 40 | @brief MD用にMDデータ構造にセットされたモーターの動作状態を取得する |
Tom0108 | 0:761a63c6d020 | 41 | @param __MD_DATA__: MDデータ構造 |
Tom0108 | 0:761a63c6d020 | 42 | @param __NUMBER__: MDデータ構造の番号 |
Tom0108 | 0:761a63c6d020 | 43 | @retval モーターの動作状態 |
Tom0108 | 0:761a63c6d020 | 44 | */ |
Tom0108 | 0:761a63c6d020 | 45 | #define MD_GET_DRIVE(__MD_DATA__, __NUMBER__) \ |
Tom0108 | 0:761a63c6d020 | 46 | (((__MD_DATA__) + (__NUMBER__))->DriveStatus) |
Tom0108 | 0:761a63c6d020 | 47 | |
Tom0108 | 0:761a63c6d020 | 48 | |
Tom0108 | 0:761a63c6d020 | 49 | |
Tom0108 | 0:761a63c6d020 | 50 | #define GET_IN(__IN_I2C_Data__,__NUM__) (__IN_I2C_Data__+(__NUM__)) -> in_data |
Tom0108 | 0:761a63c6d020 | 51 | #define GET_ADC(__ADC_I2C_Data__,__NUM__) (__ADC_I2C_Data__+(__NUM__)) ->adc_data |
Tom0108 | 0:761a63c6d020 | 52 | #define GET_ENC(__ENC_I2C_Data__,__NUM__) (__ENC_I2C_Data__ + (__NUM__))->enc_data |
Tom0108 | 0:761a63c6d020 | 53 | |
Tom0108 | 0:761a63c6d020 | 54 | |
Tom0108 | 0:761a63c6d020 | 55 | typedef struct { |
Tom0108 | 0:761a63c6d020 | 56 | uint8_t DevAddress; /* 通信相手デバイスのアドレス */ |
Tom0108 | 0:761a63c6d020 | 57 | uint8_t Number; /* PICから出力出来る2つのMDの出力先指定(0or1) */ |
Tom0108 | 0:761a63c6d020 | 58 | uint8_t PWMVal; /* モーターに出力するPWM値(0~100) */ |
Tom0108 | 0:761a63c6d020 | 59 | uint8_t DriveStatus; /* モーターの動作状態MD_DriveStatus_TypeDefを代入 */ |
Tom0108 | 0:761a63c6d020 | 60 | char pData[2]; /* PICに送信するデータ用領域 */ |
Tom0108 | 0:761a63c6d020 | 61 | } MD_I2C_Data_TypeDef; |
Tom0108 | 0:761a63c6d020 | 62 | |
Tom0108 | 0:761a63c6d020 | 63 | typedef struct { |
Tom0108 | 0:761a63c6d020 | 64 | uint8_t DevAddress; |
Tom0108 | 0:761a63c6d020 | 65 | uint8_t Number; |
Tom0108 | 0:761a63c6d020 | 66 | bool out_data; |
Tom0108 | 0:761a63c6d020 | 67 | } OUT_I2C_Data_TypeDef; |
Tom0108 | 0:761a63c6d020 | 68 | |
Tom0108 | 0:761a63c6d020 | 69 | typedef struct { |
Tom0108 | 0:761a63c6d020 | 70 | uint8_t DevAddress; |
Tom0108 | 0:761a63c6d020 | 71 | uint8_t Number; |
Tom0108 | 0:761a63c6d020 | 72 | bool in_data; |
Tom0108 | 0:761a63c6d020 | 73 | } IN_I2C_Data_TypeDef; |
Tom0108 | 0:761a63c6d020 | 74 | |
Tom0108 | 0:761a63c6d020 | 75 | typedef struct { |
Tom0108 | 0:761a63c6d020 | 76 | uint8_t DevAddress; |
Tom0108 | 0:761a63c6d020 | 77 | uint8_t Number; |
Tom0108 | 0:761a63c6d020 | 78 | uint16_t adc_data; |
Tom0108 | 0:761a63c6d020 | 79 | } ADC_I2C_Data_TypeDef; |
Tom0108 | 0:761a63c6d020 | 80 | |
Tom0108 | 0:761a63c6d020 | 81 | typedef struct { |
Tom0108 | 0:761a63c6d020 | 82 | uint8_t DevAddress; |
Tom0108 | 0:761a63c6d020 | 83 | int32_t enc_data; |
Tom0108 | 0:761a63c6d020 | 84 | } ENC_I2C_Data_TypeDef; |
Tom0108 | 0:761a63c6d020 | 85 | |
Tom0108 | 0:761a63c6d020 | 86 | typedef struct { |
Tom0108 | 0:761a63c6d020 | 87 | uint8_t DevAddress; |
Tom0108 | 0:761a63c6d020 | 88 | uint8_t Number; |
Tom0108 | 0:761a63c6d020 | 89 | uint16_t pulse; |
Tom0108 | 0:761a63c6d020 | 90 | } SERVO_I2C_Data_TypeDef; |
Tom0108 | 0:761a63c6d020 | 91 | |
Tom0108 | 0:761a63c6d020 | 92 | typedef enum { |
Tom0108 | 0:761a63c6d020 | 93 | MD_BRAKE = 0x00U, |
Tom0108 | 0:761a63c6d020 | 94 | MD_FORWARD = 0x01U, |
Tom0108 | 0:761a63c6d020 | 95 | MD_REVERSE = 0x02U |
Tom0108 | 0:761a63c6d020 | 96 | } MD_DriveStatus_TypeDef; |
Tom0108 | 0:761a63c6d020 | 97 | |
Tom0108 | 0:761a63c6d020 | 98 | class Y_I2C |
Tom0108 | 0:761a63c6d020 | 99 | { |
Tom0108 | 0:761a63c6d020 | 100 | private: |
Tom0108 | 0:761a63c6d020 | 101 | I2C i2c; |
Tom0108 | 0:761a63c6d020 | 102 | |
Tom0108 | 0:761a63c6d020 | 103 | public: |
Tom0108 | 0:761a63c6d020 | 104 | Y_I2C(PinName sda, PinName scl); |
Tom0108 | 0:761a63c6d020 | 105 | void Out_Set(OUT_I2C_Data_TypeDef *OUT_I2C_Data, uint8_t num, uint8_t value); |
Tom0108 | 0:761a63c6d020 | 106 | void Out(OUT_I2C_Data_TypeDef *OUT_I2C_Data, uint8_t MAX); |
Tom0108 | 0:761a63c6d020 | 107 | void Servo_Set(SERVO_I2C_Data_TypeDef *SERVO_I2C_Data, uint8_t num, uint16_t pulse); |
Tom0108 | 0:761a63c6d020 | 108 | void Servo(SERVO_I2C_Data_TypeDef *SERVO_I2C_Data, uint8_t MAX); |
Tom0108 | 0:761a63c6d020 | 109 | void In(IN_I2C_Data_TypeDef *IN_I2C_Data, uint8_t num); |
Tom0108 | 0:761a63c6d020 | 110 | void Adc(ADC_I2C_Data_TypeDef *ADC_I2C_Data, uint8_t num); |
Tom0108 | 0:761a63c6d020 | 111 | void Enc(ENC_I2C_Data_TypeDef *ENC_I2C_Data, uint8_t num); |
Tom0108 | 0:761a63c6d020 | 112 | void MD_I2C(MD_I2C_Data_TypeDef *MD_I2C_Data, uint8_t num); |
Tom0108 | 0:761a63c6d020 | 113 | void MD_I2C_Empty(MD_I2C_Data_TypeDef *MD_I2C_Data, uint8_t num); |
Tom0108 | 0:761a63c6d020 | 114 | }; |
Tom0108 | 0:761a63c6d020 | 115 | |
Tom0108 | 0:761a63c6d020 | 116 | #endif |