Project

General

Profile

Revision 727

Added by Ben Poole almost 16 years ago

encoders work

View differences:

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