50,16 → 50,17 |
//sei(); // we do it later |
} |
|
|
/** |
* SPI interrupt handler |
*/ |
ISR(SPI_STC_vect) { |
if (request_count == 0) { |
SPI_buffer.buffer.chk = SPDR; // firs char received is check byte from last transfer |
} else { |
SPI_buffer.buffer.c[request_count - 1] = SPDR; // safe received byte to buffer |
} |
request_count++; |
if (request_count == 0) { |
SPI_buffer.buffer.chk = SPDR; // firs char received is check byte from last transfer |
} else { |
SPI_buffer.buffer.c[request_count - 1] = SPDR; // safe received byte to buffer |
} |
request_count++; |
if (--icnt) { |
//SPDR = *iptr; // send next byte |
spi_ready = 1; // we _should_ send later because the slave needs more time |
82,14 → 83,14 |
void StartTransfer(uint16_t len) { |
INT0_LOW // /SS LOW ^= SS HIGH ^= slave should listen |
|
// this is a new request |
request_count = 0; |
// this is a new request |
request_count = 0; |
|
// set up pointer and length for interrupt handler |
icnt = len; |
|
SPCR |= _BV(SPIE); // enable spi interrupt |
SPDR = 'A'; // start transfer by first command char |
SPDR = 'A'; // start transfer by first command char |
} |
|
/** |
96,7 → 97,7 |
* send next command through spi |
*/ |
void spi_send_next() { |
SPDR = 'A' + request_count; |
SPDR = 'A' + request_count; |
} |
|
#endif |