SPI Master Test
Dependencies: mbed-rtos mbed st7565LCD
main.cpp@1:74e13cd94576, 2016-09-29 (annotated)
- Committer:
- ryood
- Date:
- Thu Sep 29 07:41:01 2016 +0000
- Revision:
- 1:74e13cd94576
- Parent:
- 0:36cebc939c49
- Child:
- 2:95204570426c
Impl. InterruptIn
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ryood | 0:36cebc939c49 | 1 | #include "mbed.h" |
ryood | 0:36cebc939c49 | 2 | #include "rtos.h" |
ryood | 0:36cebc939c49 | 3 | |
ryood | 0:36cebc939c49 | 4 | #define SPI_SPEED (10000000) |
ryood | 0:36cebc939c49 | 5 | |
ryood | 0:36cebc939c49 | 6 | BusOut Leds(PA_8, PB_10, PB_4, PB_5); |
ryood | 0:36cebc939c49 | 7 | BusIn Switches(PA_0, PA_1, PA_4, PB_0, PC_1, PC_0); |
ryood | 0:36cebc939c49 | 8 | |
ryood | 0:36cebc939c49 | 9 | SPI SpiM(PA_7, PA_6, PA_5); // mosi, miso, sclk |
ryood | 0:36cebc939c49 | 10 | DigitalOut SpiMCs(PB_6); |
ryood | 0:36cebc939c49 | 11 | |
ryood | 1:74e13cd94576 | 12 | InterruptIn stepChangeInterrupt(PC_7); |
ryood | 1:74e13cd94576 | 13 | //DigitalOut myled(PA_10); |
ryood | 1:74e13cd94576 | 14 | |
ryood | 1:74e13cd94576 | 15 | volatile bool isStepChanged = false; |
ryood | 0:36cebc939c49 | 16 | uint8_t prevSendVal = 0x00; |
ryood | 0:36cebc939c49 | 17 | |
ryood | 1:74e13cd94576 | 18 | //float delay = 1.0f; |
ryood | 1:74e13cd94576 | 19 | |
ryood | 1:74e13cd94576 | 20 | void setChangeStep() |
ryood | 1:74e13cd94576 | 21 | { |
ryood | 1:74e13cd94576 | 22 | isStepChanged = true; |
ryood | 1:74e13cd94576 | 23 | /* |
ryood | 1:74e13cd94576 | 24 | static uint8_t f = 0x0f; |
ryood | 1:74e13cd94576 | 25 | |
ryood | 1:74e13cd94576 | 26 | Leds.write(f); |
ryood | 1:74e13cd94576 | 27 | f = ~f & 0x0f; |
ryood | 1:74e13cd94576 | 28 | */ |
ryood | 1:74e13cd94576 | 29 | /* |
ryood | 1:74e13cd94576 | 30 | if (delay == 1.0) |
ryood | 1:74e13cd94576 | 31 | delay = 0.2; // 200 ms |
ryood | 1:74e13cd94576 | 32 | else |
ryood | 1:74e13cd94576 | 33 | delay = 1.0; // 1 sec |
ryood | 1:74e13cd94576 | 34 | */ |
ryood | 1:74e13cd94576 | 35 | } |
ryood | 1:74e13cd94576 | 36 | |
ryood | 0:36cebc939c49 | 37 | int main() |
ryood | 0:36cebc939c49 | 38 | { |
ryood | 0:36cebc939c49 | 39 | printf("\r\n\nNucleo rtos SPI Master Test..\r\n"); |
ryood | 0:36cebc939c49 | 40 | |
ryood | 0:36cebc939c49 | 41 | // LED Check |
ryood | 0:36cebc939c49 | 42 | for (int i = 0; i < 5; i++) { |
ryood | 0:36cebc939c49 | 43 | Leds.write(0x0f); |
ryood | 0:36cebc939c49 | 44 | Thread::wait(100); |
ryood | 0:36cebc939c49 | 45 | Leds.write(0x00); |
ryood | 0:36cebc939c49 | 46 | Thread::wait(100); |
ryood | 0:36cebc939c49 | 47 | } |
ryood | 0:36cebc939c49 | 48 | |
ryood | 0:36cebc939c49 | 49 | // Setup Switches |
ryood | 0:36cebc939c49 | 50 | Switches.mode(PullUp); |
ryood | 0:36cebc939c49 | 51 | /* |
ryood | 0:36cebc939c49 | 52 | while(1) { |
ryood | 0:36cebc939c49 | 53 | printf("%x\r\n", ~Switches.read() &0x3f); |
ryood | 0:36cebc939c49 | 54 | Thread::wait(100); |
ryood | 0:36cebc939c49 | 55 | } |
ryood | 0:36cebc939c49 | 56 | */ |
ryood | 0:36cebc939c49 | 57 | |
ryood | 1:74e13cd94576 | 58 | // Setup Interrupt |
ryood | 1:74e13cd94576 | 59 | stepChangeInterrupt.fall(&setChangeStep); |
ryood | 1:74e13cd94576 | 60 | |
ryood | 0:36cebc939c49 | 61 | // Setup SPI |
ryood | 0:36cebc939c49 | 62 | SpiMCs = 1; |
ryood | 0:36cebc939c49 | 63 | SpiM.format(8, 0); |
ryood | 0:36cebc939c49 | 64 | SpiM.frequency(SPI_SPEED); |
ryood | 0:36cebc939c49 | 65 | |
ryood | 0:36cebc939c49 | 66 | for (;;) { |
ryood | 0:36cebc939c49 | 67 | uint8_t sendVal = ~Switches.read(); |
ryood | 1:74e13cd94576 | 68 | static uint8_t receivedVal; |
ryood | 0:36cebc939c49 | 69 | |
ryood | 1:74e13cd94576 | 70 | //if (prevSendVal != sendVal) { |
ryood | 0:36cebc939c49 | 71 | SpiMCs = 0; |
ryood | 1:74e13cd94576 | 72 | receivedVal = SpiM.write(sendVal); |
ryood | 0:36cebc939c49 | 73 | SpiMCs = 1; |
ryood | 0:36cebc939c49 | 74 | |
ryood | 0:36cebc939c49 | 75 | prevSendVal = sendVal; |
ryood | 1:74e13cd94576 | 76 | //} |
ryood | 1:74e13cd94576 | 77 | |
ryood | 1:74e13cd94576 | 78 | if (isStepChanged) { |
ryood | 0:36cebc939c49 | 79 | Leds.write(receivedVal & 0x0f); |
ryood | 1:74e13cd94576 | 80 | isStepChanged = false; |
ryood | 0:36cebc939c49 | 81 | } |
ryood | 0:36cebc939c49 | 82 | } |
ryood | 0:36cebc939c49 | 83 | } |