aboutsummaryrefslogtreecommitdiffstats
path: root/fw/spi.c
blob: 33f0b6367d3f5d462d37b56a3c1ce8ea889c4fdb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <xc.h>

#include <stdint.h>

#include "system.h"
#include "types.h"

#include "spi.h"

void
spiInit(void) {
	U8 junk;

	TRISB4 = IN; // SDI
	TRISC7 = OUT; // SDO
	TRISB6 = OUT; // SCK

	SSPSTAT = 0x40; // CKE=1
	SSPCON1 = 0x21; // FOSC/16 => 3MHz SPI clock
	junk = SSPBUF; // dummy read to clear BF
	(void)junk;
}

U8
spiTx(U8 c) {
	SSPBUF = c;
	while (!SSPSTATbits.BF) {}
	return SSPBUF;
}