Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:be820a78e765, 2019-02-24 (annotated)
- Committer:
- dmitrikk
- Date:
- Sun Feb 24 14:45:11 2019 +0000
- Revision:
- 0:be820a78e765
- Child:
- 1:9238a880f605
Initial;
Who changed what in which revision?
| User | Revision | Line number | New 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 |