新型モータードライバのメインプログラム
Dependencies: mbed
Diff: main.cpp
- Revision:
- 0:cf3829614495
- Child:
- 1:e45830806a1c
diff -r 000000000000 -r cf3829614495 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed May 11 07:31:23 2016 +0000 @@ -0,0 +1,65 @@ +#include "mbed.h" + +#define F_MD 18000 //PWMキャリア周波数設定 + +/* + * High_A High_B + * ┃ ┃ + * ┃ ┃ + * ┣━━━┫ + * ┃ ┃ + * ┃ ┃ + * Low_A Low_B + */ + +//Serial pc(USBTX, USBRX); +Serial comPort(dp16, dp15); +//DigitalOut myled1(LED1); //汎用IOで使用するためLED1は使用できない +DigitalOut myled(dp24); +DigitalOut driverEnable(dp28); +//dp1 = ローサイドPWM1, dp2 = ローサイドPWM2 +//dp5 = ハイサイドPWM1, dp27 = ハイサイドPWM2 (オープンドレイン) +PwmOut Low_A(dp1); +PwmOut Low_B(dp2); +DigitalOut High_A(dp5); +DigitalOut High_B(dp27); + +AnalogIn ain(dp4); +BusInOut led7(dp6, dp9, dp10, dp11, dp13, dp14, dp17, dp18); + +void com_rx() { + /*switch (comPort.getc()) { + case 255 + + }*/ +} + +int main() { + //comPort.baud(9600); + //comPort.format(8, Serial::None, 1); + comPort.attach(&com_rx, Serial::RxIrq); + + int FP_MD = 1000000 / F_MD; //PWM一周期の周期(マイクロ秒) + + led7.output(); + + High_A = 0; + High_B = 1; + + Low_A.period_us(FP_MD); + Low_A.write(0); + Low_B.period_us(FP_MD); + Low_B.write(0); + //初期設定完了 + + //flipper.attach(&flip, 2.0); + //flipper.attach(&flip, 2.0); + //myled1 = 1; + led7 = 0b11011010; + driverEnable = 1; + while (1) { + Low_A.write((ain.read() - 0.2) * 1.25 < 0 ? 0 : (ain.read() - 0.2) * 1.25); + //pc.printf("%f\n", (ain.read() - 0.2) * 1.25 < 0 ? 0 : (ain.read() - 0.2) * 1.25); + comPort.printf("%d", 0b01010101); + } +}