Simple mbed OS 5 test application for X-NUCLEO-OUT01A1 Industrial Digital output expansion board.
Dependencies: X_NUCLEO_OUT1A1
main.cpp@0:d4d48da1e5d2, 2018-02-12 (annotated)
- Committer:
- nikapov
- Date:
- Mon Feb 12 17:24:47 2018 +0000
- Revision:
- 0:d4d48da1e5d2
Initial revision.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nikapov | 0:d4d48da1e5d2 | 1 | |
nikapov | 0:d4d48da1e5d2 | 2 | #include "XNucleoOUT01A1.h" |
nikapov | 0:d4d48da1e5d2 | 3 | |
nikapov | 0:d4d48da1e5d2 | 4 | XNucleoOUT01A1 *out01a1; |
nikapov | 0:d4d48da1e5d2 | 5 | DigitalOut led1(LED1); |
nikapov | 0:d4d48da1e5d2 | 6 | |
nikapov | 0:d4d48da1e5d2 | 7 | // main() runs in its own thread in the OS |
nikapov | 0:d4d48da1e5d2 | 8 | int main() { |
nikapov | 0:d4d48da1e5d2 | 9 | |
nikapov | 0:d4d48da1e5d2 | 10 | printf("X-NUCLEO-OUT01A1 simple test application\n\r"); |
nikapov | 0:d4d48da1e5d2 | 11 | |
nikapov | 0:d4d48da1e5d2 | 12 | |
nikapov | 0:d4d48da1e5d2 | 13 | |
nikapov | 0:d4d48da1e5d2 | 14 | /* Default Nucleos pinout, change accordingly on other platforms */ |
nikapov | 0:d4d48da1e5d2 | 15 | out01a1 = new XNucleoOUT01A1(mode_direct, NC, A3, A4, A5, A0, A1, NC, A2, |
nikapov | 0:d4d48da1e5d2 | 16 | D5, D4, D14, D15); |
nikapov | 0:d4d48da1e5d2 | 17 | out01a1->enable_outputs(true); |
nikapov | 0:d4d48da1e5d2 | 18 | |
nikapov | 0:d4d48da1e5d2 | 19 | printf("\n\rSetting all channels on\r\n"); |
nikapov | 0:d4d48da1e5d2 | 20 | |
nikapov | 0:d4d48da1e5d2 | 21 | out01a1->set_inputs(0xFF); |
nikapov | 0:d4d48da1e5d2 | 22 | |
nikapov | 0:d4d48da1e5d2 | 23 | wait(3); |
nikapov | 0:d4d48da1e5d2 | 24 | |
nikapov | 0:d4d48da1e5d2 | 25 | out01a1->set_inputs(0x00); |
nikapov | 0:d4d48da1e5d2 | 26 | |
nikapov | 0:d4d48da1e5d2 | 27 | printf("\n\rIterating through channels in direct mode\r\n"); |
nikapov | 0:d4d48da1e5d2 | 28 | |
nikapov | 0:d4d48da1e5d2 | 29 | for (int i=1; i<=8; i++) { |
nikapov | 0:d4d48da1e5d2 | 30 | |
nikapov | 0:d4d48da1e5d2 | 31 | uint8_t input_mask = 0x1 << (i-1); |
nikapov | 0:d4d48da1e5d2 | 32 | out01a1->set_inputs(input_mask); |
nikapov | 0:d4d48da1e5d2 | 33 | |
nikapov | 0:d4d48da1e5d2 | 34 | if (i == 3) { |
nikapov | 0:d4d48da1e5d2 | 35 | printf ("Input 3 not connected\n\r"); // pin3 not connected on Nucleo boards |
nikapov | 0:d4d48da1e5d2 | 36 | } else { |
nikapov | 0:d4d48da1e5d2 | 37 | printf("Output %d set \n\r", i); |
nikapov | 0:d4d48da1e5d2 | 38 | } |
nikapov | 0:d4d48da1e5d2 | 39 | |
nikapov | 0:d4d48da1e5d2 | 40 | wait(1); |
nikapov | 0:d4d48da1e5d2 | 41 | } |
nikapov | 0:d4d48da1e5d2 | 42 | |
nikapov | 0:d4d48da1e5d2 | 43 | out01a1->set_inputs(0x00); |
nikapov | 0:d4d48da1e5d2 | 44 | |
nikapov | 0:d4d48da1e5d2 | 45 | out01a1->enable_outputs(false); |
nikapov | 0:d4d48da1e5d2 | 46 | |
nikapov | 0:d4d48da1e5d2 | 47 | delete out01a1; |
nikapov | 0:d4d48da1e5d2 | 48 | |
nikapov | 0:d4d48da1e5d2 | 49 | wait(1); |
nikapov | 0:d4d48da1e5d2 | 50 | |
nikapov | 0:d4d48da1e5d2 | 51 | printf("\n\rNow iterating through channels in sync mode\r\n"); |
nikapov | 0:d4d48da1e5d2 | 52 | |
nikapov | 0:d4d48da1e5d2 | 53 | /* Default Nucleos pinout, change accordingly on other platforms */ |
nikapov | 0:d4d48da1e5d2 | 54 | out01a1 = new XNucleoOUT01A1(mode_sync); |
nikapov | 0:d4d48da1e5d2 | 55 | out01a1->enable_outputs(true); |
nikapov | 0:d4d48da1e5d2 | 56 | |
nikapov | 0:d4d48da1e5d2 | 57 | for (int i=1; i<=8; i++) { |
nikapov | 0:d4d48da1e5d2 | 58 | |
nikapov | 0:d4d48da1e5d2 | 59 | uint8_t input_mask = 0x1 << (i-1); |
nikapov | 0:d4d48da1e5d2 | 60 | out01a1->set_inputs(input_mask); |
nikapov | 0:d4d48da1e5d2 | 61 | out01a1->update_outputs(); |
nikapov | 0:d4d48da1e5d2 | 62 | |
nikapov | 0:d4d48da1e5d2 | 63 | if (i == 3) { |
nikapov | 0:d4d48da1e5d2 | 64 | printf ("Input 3 not connected\n\r"); // pin3 not connected on Nucleo boards |
nikapov | 0:d4d48da1e5d2 | 65 | } else { |
nikapov | 0:d4d48da1e5d2 | 66 | printf("Output %d set \n\r", i); |
nikapov | 0:d4d48da1e5d2 | 67 | } |
nikapov | 0:d4d48da1e5d2 | 68 | |
nikapov | 0:d4d48da1e5d2 | 69 | wait(1); |
nikapov | 0:d4d48da1e5d2 | 70 | } |
nikapov | 0:d4d48da1e5d2 | 71 | |
nikapov | 0:d4d48da1e5d2 | 72 | out01a1->enable_outputs(false); |
nikapov | 0:d4d48da1e5d2 | 73 | |
nikapov | 0:d4d48da1e5d2 | 74 | printf("\n\rTest completed, now blinking the LED!!\n\r"); |
nikapov | 0:d4d48da1e5d2 | 75 | |
nikapov | 0:d4d48da1e5d2 | 76 | while (true) { |
nikapov | 0:d4d48da1e5d2 | 77 | led1 = !led1; |
nikapov | 0:d4d48da1e5d2 | 78 | wait(0.5); |
nikapov | 0:d4d48da1e5d2 | 79 | } |
nikapov | 0:d4d48da1e5d2 | 80 | } |
nikapov | 0:d4d48da1e5d2 | 81 |