Dmytro Sakharov / Mbed 2 deprecated step_motor_basics

Dependencies:   mbed

Committer:
dmitrikk
Date:
Sun Feb 24 14:45:11 2019 +0000
Revision:
0:be820a78e765
Child:
1:9238a880f605
Initial;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dmitrikk 0:be820a78e765 1 #include "mbed.h"
dmitrikk 0:be820a78e765 2 Timer timer;
dmitrikk 0:be820a78e765 3 Serial uart(SERIAL_TX, SERIAL_RX);
dmitrikk 0:be820a78e765 4
dmitrikk 0:be820a78e765 5 DigitalOut COIL0(PA_5);
dmitrikk 0:be820a78e765 6 DigitalOut COIL1(PA_6);
dmitrikk 0:be820a78e765 7 DigitalOut COIL2(PA_7);
dmitrikk 0:be820a78e765 8 DigitalOut COIL3(PA_9);
dmitrikk 0:be820a78e765 9
dmitrikk 0:be820a78e765 10 uint8_t input_val;
dmitrikk 0:be820a78e765 11 volatile int32_t del_val = 2200;//us
dmitrikk 0:be820a78e765 12
dmitrikk 0:be820a78e765 13 void uart_callback() {
dmitrikk 0:be820a78e765 14 // Note: you need to actually read from the serial to clear the RX interrupt
dmitrikk 0:be820a78e765 15 input_val = uart.getc();
dmitrikk 0:be820a78e765 16
dmitrikk 0:be820a78e765 17 if (input_val == 'w')
dmitrikk 0:be820a78e765 18 {
dmitrikk 0:be820a78e765 19 //increase time
dmitrikk 0:be820a78e765 20 del_val -= 500;
dmitrikk 0:be820a78e765 21 del_val = del_val < 2200 ? 2200 : del_val;
dmitrikk 0:be820a78e765 22 }
dmitrikk 0:be820a78e765 23
dmitrikk 0:be820a78e765 24 else if (input_val == 's')
dmitrikk 0:be820a78e765 25 {
dmitrikk 0:be820a78e765 26 del_val += 500;
dmitrikk 0:be820a78e765 27 del_val = del_val > 8000 ? 8000 : del_val;
dmitrikk 0:be820a78e765 28 }
dmitrikk 0:be820a78e765 29
dmitrikk 0:be820a78e765 30 uart.printf("\r\nDelay between coil toggling is: %d microseconds", del_val);
dmitrikk 0:be820a78e765 31
dmitrikk 0:be820a78e765 32 }
dmitrikk 0:be820a78e765 33
dmitrikk 0:be820a78e765 34 void delay()
dmitrikk 0:be820a78e765 35 {
dmitrikk 0:be820a78e765 36 timer.start();//start timer
dmitrikk 0:be820a78e765 37 while (timer.read_us() < del_val);//and polling it to del_val time
dmitrikk 0:be820a78e765 38 timer.stop();
dmitrikk 0:be820a78e765 39 timer.reset();
dmitrikk 0:be820a78e765 40 }
dmitrikk 0:be820a78e765 41
dmitrikk 0:be820a78e765 42 void rotate()
dmitrikk 0:be820a78e765 43 {
dmitrikk 0:be820a78e765 44 COIL0 = 1;
dmitrikk 0:be820a78e765 45 delay();
dmitrikk 0:be820a78e765 46 COIL0 = 0;
dmitrikk 0:be820a78e765 47
dmitrikk 0:be820a78e765 48 COIL1 = 1;
dmitrikk 0:be820a78e765 49 delay();
dmitrikk 0:be820a78e765 50 COIL1 = 0;
dmitrikk 0:be820a78e765 51
dmitrikk 0:be820a78e765 52 COIL2 = 1;
dmitrikk 0:be820a78e765 53 delay();
dmitrikk 0:be820a78e765 54 COIL2 = 0;
dmitrikk 0:be820a78e765 55
dmitrikk 0:be820a78e765 56 COIL3 = 1;
dmitrikk 0:be820a78e765 57 delay();
dmitrikk 0:be820a78e765 58 COIL3 = 0;
dmitrikk 0:be820a78e765 59
dmitrikk 0:be820a78e765 60 }
dmitrikk 0:be820a78e765 61
dmitrikk 0:be820a78e765 62 int main()
dmitrikk 0:be820a78e765 63 {
dmitrikk 0:be820a78e765 64 uart.baud(9600);
dmitrikk 0:be820a78e765 65 uart.printf("\r\nStarted!");
dmitrikk 0:be820a78e765 66 uart.attach(&uart_callback, Serial::RxIrq);//rx interrupt subscription
dmitrikk 0:be820a78e765 67 while(1)
dmitrikk 0:be820a78e765 68 {
dmitrikk 0:be820a78e765 69 rotate();
dmitrikk 0:be820a78e765 70 }
dmitrikk 0:be820a78e765 71 }
dmitrikk 0:be820a78e765 72