retrying spi on frdm (with interrupts)
Dependencies: mbed
main.cpp@1:2ba1eb5da872, 2015-04-07 (annotated)
- Committer:
- armdran
- Date:
- Tue Apr 07 15:32:42 2015 +0000
- Revision:
- 1:2ba1eb5da872
- Parent:
- 0:c7c985b76b04
added modifier in protocol stack (should work with usb host)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
armdran | 0:c7c985b76b04 | 1 | #include "mbed.h" |
armdran | 0:c7c985b76b04 | 2 | |
armdran | 0:c7c985b76b04 | 3 | //SPI Master |
armdran | 0:c7c985b76b04 | 4 | |
armdran | 0:c7c985b76b04 | 5 | Serial pc(USBTX, USBRX); |
armdran | 0:c7c985b76b04 | 6 | SPI spi(D11, D12, D13); // mosi, miso, sclk |
armdran | 0:c7c985b76b04 | 7 | DigitalOut cs(D10); |
armdran | 0:c7c985b76b04 | 8 | InterruptIn ir(D9); |
armdran | 0:c7c985b76b04 | 9 | |
armdran | 0:c7c985b76b04 | 10 | uint8_t spi_write(uint8_t write = 0xFF) { |
armdran | 0:c7c985b76b04 | 11 | cs = 0; |
armdran | 0:c7c985b76b04 | 12 | uint8_t response = spi.write(write); |
armdran | 0:c7c985b76b04 | 13 | cs = 1; |
armdran | 1:2ba1eb5da872 | 14 | //printf(" sent: %x; received: %x\r\n", write, response); |
armdran | 0:c7c985b76b04 | 15 | return response; |
armdran | 0:c7c985b76b04 | 16 | } |
armdran | 0:c7c985b76b04 | 17 | |
armdran | 0:c7c985b76b04 | 18 | void keyboardEvent() { |
armdran | 1:2ba1eb5da872 | 19 | printf("ir received.\r\n"); |
armdran | 1:2ba1eb5da872 | 20 | |
armdran | 1:2ba1eb5da872 | 21 | uint8_t keystroke = spi_write(0xFE); |
armdran | 1:2ba1eb5da872 | 22 | printf(" key %x received.\r\n", keystroke); |
armdran | 0:c7c985b76b04 | 23 | |
armdran | 1:2ba1eb5da872 | 24 | uint8_t modifier = spi_write(keystroke); |
armdran | 1:2ba1eb5da872 | 25 | printf(" mod %x received.\r\n", modifier); |
armdran | 0:c7c985b76b04 | 26 | |
armdran | 1:2ba1eb5da872 | 27 | uint8_t dummy = spi_write(modifier); |
armdran | 1:2ba1eb5da872 | 28 | printf(" got dummy %x. done.\r\n", dummy); |
armdran | 0:c7c985b76b04 | 29 | } |
armdran | 0:c7c985b76b04 | 30 | |
armdran | 0:c7c985b76b04 | 31 | int main() { |
armdran | 0:c7c985b76b04 | 32 | printf("init\r\n"); |
armdran | 0:c7c985b76b04 | 33 | spi.format(8,1); |
armdran | 0:c7c985b76b04 | 34 | spi.frequency(1000000); |
armdran | 1:2ba1eb5da872 | 35 | |
armdran | 0:c7c985b76b04 | 36 | ir.rise(&keyboardEvent); |
armdran | 0:c7c985b76b04 | 37 | while(1) { } |
armdran | 0:c7c985b76b04 | 38 | } |