retrying spi on frdm (with interrupts)

Dependencies:   mbed

main.cpp

Committer:
armdran
Date:
2015-04-07
Revision:
1:2ba1eb5da872
Parent:
0:c7c985b76b04

File content as of revision 1:2ba1eb5da872:

#include "mbed.h"

//SPI Master

Serial pc(USBTX, USBRX);
SPI spi(D11, D12, D13); // mosi, miso, sclk
DigitalOut cs(D10);
InterruptIn ir(D9);

uint8_t spi_write(uint8_t write = 0xFF) {
    cs = 0;
    uint8_t response = spi.write(write);
    cs = 1;
    //printf("    sent: %x; received: %x\r\n", write, response);
    return response;
}

void keyboardEvent() {
    printf("ir received.\r\n"); 
        
    uint8_t keystroke = spi_write(0xFE);
    printf("    key %x received.\r\n", keystroke); 
    
    uint8_t modifier  = spi_write(keystroke);
    printf("    mod %x received.\r\n", modifier); 
    
    uint8_t dummy = spi_write(modifier);
    printf("    got dummy %x. done.\r\n", dummy);
}

int main() {
    printf("init\r\n"); 
    spi.format(8,1); 
    spi.frequency(1000000);
    
    ir.rise(&keyboardEvent);
    while(1) { }
}