Дубль - кусок кода съехал
(«Телесистемы»: «Конференция «Микроконтроллеры и их применение»»)

миниатюрный аудио-видеорекордер mAVR

Отправлено BLACKEAGLE 30 апреля 2003 г. 17:28
В ответ на: Да про запись я всё понимаю... Не понятно как(когда) читать из SPDR отправлено MemoryTest 30 апреля 2003 г. 16:48

SPI - это два восьмибитных (AVR) сдвиговых регистра - один на мастере, другой на слейве - соединенных кольцом, т.е. Master Data In = Slave Data Out (MISO), и Master Data Out = Slave Data In (MOSI). Клоки генерит мастер, и когда их пройдет 8 штук, в регистре у слейва окажется то, что было в регистре у мастера, и наоборот, т.е. M и S обменяются байтами. Читать SPDR можно/нужно сразу после выставления SPIF в "1", и т.к. отдельного Master Receive не бывает, трактовать чтение/прием как побочную халявную фичу Master Transmit, а называть таковую транзакцию как-нибудь понапыщеннее, например, SPI_MasterXchange:


char SPI_MasterXchange(char cData)
{
/* Start transmission */
SPDR = cData;
/* Wait for transmission complete */
while(!(SPSR & (1 << SPIF)));
/* Return received data */
return SPDR;
}

Практически то же самое ув. mse изложил "на чистом AVR-ском".


Составить ответ ||| Конференция ||| Архив

Ответы



Перейти к списку ответов ||| Конференция ||| Архив ||| Главная страница ||| Содержание

E-mail: info@telesys.ru