ЭФО предлагает со своего склада новую серию преобразователей интерфейсов USB UART компании FTDI FT232RNL-REEL

Atmega128A и LCD Nokia3310. После прошивки зависает на подпрограмме

Знаток
 
Регистрация: 06.12.2009
Адрес: Днепропетровск
Сообщений: 813
Репутация: 114
105 141
4 0
 
25.11.2013 14:19 #1
Приветствую. Чето запутался, в модель в Протеусе работает, на 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 мегу, достал стары прогер Громова все нормально.
Изображения
Тип файла: jpg 1.JPG (76.2 Кб, 0 просмотров)
Вложения
Тип файла: rar 1.rar (55.9 Кб, 0 просмотров)
Оценка
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей.
Специалист
 
Аватар для Vadzz
 
Регистрация: 12.11.2008
Адрес: Тирасполь
Сообщений: 2,172
Записей в дневнике: 22
Репутация: 418
406 86
0 0
Отправить сообщение для Vadzz с помощью ICQ
 
25.11.2013 16:02 #2
В симуляторе AVR Studio код прогоняли?

Возможно, я не прав, поправьте меня если что...
Так вот в симуляторе при выполнении операции rjmp INIT_LCD появляется предупреждение "Uninitialized stack pointer used at 0x0009", т.е. не инициализирован указатель стека. Но в вашей программе инициализация указателя стека есть (в самом начале).

Вот разбираюсь дальше в чем дело...
__________________
Уважаемые пассажиры, самолет ТУ-134 садится. У кого есть зарядка от ТУ-134, просьба пройти в кабину пилота.
Оценка
Специалист
 
Аватар для Vadzz
 
Регистрация: 12.11.2008
Адрес: Тирасполь
Сообщений: 2,172
Записей в дневнике: 22
Репутация: 418
406 86
0 0
Отправить сообщение для Vadzz с помощью ICQ
 
25.11.2013 16:47 #3
С предупреждением разобрался: в настройках вашего проекта в студии почему-то используется микроконтроллер Attiny2313 (посмотрите внимательно). Я выбрал микроконтроллер mega128 и платформу AVR Simulator - после этого по вашему коду в симуляторе стек устанавливается правильно и предупреждение не появляется.

Почему получается так, и имеет ли это влияние на компиляцию исходного кода не знаю. Сделайте эти исправления и проверьте в Proteus'е и в железе.

Буду ждать ответа, самому интересно.
__________________
Уважаемые пассажиры, самолет ТУ-134 садится. У кого есть зарядка от ТУ-134, просьба пройти в кабину пилота.
Оценка
Знаток
 
Регистрация: 06.12.2009
Адрес: Днепропетровск
Сообщений: 813
Репутация: 114
105 141
4 0
 
25.11.2013 17:40 #4
Спасибо 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 выводе стоит СД по которому смотрю выполняется прогр или нет.
Фьюзы не трогал, заводские стоят
Оценка
Специалист
 
Аватар для Vadzz
 
Регистрация: 12.11.2008
Адрес: Тирасполь
Сообщений: 2,172
Записей в дневнике: 22
Репутация: 418
406 86
0 0
Отправить сообщение для Vadzz с помощью ICQ
 
25.11.2013 19:14 #5
1. Может все же Reset стоит подтянуть к "+" питания через резистор.
2. Если Fuse-биты оставили заводские, то обратите внимание на бит M103C - по-умолчанию он запрограммирован и mega128 находится в режиме совместимости с mega103 (читаем по этому поводу даташит).
3. Питание подать на все соответствующие выводы: 21, 52 (Vcc), 64 (AVcc) и 22, 53, 63 (GND).
__________________
Уважаемые пассажиры, самолет ТУ-134 садится. У кого есть зарядка от ТУ-134, просьба пройти в кабину пилота.
Оценка
Знаток
 
Регистрация: 06.12.2009
Адрес: Днепропетровск
Сообщений: 813
Репутация: 114
105 141
4 0
 
26.11.2013 14:40 #6
Вот виновник всему бит M103C. Если бы знал что он так повлияет. Очень странно, почему когда он установлен не работает команда RCALL. Видимо все-таки баг МК.
Огромное спасибо за помощь, этот фьюз меня с самого начал смущал но что такое влияние оказывает подумать не мог!

Да программировать с ком-порта дело не очень удобное, привык к юсб, эта физкультура и дергание порта...
Оценка
Специалист
 
Аватар для Vadzz
 
Регистрация: 12.11.2008
Адрес: Тирасполь
Сообщений: 2,172
Записей в дневнике: 22
Репутация: 418
406 86
0 0
Отправить сообщение для Vadzz с помощью ICQ
 
26.11.2013 15:18 #7
Нет, это не баг мк. Почитайте даташит - раздел режим совместимости Atmega128 с mega103. Все дело в связке конфигурации стека (в начале программы) и внутренней карты памяти микроконтроллера, которая меняется при включении режима совместимости с mega103. Как-то так...
__________________
Уважаемые пассажиры, самолет ТУ-134 садится. У кого есть зарядка от ТУ-134, просьба пройти в кабину пилота.
Оценка
Знаток
 
Регистрация: 06.12.2009
Адрес: Днепропетровск
Сообщений: 813
Репутация: 114
105 141
4 0
 
26.11.2013 21:11 #8
Да, да спасибо. Насчет того что нелогично, я имел в виду, что зачем с завода его ставить. Проект начинает работать!
Оценка
Ответ
Похожие темы
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход
Электронные компоненты. Бесплатная доставка по России
Часовой пояс GMT +3, время: 20:33.
Обратная связь РадиоЛоцман Вверх