C atmega128 на atmega1281
- Сообщения: 12
- Зарегистрирован: Пн апр 07, 2014 19:46:10
Перевожу исходник на CodeVision с atmega128 на atmega1281, заменил заголовочные файлы, mega128.h на mega1281.h. Но при компиляции возникают ошибки: 'undefined symdol TIMSK' и 'undefined symdol ETIMSK'. Подскажите пожалуйста, что можно сделать?
- Реклама
Лол. Посмотреть как эти регистры обзываются в 1281.IOZ писал(а):Подскажите пожалуйста, что можно сделать?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Сообщения: 12
- Зарегистрирован: Пн апр 07, 2014 19:46:10
Дело в том, что эти регистры в заголовочном файле mega1281.h отсутствуют, может я что-то не понимаю 
IOZ, тебе же ответили, посмотрите, как эти регистры (аналогичные по функциональности) называются у 1281.
Спецификация на оба МК в помощь.
atmega128, atmega1281
Спецификация на оба МК в помощь.
atmega128, atmega1281
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
- Сообщения: 12
- Зарегистрирован: Пн апр 07, 2014 19:46:10
В atmega128 ETIMSK и TIMSK используются, для работы с таймером. В atmega1281 есть TIMSK0, TIMSK1 TIMSK2. Мне не понятна аналогия.
- Реклама
- Сообщения: 56
- Зарегистрирован: Сб мар 30, 2013 19:59:37
Не с таймером, а с таймерАМИ. В документации, ссылку на которую Вам дали ранее, есть подробное побитовое описание обоих регистров. Оба эти регистра управляют прерываниями сразу от нескольких таймеров.IOZ писал(а):В atmega128 ETIMSK и TIMSK используются, для работы с таймером.
А в 1281-ой для каждого таймера ввели свой регистр управления прерываниями. Кстати, у нее есть и TIMSK3 и TIMSK4 и TIMSK5.IOZ писал(а):В atmega1281 есть TIMSK0, TIMSK1 TIMSK2
Кстати, у 1281 - 6 таймеров (два 8-ми битных и четыре 16-ти битных), а у 128-ой - всего 4.
- Сообщения: 56
- Зарегистрирован: Сб мар 30, 2013 19:59:37
Двойное определение идентификатора PINF. Где-то ранее по тексту (в файле mega128.h или в каком-нить другом) уже встречается определение #define PINFIOZ писал(а):Спасибо, с этим разобрался. Пробую переделывать c atmega128 на 1281 другую программку, теперь всплывает другая ошибка(прикрепил во вложении). Что это может быть?
- Сообщения: 12
- Зарегистрирован: Пн апр 07, 2014 19:46:10
Двойное определение с файлом mega128.h. Я с #include везде убрал(во всех файлах проекта) mega128.h, вместо прописал mega1281.h. Но почему на него идёт ссылка?Jonson1974 писал(а):Двойное определение идентификатора PINF. Где-то ранее по тексту (в файле mega128.h или в каком-нить другом) уже встречается определение #define PINF
- Сообщения: 56
- Зарегистрирован: Сб мар 30, 2013 19:59:37
Я не силен в среде CodeVision, по этому подсказать ничего не смогу.
Разве что совет (как сделал бы я) - найдите сам файл mega128.h и временно переименуйте его в _mega128.h. Попытайтесь скомпилировать проект и компилятор, вероятно, должен показать ошибку, что не может найти нужный "хидер" и покажет, в какой строке идет ссылка на него.
Разве что совет (как сделал бы я) - найдите сам файл mega128.h и временно переименуйте его в _mega128.h. Попытайтесь скомпилировать проект и компилятор, вероятно, должен показать ошибку, что не может найти нужный "хидер" и покажет, в какой строке идет ссылка на него.
А зачем такие сложности с переименованием? Поиск строки "mega128.h" по проекту. Ctrl+F вам в помощь.
- Сообщения: 12
- Зарегистрирован: Пн апр 07, 2014 19:46:10
Разобрался, дело в том, что в этот раз в Project->Configure->C Compiler не поменял Chip на atmega1281. Всем спасибо в участие, особенно Jonson1974 
- Сообщения: 46
- Зарегистрирован: Сб дек 17, 2011 11:02:00
Здавствуйте! сталкнулся с такой проблемой!
при переходе с меги 8 на 1281 (надо несколько PWM)
вылетает ошибка Operand 1 out of range: 0x6f
ссылаясь на
ldi Temp,0
>>>>>out TIMSK1,Temp
в I/O View у TIMSK1 адреса прописаны так - na(0x6F)
во все регистры адреса которых начинаются на na ничего не грузится!
в файле m1281def.inc
написано так...
.equ TCCR1A = 0x80 ; MEMORY MAPPED
тоесть я так понимаю что нет прямой адресации регистров!?
как загрузить данные.
пишу на асм
при переходе с меги 8 на 1281 (надо несколько PWM)
вылетает ошибка Operand 1 out of range: 0x6f
ссылаясь на
ldi Temp,0
>>>>>out TIMSK1,Temp
в I/O View у TIMSK1 адреса прописаны так - na(0x6F)
во все регистры адреса которых начинаются на na ничего не грузится!
в файле m1281def.inc
написано так...
.equ TCCR1A = 0x80 ; MEMORY MAPPED
тоесть я так понимаю что нет прямой адресации регистров!?
как загрузить данные.
пишу на асм
- Сообщения: 7518
- Зарегистрирован: Вс мар 29, 2009 22:09:05
С memory mapped регистрами OUT не работает. Используйте STS.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
через LD/ST, очевидно.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Сообщения: 46
- Зарегистрирован: Сб дек 17, 2011 11:02:00
СПАСИБО! ТАК И ЕСТЬ!YS писал(а):С memory mapped регистрами OUT не работает. Используйте STS.
всё заработало!


