|
|
  |
ATmega64 - Operand 1 out of range: 0x36?, Ругается компилятор ассемблера. |
|
|
|
May 6 2010, 06:12
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 14-03-10
Пользователь №: 55 950

|
Написал программу для ATmega64 на Си. Использовал IAR C. Всё нормально, всё работает. Теперь встала задача написать бутлоадер, чтобы грузить прошивку в проц удалённо. Решил писать на ассемблере. Выяснилось, что ассемблер IAR-а балдеет от русских комментариев - то повиснет, то какие-то другие глюки начинают происходить. Пришлось с IAR перейти на AVR Studio 4 и AVR Assembler. Теперь другая проблема - компилятор ругается на совершенно легальные команды типа "sbi tifr,icf1", что мол "Operand 1 out of range: 0x36". По доке на процессор видно, что адрес 0x36 попадает в область I/O этого проца и с включенным режимом совместимости с ATmega103 и с выключенным. Что за тема, не въеду? Как это победить?
|
|
|
|
|
May 9 2010, 06:41
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(rezident @ May 9 2010, 03:02)  только от маленького кириллического символа "я", который в кодировке WIN-1251 имеет код конца файла (0xFF). Это не конец файла - "конец" ^Z, т.е. 0x1A Болезьнью 0xFF до сих пор болели текстовые редакторы, которым необходимо было в процессе редактирования иметь во внутреннем представлении редактируемого файла иметь виртуальные разделители. Для компиляторов это явный баг, видимо отрыжка unicode  . Если не требуется вывод кирилицей в WIN кодировке, то лечится использованием нормальных редакторов поддерживающих разные кодировки и работа в "досовской" CP866. Кстати, нормальные редакторы можно попросить и менять 'я' на 'Я' при вводе. А еще можно не писать комментарии на русском  экономит время на переключении раскладок  .
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
May 12 2010, 15:09
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 14-03-10
Пользователь №: 55 950

|
Да, насчёт sbi я уже разобрался, help почитал. Так что спасибо за подсказку. Просто ни разу не писал на ассемблере для atmega. Раньше работал всё больше с пиками. Поэтому тут был несколько удивлён такими ограниченными командами, которые могут работать или только с частью регистров или с частью портов ввода/вывода или с малыми константами. Такие странные ограничения несколько напрягли.
И спасибо за подсказку насчёт IAR ассемблера. Правда сейчас я на него уже вряд-ли буду переходить, потому что бутлоадер уже в стадии отладки.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|