Цитата(Палыч @ Dec 19 2008, 10:11)

Пусто - где? В SPDR? Что Вы предпологали увидить в SPDR? То, что туда поместили? Не увидите. На приёме у SPI небольшой буферок из одного байта, в который помещаются принятые приёмником данные - он то и читается. Записываемые в SPDR данные попадают в свиговый регистр для передачи - прочитать их невозможно.
Подскажите, как тогда можно убедится, что команда out выполняется правильно в месте записи переменной в SPDR?
Цитата(Сергей Борщ @ Dec 19 2008, 10:22)

А что было в этом регистре до этой строчки? Вы уверены, что все те единицы, которые там были, вам нужны? Уберите операцию "ИЛИ", оставьте только присваивание. Со следующей строкой еще можно согласиться, если вы одновременно с записью SPI2X хотите сбросить все флаги.
А теперь главный вопрос: Вы сняли фуз совместимости с мегой103? В ней SPI2X не было.
P.S. Используйте кнопку '#' на форме ввода для оформления исходников
Он очистится автоматически при следующей записи в SPDR.
Крыжик совместимости с мегой103 снят. Битик SPI2X не выставляется именно после
команды out 0x0E, R16. А само"ИЛИ" в R16 выполняется. Я пробовал и просто SPSR=1 делать.
Неприятно то, что бит этот не ставится даже крыжиком в окошке I/O View. Может както неправильно модуль spi включен?
Цитата(smalcom @ Dec 18 2008, 21:24)

все же попробуйте использовать прерывание(SPIE) и -O2
Прерывание мне без надобности, я только передаю данные (в дисплей). О2 это кажется из WinAVR-а уровень оптимизации. Я пишу в IAR, но с различными вариантами оптимизации потом тяжело разбирать дизасемблер