Скачал,. запустил, вылечил и начал работать и столкнулся с мистикой. Процессор ATmega16U4. Команда lpm r0,Z+ вызывает ошибку компилятора. Пишет ошибка синтаксиса. Полез в даташит - все правильно пишу. После двух дней экспериментов обнаружилось следующее. В подключаемом файле iom16u4.inc (где определяются имена битов, находится в каталоге xxx/avr/inc/bitdefinition) буквой Z определяется флаг нуля в регистре SREG. И этой же буквой определяется пара индексных регистров (r30:r31). Поэтому все команды с адресацией по Z вызывают ошибку компилирования. Вылечил заменой имен битов регистра SREG на SREG_имя бита (SREG_Z) в файле iom16u4.inc. Кстати, так у ATMELа сделано. Я считаю баг очень серьезный, но я про него ничего не мог найти в инете, в т.ч. и на этом форуме. Таки дела.
|