TI社のBLDCモータードライバDRV8301を コントロールするためのユーティリティのようなクラスです。 できるだけユーザーにわかりやすく レジスタの設定・読み取りなどを行います。 尚、データシートは必須の模様。

Dependents:   BLDC1Axis_DRV8301CTRL

Committer:
Yajirushi
Date:
Wed Aug 31 17:03:35 2016 +0000
Revision:
0:72d833823fd5
FIRST COMMIT

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Yajirushi 0:72d833823fd5 1 /* Copyright (c) 2016 Yajirushi(Cursor)
Yajirushi 0:72d833823fd5 2 *
Yajirushi 0:72d833823fd5 3 * Released under the MIT license
Yajirushi 0:72d833823fd5 4 * http://opensource.org/licenses/mit-license.php
Yajirushi 0:72d833823fd5 5 *
Yajirushi 0:72d833823fd5 6 * Permission is hereby granted, free of charge, to any person obtaining a copy
Yajirushi 0:72d833823fd5 7 * of this software and associated documentation files (the "Software"), to deal
Yajirushi 0:72d833823fd5 8 * in the Software without restriction, including without limitation the rights
Yajirushi 0:72d833823fd5 9 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
Yajirushi 0:72d833823fd5 10 * copies of the Software, and to permit persons to whom the Software is
Yajirushi 0:72d833823fd5 11 * furnished to do so, subject to the following conditions:
Yajirushi 0:72d833823fd5 12 *
Yajirushi 0:72d833823fd5 13 * The above copyright notice and this permission notice shall be included in
Yajirushi 0:72d833823fd5 14 * all copies or substantial portions of the Software.
Yajirushi 0:72d833823fd5 15 *
Yajirushi 0:72d833823fd5 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
Yajirushi 0:72d833823fd5 17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
Yajirushi 0:72d833823fd5 18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
Yajirushi 0:72d833823fd5 19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
Yajirushi 0:72d833823fd5 20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
Yajirushi 0:72d833823fd5 21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
Yajirushi 0:72d833823fd5 22 * THE SOFTWARE.
Yajirushi 0:72d833823fd5 23 */
Yajirushi 0:72d833823fd5 24 #include "mbed.h"
Yajirushi 0:72d833823fd5 25
Yajirushi 0:72d833823fd5 26 #ifndef DRV8301CTRL_H
Yajirushi 0:72d833823fd5 27 #define DRV8301CTRL_H
Yajirushi 0:72d833823fd5 28
Yajirushi 0:72d833823fd5 29 // ##### BEGIN:ここからユーザーが変更する部分(Change setting, if you need.) ####
Yajirushi 0:72d833823fd5 30
Yajirushi 0:72d833823fd5 31 //DRV8301 SPI FREQUENCY(SPIの周波数:Max=5MHz)
Yajirushi 0:72d833823fd5 32 #define DRV8301CTRL_FREQ 1000000
Yajirushi 0:72d833823fd5 33
Yajirushi 0:72d833823fd5 34 // ##### END:ここまで #####
Yajirushi 0:72d833823fd5 35
Yajirushi 0:72d833823fd5 36 //STATUS & CONTROL REGISTERS
Yajirushi 0:72d833823fd5 37 #define DRV8301REG_WRITEMODE 0x0000
Yajirushi 0:72d833823fd5 38 #define DRV8301REG_READMODE 0x8000
Yajirushi 0:72d833823fd5 39 #define DRV8301REG_STATUS1 0x0000
Yajirushi 0:72d833823fd5 40 #define DRV8301REG_STATUS2 0x0800
Yajirushi 0:72d833823fd5 41 #define DRV8301REG_CTRL1 0x1000
Yajirushi 0:72d833823fd5 42 #define DRV8301REG_CTRL2 0x1800
Yajirushi 0:72d833823fd5 43
Yajirushi 0:72d833823fd5 44 //ENUM STATUS & CONTROL VALUES
Yajirushi 0:72d833823fd5 45 enum CTRL1_GATE_CURRENT{
Yajirushi 0:72d833823fd5 46 GATE_CURRENT_PEAKCURRENT_1_7A = 0x0000,
Yajirushi 0:72d833823fd5 47 GATE_CURRENT_PEAKCURRENT_0_7A = 0x0001,
Yajirushi 0:72d833823fd5 48 GATE_CURRENT_PEAKCURRENT_0_25A = 0x0002,
Yajirushi 0:72d833823fd5 49 GATE_CURRENT_PEAKCURRENT_RESERVED = 0x0003
Yajirushi 0:72d833823fd5 50 };
Yajirushi 0:72d833823fd5 51 enum CTRL1_GATE_RESET{
Yajirushi 0:72d833823fd5 52 GATE_RESET_NORMAL = 0x0000,
Yajirushi 0:72d833823fd5 53 GATE_RESET_RESETGATE_LATCHED_FAULT = 0x0004
Yajirushi 0:72d833823fd5 54 };
Yajirushi 0:72d833823fd5 55 enum CTRL1_PWM_MODE{
Yajirushi 0:72d833823fd5 56 PWM_MODE_PWMLINES_6 = 0x0000,
Yajirushi 0:72d833823fd5 57 PWM_MODE_PWMLINES_3 = 0x0008
Yajirushi 0:72d833823fd5 58 };
Yajirushi 0:72d833823fd5 59 enum CTRL1_OCP_MODE{
Yajirushi 0:72d833823fd5 60 OCP_MODE_CURRENTLIMIT = 0x0000,
Yajirushi 0:72d833823fd5 61 OCP_MODE_OC_LATCH_SHUTDOWN = 0x0010,
Yajirushi 0:72d833823fd5 62 OCP_MODE_REPORTONLY = 0x0020,
Yajirushi 0:72d833823fd5 63 OCP_MODE_OC_DISABLE = 0x0030
Yajirushi 0:72d833823fd5 64 };
Yajirushi 0:72d833823fd5 65 enum CTRL1_OC_ADJ{
Yajirushi 0:72d833823fd5 66 OC_ADJ_SET_ADJUST_0_060=0x0000,
Yajirushi 0:72d833823fd5 67 OC_ADJ_SET_ADJUST_0_068=0x0040,
Yajirushi 0:72d833823fd5 68 OC_ADJ_SET_ADJUST_0_076=0x0080,
Yajirushi 0:72d833823fd5 69 OC_ADJ_SET_ADJUST_0_086=0x00C0,
Yajirushi 0:72d833823fd5 70 OC_ADJ_SET_ADJUST_0_097=0x0100,
Yajirushi 0:72d833823fd5 71 OC_ADJ_SET_ADJUST_0_109=0x0140,
Yajirushi 0:72d833823fd5 72 OC_ADJ_SET_ADJUST_0_123=0x0180,
Yajirushi 0:72d833823fd5 73 OC_ADJ_SET_ADJUST_0_138=0x01C0,
Yajirushi 0:72d833823fd5 74 OC_ADJ_SET_ADJUST_0_155=0x0200,
Yajirushi 0:72d833823fd5 75 OC_ADJ_SET_ADJUST_0_175=0x0240,
Yajirushi 0:72d833823fd5 76 OC_ADJ_SET_ADJUST_0_197=0x0280,
Yajirushi 0:72d833823fd5 77 OC_ADJ_SET_ADJUST_0_222=0x02C0,
Yajirushi 0:72d833823fd5 78 OC_ADJ_SET_ADJUST_0_250=0x0300,
Yajirushi 0:72d833823fd5 79 OC_ADJ_SET_ADJUST_0_282=0x0340,
Yajirushi 0:72d833823fd5 80 OC_ADJ_SET_ADJUST_0_317=0x0380,
Yajirushi 0:72d833823fd5 81 OC_ADJ_SET_ADJUST_0_358=0x03C0,
Yajirushi 0:72d833823fd5 82 OC_ADJ_SET_ADJUST_0_403=0x0400,
Yajirushi 0:72d833823fd5 83 OC_ADJ_SET_ADJUST_0_454=0x0440,
Yajirushi 0:72d833823fd5 84 OC_ADJ_SET_ADJUST_0_511=0x0480,
Yajirushi 0:72d833823fd5 85 OC_ADJ_SET_ADJUST_0_576=0x04C0,
Yajirushi 0:72d833823fd5 86 OC_ADJ_SET_ADJUST_0_648=0x0500,
Yajirushi 0:72d833823fd5 87 OC_ADJ_SET_ADJUST_0_730=0x0540,
Yajirushi 0:72d833823fd5 88 OC_ADJ_SET_ADJUST_0_822=0x0580,
Yajirushi 0:72d833823fd5 89 OC_ADJ_SET_ADJUST_0_926=0x05C0,
Yajirushi 0:72d833823fd5 90 OC_ADJ_SET_ADJUST_1_043=0x0600,
Yajirushi 0:72d833823fd5 91 OC_ADJ_SET_ADJUST_1_175=0x0640,
Yajirushi 0:72d833823fd5 92 OC_ADJ_SET_ADJUST_1_324=0x0680,
Yajirushi 0:72d833823fd5 93 OC_ADJ_SET_ADJUST_1_491=0x06C0,
Yajirushi 0:72d833823fd5 94 OC_ADJ_SET_ADJUST_1_679=0x0700,
Yajirushi 0:72d833823fd5 95 OC_ADJ_SET_ADJUST_1_892=0x0740,
Yajirushi 0:72d833823fd5 96 OC_ADJ_SET_ADJUST_2_131=0x0780,
Yajirushi 0:72d833823fd5 97 OC_ADJ_SET_ADJUST_2_400=0x07C0
Yajirushi 0:72d833823fd5 98 };
Yajirushi 0:72d833823fd5 99 enum CTRL2_OCTW_MODE{
Yajirushi 0:72d833823fd5 100 OCTW_MODE_REPORT_OT_OC_BOTH = 0x0000,
Yajirushi 0:72d833823fd5 101 OCTW_MODE_REPORT_OVERTEMP_ONLY = 0x0001,
Yajirushi 0:72d833823fd5 102 OCTW_MODE_REPORT_OVERCURRENT_ONLY = 0x0002,
Yajirushi 0:72d833823fd5 103 OCTW_MODE_REPORT_RESERVED = 0x0003
Yajirushi 0:72d833823fd5 104 };
Yajirushi 0:72d833823fd5 105 enum CTRL2_SHUNTGAIN{
Yajirushi 0:72d833823fd5 106 SHUNTGAIN_GAIN_10V_PER_V = 0x0000,
Yajirushi 0:72d833823fd5 107 SHUNTGAIN_GAIN_20V_PER_V = 0x0004,
Yajirushi 0:72d833823fd5 108 SHUNTGAIN_GAIN_40V_PER_V = 0x0008,
Yajirushi 0:72d833823fd5 109 SHUNTGAIN_GAIN_80V_PER_V = 0x000C
Yajirushi 0:72d833823fd5 110 };
Yajirushi 0:72d833823fd5 111 enum CTRL2_DC_CAL_CH1{
Yajirushi 0:72d833823fd5 112 DC_CAL_CH1_ENABLE = 0x0000,
Yajirushi 0:72d833823fd5 113 DC_CAL_CH1_DISABLE = 0x0010
Yajirushi 0:72d833823fd5 114 };
Yajirushi 0:72d833823fd5 115 enum CTRL2_DC_CAL_CH2{
Yajirushi 0:72d833823fd5 116 DC_CAL_CH2_ENABLE = 0x0000,
Yajirushi 0:72d833823fd5 117 DC_CAL_CH2_DISABLE = 0x0020
Yajirushi 0:72d833823fd5 118 };
Yajirushi 0:72d833823fd5 119 enum CTRL2_OC_TOFF{
Yajirushi 0:72d833823fd5 120 OC_TOFF_CYCLE_BY_CYCLE = 0x0000,
Yajirushi 0:72d833823fd5 121 OC_TOFF_OFF_TIME_CONTROL = 0x0040
Yajirushi 0:72d833823fd5 122 };
Yajirushi 0:72d833823fd5 123
Yajirushi 0:72d833823fd5 124 //DRV8301 Control Class ========================================================
Yajirushi 0:72d833823fd5 125 class drv8301ctrl{
Yajirushi 0:72d833823fd5 126 public:
Yajirushi 0:72d833823fd5 127 //Constructor (Overload +3)
Yajirushi 0:72d833823fd5 128 drv8301ctrl(Serial *serial, SPI *spi, PinName csel, PinName en_gate);
Yajirushi 0:72d833823fd5 129 drv8301ctrl(Serial *serial, SPI *spi, DigitalOut *csel, DigitalOut *en_gate);
Yajirushi 0:72d833823fd5 130 drv8301ctrl(SPI *spi, PinName csel, PinName en_gate);
Yajirushi 0:72d833823fd5 131 drv8301ctrl(SPI *spi, DigitalOut *csel, DigitalOut *en_gate);
Yajirushi 0:72d833823fd5 132
Yajirushi 0:72d833823fd5 133 //Destructor
Yajirushi 0:72d833823fd5 134 ~drv8301ctrl();
Yajirushi 0:72d833823fd5 135
Yajirushi 0:72d833823fd5 136 private:
Yajirushi 0:72d833823fd5 137 Serial *pc;
Yajirushi 0:72d833823fd5 138 SPI *si;
Yajirushi 0:72d833823fd5 139 DigitalOut *cs, *gate;
Yajirushi 0:72d833823fd5 140
Yajirushi 0:72d833823fd5 141 bool hasSerial;
Yajirushi 0:72d833823fd5 142 unsigned short writeValue1, writeValue2;
Yajirushi 0:72d833823fd5 143 unsigned char devID;
Yajirushi 0:72d833823fd5 144
Yajirushi 0:72d833823fd5 145 //SPI read/write command
Yajirushi 0:72d833823fd5 146 int spi_cmd(int val, bool debug=true);
Yajirushi 0:72d833823fd5 147
Yajirushi 0:72d833823fd5 148 public:
Yajirushi 0:72d833823fd5 149
Yajirushi 0:72d833823fd5 150 //initialize:初期化
Yajirushi 0:72d833823fd5 151 void init(bool reset_iface=true);
Yajirushi 0:72d833823fd5 152
Yajirushi 0:72d833823fd5 153 //read status register1:(ステータスレジスタ1の読み取り)
Yajirushi 0:72d833823fd5 154 //FAULT, GVDD_UV, PVDD_UV, OTSD, OTW,
Yajirushi 0:72d833823fd5 155 //FETHA_OC, FETLA_OC, FETHB_OC, FETLB_OC, FETHC_OC, FETLC_OC
Yajirushi 0:72d833823fd5 156 unsigned short readStatus1();
Yajirushi 0:72d833823fd5 157
Yajirushi 0:72d833823fd5 158 //read status register2:(ステータスレジスタ2の読み取り)
Yajirushi 0:72d833823fd5 159 //GVDD_OV, DEVICE_ID
Yajirushi 0:72d833823fd5 160 unsigned short readStatus2();
Yajirushi 0:72d833823fd5 161
Yajirushi 0:72d833823fd5 162 //read status:FAULT
Yajirushi 0:72d833823fd5 163 bool readFault();
Yajirushi 0:72d833823fd5 164 //read status:GVDD_UV(GVDD under voltage)
Yajirushi 0:72d833823fd5 165 bool readGVDD_UV();
Yajirushi 0:72d833823fd5 166 //read status:PVDD_UV(PVDD under voltage)
Yajirushi 0:72d833823fd5 167 bool readPVDD_UV();
Yajirushi 0:72d833823fd5 168 //read status:OTSD(Over Temperature ShutDown: over 150 degree C)
Yajirushi 0:72d833823fd5 169 bool readOTSD();
Yajirushi 0:72d833823fd5 170 //read status:OTW(Over Temperature Warning: over 130 degree C)
Yajirushi 0:72d833823fd5 171 bool readOTW();
Yajirushi 0:72d833823fd5 172 //read status:FETHA_OC(MOSFET A High-Side Over Current: ref OC_ADJ)
Yajirushi 0:72d833823fd5 173 bool readFETHA_OC();
Yajirushi 0:72d833823fd5 174 //read status:FETLA_OC(MOSFET A Low-Side Over Current: ref OC_ADJ)
Yajirushi 0:72d833823fd5 175 bool readFETLA_OC();
Yajirushi 0:72d833823fd5 176 //read status:FETHB_OC(MOSFET B High-Side Over Current: ref OC_ADJ)
Yajirushi 0:72d833823fd5 177 bool readFETHB_OC();
Yajirushi 0:72d833823fd5 178 //read status:FETLB_OC(MOSFET B Low-Side Over Current: ref OC_ADJ)
Yajirushi 0:72d833823fd5 179 bool readFETLB_OC();
Yajirushi 0:72d833823fd5 180 //read status:FETHC_OC(MOSFET C High-Side Over Current: ref OC_ADJ)
Yajirushi 0:72d833823fd5 181 bool readFETHC_OC();
Yajirushi 0:72d833823fd5 182 //read status:FETLC_OC(MOSFET C Low-Side Over Current: ref OC_ADJ)
Yajirushi 0:72d833823fd5 183 bool readFETLC_OC();
Yajirushi 0:72d833823fd5 184 //read status:GVDD_OV(GVDD over voltage)
Yajirushi 0:72d833823fd5 185 bool readGVDD_OV();
Yajirushi 0:72d833823fd5 186 //read status:DEVICE_ID
Yajirushi 0:72d833823fd5 187 unsigned char readDEVICE_ID();
Yajirushi 0:72d833823fd5 188
Yajirushi 0:72d833823fd5 189 //read control register1:(コントロールレジスタ1の読み取り)
Yajirushi 0:72d833823fd5 190 //GATE_CURRENT, GATE_RESET, PWM_MODE, OCP_MODE, OC_ADJ_SET
Yajirushi 0:72d833823fd5 191 unsigned short readCtrl1();
Yajirushi 0:72d833823fd5 192
Yajirushi 0:72d833823fd5 193 //read control register2:(コントロールレジスタ2の読み取り)
Yajirushi 0:72d833823fd5 194 //OCTW_MODE, GAIN, DC_CAL_CH1, DC_CAL_CH2, OC_TOFF
Yajirushi 0:72d833823fd5 195 unsigned short readCtrl2();
Yajirushi 0:72d833823fd5 196
Yajirushi 0:72d833823fd5 197 //read settings:GATE_CURRENT(MOSFET Gate drive peak current)
Yajirushi 0:72d833823fd5 198 unsigned char readGATE_CURRENT(); //HexValue
Yajirushi 0:72d833823fd5 199 float readValGATE_CURRENT(); //RealValue
Yajirushi 0:72d833823fd5 200 //read settings:GATE_RESET(MOSFET Gate reset mode)
Yajirushi 0:72d833823fd5 201 bool readGATE_RESETisNormal();
Yajirushi 0:72d833823fd5 202 //read settings:PWM_MODE(6-pwm or 3-pwm)
Yajirushi 0:72d833823fd5 203 bool readPWM_MODEis6PWM();
Yajirushi 0:72d833823fd5 204 //read settings:OCP_MODE(Over Current Protection mode)
Yajirushi 0:72d833823fd5 205 unsigned char readOCP_MODE();
Yajirushi 0:72d833823fd5 206 //read settings:OC_ADJ_SET(Over Curent Adjust set)
Yajirushi 0:72d833823fd5 207 unsigned char readOC_ADJ_SET(); //HexValue
Yajirushi 0:72d833823fd5 208 float readValOC_ADJ_SET(); //RealValue
Yajirushi 0:72d833823fd5 209 //read settings:OCTW_MODE(Over Current and Temperature Warning mode)
Yajirushi 0:72d833823fd5 210 unsigned char readOCTW_MODE();
Yajirushi 0:72d833823fd5 211 //read settings:GAIN(Shunt amp gain)
Yajirushi 0:72d833823fd5 212 unsigned char readGAIN();
Yajirushi 0:72d833823fd5 213 //read settings:DC_CAL_CH1(Calibration Shunt amp CH-1)
Yajirushi 0:72d833823fd5 214 bool readDC_CAL_CH1isEnabled();
Yajirushi 0:72d833823fd5 215 //read settings:DC_CAL_CH2(Calibration Shunt amp CH-2)
Yajirushi 0:72d833823fd5 216 bool readDC_CAL_CH2isEnabled();
Yajirushi 0:72d833823fd5 217 //read settings:OC_TOFF(Over Current MOSFET gate off mode)
Yajirushi 0:72d833823fd5 218 bool readOC_TOFFisCycleByCycle();
Yajirushi 0:72d833823fd5 219
Yajirushi 0:72d833823fd5 220 //write control register1:(コントロールレジスタ1へ書き込み)
Yajirushi 0:72d833823fd5 221 bool writeCtrl1(unsigned short val=0xffff);
Yajirushi 0:72d833823fd5 222
Yajirushi 0:72d833823fd5 223 //write control register2:(コントロールレジスタ2へ書き込み)
Yajirushi 0:72d833823fd5 224 bool writeCtrl2(unsigned short val=0xffff);
Yajirushi 0:72d833823fd5 225
Yajirushi 0:72d833823fd5 226 //writeValue clear:(内部に保持しているレジスタの仮の値を消去)
Yajirushi 0:72d833823fd5 227 void resetWriteValue1();
Yajirushi 0:72d833823fd5 228 void resetWriteValue2();
Yajirushi 0:72d833823fd5 229
Yajirushi 0:72d833823fd5 230 //writeValue direct update:(内部に保持しているレジスタの仮の値を更新)
Yajirushi 0:72d833823fd5 231 void updateWriteValue1(unsigned short val);
Yajirushi 0:72d833823fd5 232 void updateWriteValue2(unsigned short val);
Yajirushi 0:72d833823fd5 233
Yajirushi 0:72d833823fd5 234 //set value:GATE_CURRENT(MOSFET Gate drive peak current)
Yajirushi 0:72d833823fd5 235 void setGATE_CURRENT(unsigned char hexVal);
Yajirushi 0:72d833823fd5 236 void setGATE_CURRENT(float realVal);
Yajirushi 0:72d833823fd5 237 //set value:GATE_RESET(MOSFET Gate reset mode)
Yajirushi 0:72d833823fd5 238 void setGATE_RESET(bool isNormal);
Yajirushi 0:72d833823fd5 239 //set value:PWM_MODE(6-pwm or 3-pwm)
Yajirushi 0:72d833823fd5 240 void setPWM_MODE(bool is6PWM);
Yajirushi 0:72d833823fd5 241 //set value:OCP_MODE(Over Current Protection mode)
Yajirushi 0:72d833823fd5 242 void setOCP_MODE(unsigned char val);
Yajirushi 0:72d833823fd5 243 //set value:OC_ADJ_SET(Over Curent Adjust set)
Yajirushi 0:72d833823fd5 244 void setOC_ADJ(unsigned char hexVal);
Yajirushi 0:72d833823fd5 245 void setOC_ADJ(float realVal);
Yajirushi 0:72d833823fd5 246 //set value:OCTW_MODE(Over Current and Temperature Warning mode)
Yajirushi 0:72d833823fd5 247 void setOCTW_MODE(unsigned char val);
Yajirushi 0:72d833823fd5 248 //set value:GAIN(Shunt amp gain)
Yajirushi 0:72d833823fd5 249 void setGAIN(unsigned char val);
Yajirushi 0:72d833823fd5 250 //set value:DC_CAL_CH1(Calibration Shunt amp CH-1)
Yajirushi 0:72d833823fd5 251 void setDC_CAL_CH1_Enabled(bool enable);
Yajirushi 0:72d833823fd5 252 //set value:DC_CAL_CH2(Calibration Shunt amp CH-2)
Yajirushi 0:72d833823fd5 253 void setDC_CAL_CH2_Enabled(bool enable);
Yajirushi 0:72d833823fd5 254 //set value:OC_TOFF(Over Current MOSFET gate off mode)
Yajirushi 0:72d833823fd5 255 void setOC_TOFF_CycleByCycle(bool enable);
Yajirushi 0:72d833823fd5 256
Yajirushi 0:72d833823fd5 257 //EN_GATE on,off:(EN_GATEピンの状態セット)
Yajirushi 0:72d833823fd5 258 void gateEnable();
Yajirushi 0:72d833823fd5 259 void gateDisable();
Yajirushi 0:72d833823fd5 260 void gateReset();
Yajirushi 0:72d833823fd5 261 };
Yajirushi 0:72d833823fd5 262
Yajirushi 0:72d833823fd5 263 #endif