Revision 727
encoders work
branches/encoders/code/projects/libdragonfly/spi.c | ||
---|---|---|
28 | 28 |
|
29 | 29 |
RING_BUFFER_NEW(spi_buffer, 16, char, spi_send_buff, spi_rec_buff); |
30 | 30 |
volatile char spi_status; |
31 |
char spi_mode; |
|
31 |
volatile char spi_mode;
|
|
32 | 32 |
static spi_fun_recv_t spi_recv_function; |
33 | 33 |
//static spi_fun_send_t spi_send_function; |
34 | 34 |
static volatile uint16_t i; |
... | ... | |
65 | 65 |
} |
66 | 66 |
|
67 | 67 |
ISR(SIG_SPI) { |
68 |
// usb_puts("ISR: start\n\r");
|
|
68 |
//usb_puts("ISR: start\n\r");
|
|
69 | 69 |
//char c=SPDR; |
70 | 70 |
//PORTB |= SS; |
71 |
if(spi_mode == FIRST_BYTE){ |
|
71 |
usb_puts("spi_mode is: "); usb_puti(spi_mode);usb_puts("\r\n"); |
|
72 |
if(spi_mode < 4){ |
|
73 |
i=0; |
|
72 | 74 |
i = (uint16_t)SPDR; |
73 | 75 |
spi_recv_function(SPDR); |
74 |
spi_mode = SECOND_BYTE;
|
|
75 |
SPDR = 'c';
|
|
76 |
SPDR = 'c';
|
|
76 |
SPDR = 0xff;
|
|
77 |
spi_mode++;
|
|
78 |
//usb_puts("done\n\r");
|
|
77 | 79 |
} else { |
78 |
usb_puts("second byte\r\n"); |
|
79 |
i = (uint16_t)SPDR << 8; |
|
80 |
spi_mode = 4; |
|
80 |
spi_recv_function(SPDR); |
|
81 |
//usb_puts("second byte\r\n"); |
|
82 |
i |= (uint16_t)SPDR << 8; |
|
83 |
spi_mode = 1; |
|
81 | 84 |
PORTB |= SS; |
85 |
usb_puts("\r\n"); |
|
82 | 86 |
} |
83 | 87 |
|
84 | 88 |
//usb_puts("ISR: end\n"); |
Also available in: Unified diff