Вы меня не понимаете!!! Приведу листинг:
Код
SPI_exchange:
out SPDR,data_temp; передаем
wait_spi_transmit:;
in temp,SPSR;
sbrs temp,(SPIF);ждем когда произойдет передача
rjmp wait_spi_transmit;
in data_temp,SPDR;читаем принятое
ret ;
Теперь представим, что команду, адреса страницы и байта, и dummy передали.
Пробуем читать дальше не дергая CS.
rcall SPI_exchange ;
rcall SPI_exchange ;
грузим data_temp в регистр сравнения таймера, для управления ШИМомВот таким образом читается без потерь! Если делать только одну транзакцию перед загрузкой "звукового байта" в регистр сравнения таймера, происходит пропуск байта!
Сообщение отредактировал Alt.F4 - Jan 5 2011, 07:59