retrying spi on frdm (with interrupts)

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 
00003 //SPI Master
00004 
00005 Serial pc(USBTX, USBRX);
00006 SPI spi(D11, D12, D13); // mosi, miso, sclk
00007 DigitalOut cs(D10);
00008 InterruptIn ir(D9);
00009 
00010 uint8_t spi_write(uint8_t write = 0xFF) {
00011     cs = 0;
00012     uint8_t response = spi.write(write);
00013     cs = 1;
00014     //printf("    sent: %x; received: %x\r\n", write, response);
00015     return response;
00016 }
00017 
00018 void keyboardEvent() {
00019     printf("ir received.\r\n"); 
00020         
00021     uint8_t keystroke = spi_write(0xFE);
00022     printf("    key %x received.\r\n", keystroke); 
00023     
00024     uint8_t modifier  = spi_write(keystroke);
00025     printf("    mod %x received.\r\n", modifier); 
00026     
00027     uint8_t dummy = spi_write(modifier);
00028     printf("    got dummy %x. done.\r\n", dummy);
00029 }
00030 
00031 int main() {
00032     printf("init\r\n"); 
00033     spi.format(8,1); 
00034     spi.frequency(1000000);
00035     
00036     ir.rise(&keyboardEvent);
00037     while(1) { }
00038 }