Simple mbed OS 5 test application for X-NUCLEO-OUT01A1 Industrial Digital output expansion board.

Dependencies:   X_NUCLEO_OUT1A1

Committer:
nikapov
Date:
Mon Feb 12 17:24:47 2018 +0000
Revision:
0:d4d48da1e5d2
Initial revision.

Who changed what in which revision?

UserRevisionLine numberNew 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