X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Favr%2Fao_spi_usart.c;h=5ea11da6a093527a6ae96cb4caa0f8cd5ccdcaed;hb=35e3c47da895bdd868b9b66b98bca64bd82db862;hp=1996fcd9e98a9cee798aaaf3ace662c2b623924a;hpb=06b044629951b06c7ec9b0105b89f51b2880ebd0;p=fw%2Faltos diff --git a/src/avr/ao_spi_usart.c b/src/avr/ao_spi_usart.c index 1996fcd9..5ea11da6 100644 --- a/src/avr/ao_spi_usart.c +++ b/src/avr/ao_spi_usart.c @@ -43,15 +43,17 @@ ao_spi_send(void __xdata *block, uint16_t len) __reentrant /* Receive bytes over SPI. * - * This sets up tow DMA engines, one reading the data and another - * writing constant values to the SPI transmitter as that is what - * clocks the data coming in. + * Poll, sending zeros and reading data back */ void ao_spi_recv(void __xdata *block, uint16_t len) __reentrant { uint8_t *d = block; + /* Clear any pending data */ + while (UCSR1A & (1 << RXC1)) + (void) UDR1; + while (len--) { while (!(UCSR1A & (1 << UDRE1))); UDR1 = 0;