Цитата(korobov_michael @ Aug 4 2007, 11:43)

Поскольку SPDR используется как для записи, так и для чтения по SPI, AVR Studio не отображает его содержимого в окне просмотра регистров (как и в случае UART). Это наблюдается и c IAR. Самое правильное - сразу вычитывать его содержимое во временную переменную, а потом просматривать ее.
Ко второму посту пара вопросов.
1. Почему после загрузки SPDR = STATUS_REGISTER_READ потом загружается еще и SPDR = 0x00?
По даташиту SPDR выдаст содержимое статусного регистра уже после первой транзакции
2. Смущает как ты возвращаешь значение -- (t << 8 | f) дает в результате t, сдвинутую на 8|f == 0xA8 разрядов. Похоже, что даже для типа int несколько многовато.
3. Почему возвращаемый тип объявлен как unsigned int. Вроде бы достаточно unsigned char
1. самое интересное если не загрузить, в регистр SPDR = 0x00, тогда вообще нечего не получится, а так при загрузке устанавливается флаг регистр SPIF, SPSR, это вроде связанно с тем что буфер кольцевой и если что то нужно считать сначала нужно туда записать.
2. , 3. это упаковка двух восьми битных чисел в шестнадцати битное, при сдвиге в лево на восемь бит получаем 16 битное число, заполненное с право нулями т.е t=0xFF, тогда, возвращаемое значение = 0хFF00 и с этим числом операция "или" и значения в f т.е если f=0xA0, тогда (0xFF00 | f) = 0xFFA0