diff options
Diffstat (limited to 'fw/spi.c')
| -rw-r--r-- | fw/spi.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/fw/spi.c b/fw/spi.c new file mode 100644 index 0000000..1793c4d --- /dev/null +++ b/fw/spi.c @@ -0,0 +1,30 @@ +#include <xc.h> + +#include <stdint.h> + +#include "sys.h" +#include "types.h" + +#include "spi.h" + +void +spiInit(void) { + U8 junk; + + TRISBbits.TRISB4 = IN; // SDI + TRISCbits.TRISC7 = OUT; // SDO + TRISBbits.TRISB6 = OUT; // SCK + + SSPSTAT = 0x00; + SSPCON1 = 0x01; // FOSC/16 => 3MHz SPI clock + SSPCON1bits.SSPEN = 1; // enable + junk = SSPBUF; // dummy read to clear BF + (void)junk; +} + +U8 +spiTx(U8 c) { + SSPBUF = c; + while (!SSPSTATbits.BF) {} + return SSPBUF; +} |