Знаток
Регистрация: 06.12.2009
Сообщений: 825
Репутация: 114
![]() ![]() |
Приветствую. Чето запутался, в модель в Протеусе работает, на Atmega8 тоже все ОК. Зашил в ATmega128, зависает при инициализации LCD. Думал, мало ли что, в подпрограмму вставил пустой цикл, т.е.
Код:
init_lcd: nop ret упростил прогр: Код:
reset: ldi temp,low(ramend) out spl,temp ldi temp,high(ramend) out sph,temp ser temp ; out ddrb,temp out ddre,temp rcall INIT_LCD ;все - завис!! sbi porte,3 main: rjmp main В архиве исходники модель протеуса. Отмечу еще раз, что в моделе работает на меге8 в железе тоже. Обычно чью по USB микропрог, но этот прогер не поддерживает 128 мегу, достал стары прогер Громова все нормально. |
||
Оценка
|
Специалист
|
В симуляторе AVR Studio код прогоняли?
Возможно, я не прав, поправьте меня если что... Так вот в симуляторе при выполнении операции rjmp INIT_LCD появляется предупреждение "Uninitialized stack pointer used at 0x0009", т.е. не инициализирован указатель стека. Но в вашей программе инициализация указателя стека есть (в самом начале). Вот разбираюсь дальше в чем дело...
__________________
Уважаемые пассажиры, самолет ТУ-134 садится. У кого есть зарядка от ТУ-134, просьба пройти в кабину пилота. |
||
Оценка
|
Специалист
|
С предупреждением разобрался: в настройках вашего проекта в студии почему-то используется микроконтроллер Attiny2313 (посмотрите внимательно). Я выбрал микроконтроллер mega128 и платформу AVR Simulator - после этого по вашему коду в симуляторе стек устанавливается правильно и предупреждение не появляется.
Почему получается так, и имеет ли это влияние на компиляцию исходного кода не знаю. Сделайте эти исправления и проверьте в Proteus'е и в железе. Буду ждать ответа, самому интересно.
__________________
Уважаемые пассажиры, самолет ТУ-134 садится. У кого есть зарядка от ТУ-134, просьба пройти в кабину пилота. |
||
Оценка
|
Знаток
Регистрация: 06.12.2009
Сообщений: 825
Репутация: 114
![]() ![]() |
Спасибо Vadzz что откликнулись!
Итак что я выяснил: 1) Файл attiny2313 я думаю не влияет, так как уже много МК сделал на нем, все было ок. Привычка не создавать новые фийлы студио и протеуса, а пользоваться шаблоном и на нем начинать писать прогу. Ну на всякий случай конечно создал новый проект с 128 мегой но толку нет. 2) Все оказалось еще куда интересней, теперь он отказался вызывать программы вообще. Создал новую короткую программу, казалось бы почему бы не работать! Вот пример прогр, вызываю пустую прогр и он виснет. Код:
.org 0x0000 ;старт программы с 0 адреса rjmp reset reset: ldi r16,high(ramend) ;Конец памяти SRAM out SPH,r16 ;Обявляем где у нас стек SPH ldi r16,low(ramend) out SPL,r16 ser temp ; out ddrb,temp out ddre,temp rcall prog ;все - завис!! sbi porte,3 main: rjmp main prog: nop ret Да, не указал ньюансы. На плате я припаял только лишь чать выводов МС. Питание подал на 52-53 и 64. ресет в воздухе. 2-3-11 под программирование. на 5 выводе стоит СД по которому смотрю выполняется прогр или нет. Фьюзы не трогал, заводские стоят |
||
Оценка
|
Специалист
|
1. Может все же Reset стоит подтянуть к "+" питания через резистор.
2. Если Fuse-биты оставили заводские, то обратите внимание на бит M103C - по-умолчанию он запрограммирован и mega128 находится в режиме совместимости с mega103 (читаем по этому поводу даташит). 3. Питание подать на все соответствующие выводы: 21, 52 (Vcc), 64 (AVcc) и 22, 53, 63 (GND).
__________________
Уважаемые пассажиры, самолет ТУ-134 садится. У кого есть зарядка от ТУ-134, просьба пройти в кабину пилота. |
||
Оценка
|
Знаток
Регистрация: 06.12.2009
Сообщений: 825
Репутация: 114
![]() ![]() |
Вот виновник всему бит M103C. Если бы знал что он так повлияет. Очень странно, почему когда он установлен не работает команда RCALL. Видимо все-таки баг МК.
Огромное спасибо за помощь, этот фьюз меня с самого начал смущал но что такое влияние оказывает подумать не мог! ![]() Да программировать с ком-порта дело не очень удобное, привык к юсб, эта физкультура и дергание порта... |
||
Оценка
|
Специалист
|
Нет, это не баг мк. Почитайте даташит - раздел режим совместимости Atmega128 с mega103. Все дело в связке конфигурации стека (в начале программы) и внутренней карты памяти микроконтроллера, которая меняется при включении режима совместимости с mega103. Как-то так...
__________________
Уважаемые пассажиры, самолет ТУ-134 садится. У кого есть зарядка от ТУ-134, просьба пройти в кабину пилота. |
||
Оценка
|
Обратная связь РадиоЛоцман Вверх |