реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> aduc845 и PSEN
Alex_2015
сообщение Aug 8 2015, 05:39
Сообщение #1





Группа: Участник
Сообщений: 14
Регистрация: 8-08-15
Пользователь №: 87 893



Всем доброго дня.
Досталась плата на основе aduc845 для модификации изделия.
Пишу свою простенькую программу для попробовать и всё здорово работает, но не более часа.
Спустя примерно час с момента подачи питания процессор входит в не понятный для меня режим, а именно на PSEN появляется 1 и прекращается генерация кварца.
С некоторой периодичностью (примерно 100мс) PSEN сбрасывается в ноль на короткое время и кварц начинает генерить. PSEN восстанавливается в 1, генерация прекращается.
Программа при этом не работает.
Что это за режим такой и что его может вызывать?
Причём от сложности программы ни чего не зависит. Даже примитивная программа с миганием светодиодом в основном цикле ведёт себя точно также.
Работаю с процессором пока второй день, опыта с ним маловато. Всё больше AVR.

Смущает ещё тот факт, что судя п описанию при работе с внутренней памятью на PSEN должна быть 1, а я наблюдаю 0 при работе программы.
Быть может вокруг этого искать надо. Возможно если при таких условиях он словит помеху по резету, то может свалиться в режим загрузки программы.
Go to the top of the page
 
+Quote Post
редактор
сообщение Aug 10 2015, 08:07
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315



На сколько я понмню архитектуру MCS51 PSEN вырабатыватся аппаратно при чтении инструкции из внешней памяти (Programm Strobe ENable)
С этой стороны и надо копать. Либо вызов функции через указатель из-за пределов флеши, либо вывод работы с внутренней флешкой (кажется EA) дребезжит.
PS: Если останавливается кварц - это совсем другое.


--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
Go to the top of the page
 
+Quote Post
Alex_2015
сообщение Aug 10 2015, 14:06
Сообщение #3





Группа: Участник
Сообщений: 14
Регистрация: 8-08-15
Пользователь №: 87 893



Спасибо за подсказку. Так случилось, что именно в этом направлении я сегодня и копал. Пришёл к этому решению, вспомнив выдержку из даташита о том, что aduc поддерживает работу с внешней памятью и поковыряв стартаповский файл понял, что настройки по умолчанию предопределяют работу именно с внешней памятью, подключаемой через порт 2. А у меня на нём светодиоды зацеплены.
Ситуацию с переходом процессора в "не понятный режим" устранил. Но с PSEN пока непонятка осталась. Буду более подробно изучать организацию памяти. Потому, как на ALE наблюдаю генерацию с изменяемой частотой, будто он на самом деле пытается общаться с внешней памятью. Надо разделение памяти подкорректировать. Там ещё возможна нестыковка с учётом структуры программы.
Go to the top of the page
 
+Quote Post
редактор
сообщение Aug 11 2015, 08:03
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315



Сигнал ALE - также имеет отношение к внешней памяти.Если PSEN строб выбора программ, то ALE фиксация адреса (или его младшей части?) как для программ так и для данных при выборке из внешней памяти.
Обращение к внешней памяти данных выполняется инструкциями MOVX.
Часто тип памяти данных (внешняя-внутренняя) по умолчанию зависит от указанной модели при сборке проекта. Так в КЕЙЛ если модель памяти SMALL, то данные по умолчанию во внутреннем ОЗУ. Если LAGE то во внешнем.
Еще, на атмелах и интелах был специальный вывод (EA кажется), который определял вешнее или внутреннее размещение программы (при наличии внутренней ЕЕПРОМ для программ).


--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
Go to the top of the page
 
+Quote Post
Alex_2015
сообщение Aug 11 2015, 12:57
Сообщение #5





Группа: Участник
Сообщений: 14
Регистрация: 8-08-15
Пользователь №: 87 893



Видимо это было у очень старых атмеловских процессоров или у 51 архитектуры. У арма я такое не припомню.
Но пока я решил остановиться с копанием PSENа. Программа сейчас работает без сбоев и надо уже по основным изменениям отработать. А времени, как всегда, мало, а сделать надо много.
Хотя подозрение возникло. Проверю его чуть позже. Некоторые моменты в описании структуры памяти не совсем однозначно можно толковать.
За подсказки спасибо.
Go to the top of the page
 
+Quote Post
Alex_2015
сообщение Feb 4 2016, 10:55
Сообщение #6





Группа: Участник
Сообщений: 14
Регистрация: 8-08-15
Пользователь №: 87 893



День добрый.
Хотелось бы в продолжение темы задать ещё один вопрос.
Как мне казалось, с процессором я разобрался, первую версию изделия собрали уже в нескольких экземплярах и всё чудненько работает. Но не бывает всегда всё хорошо.
Сейчас делаем обновлённую версию и я достаточно серьёзно перепахал программу с целью ввести дополнительны возможности в прибор. И на столе всё работает изумительно, а вот в приборе...
Вопрос в следующем. В самом начале основного цикла вставил переключение состояния пина, управляющего светодиодом, для контроля перехода программы через нулевой адрес в процессе работы (было замечено, что при некоторых
внешних условиях программа будто перезапускается) и светодиод действительно переключается. А вот теперь пытаюсь понять, что его на это сподвигает. Проблемы с кодом не вижу.
Подскажите, кто сталкивался, какие внешние события могут приводить к подобному сбою. Быть может это POR так себя проявляет?
Go to the top of the page
 
+Quote Post
редактор
сообщение Feb 11 2016, 08:34
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315



Цитата
какие внешние события могут приводить к подобному сбою.

RESET, POR, WDT, JMP 0000


--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
Go to the top of the page
 
+Quote Post
Igor_K
сообщение Feb 11 2016, 19:57
Сообщение #8


Частый гость
**

Группа: Validating
Сообщений: 113
Регистрация: 12-05-05
Пользователь №: 4 949



- На стек обратите внимание, может в некоторых ситуациях переполняется.
- Ошибки в адресации (вместо памяти программа обращается в SFR).
Go to the top of the page
 
+Quote Post
редактор
сообщение Feb 12 2016, 07:16
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315



Цитата
- Ошибки в адресации (вместо памяти программа обращается в SFR).

исключено - адресное пространство разное. Если только не знать принципа работы МК:
к SFR только прямой доступ, к памяти только косвенный.
Еще как вариант - прерывание без обработчика - будет очень похожий эффект.


--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
Go to the top of the page
 
+Quote Post
Igor_K
сообщение Feb 12 2016, 14:47
Сообщение #10


Частый гость
**

Группа: Validating
Сообщений: 113
Регистрация: 12-05-05
Пользователь №: 4 949



Не слишком самоуверенно?
Любая ошибка в адресации - например хотелось MOV R0,#1 а написалось MOV @R0,#1
Если R0 содержит число в диапазоне 0...127, "будьте любезны?" sm.gif

Цитата(редактор @ Feb 12 2016, 10:16) *
исключено - адресное пространство разное. Если только не знать принципа работы МК:
к SFR только прямой доступ, к памяти только косвенный.
Еще как вариант - прерывание без обработчика - будет очень похожий эффект.

Go to the top of the page
 
+Quote Post
редактор
сообщение Feb 15 2016, 08:59
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315



Цитата
вместо памяти программа обращается в SFR

Цитата
хотелось MOV R0,#1 а написалось MOV @R0,#1 Если R0 содержит число в диапазоне 0...127

То можно запортить переменную или стек, но не SFR.


--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
Go to the top of the page
 
+Quote Post
Igor_K
сообщение Feb 17 2016, 01:27
Сообщение #12


Частый гость
**

Группа: Validating
Сообщений: 113
Регистрация: 12-05-05
Пользователь №: 4 949



Согласен, SFR не взорвется с дымом и разлетающимися во все стороны осколками ADUC-а. Это мой косяк.
Однако, программа все же выполнит не то действие, которое от нее ожидалось? А еще можно почитать из SFR вместо памяти.
Цитата(редактор @ Feb 15 2016, 12:59) *
То можно запортить переменную или стек, но не SFR.

"Запортить стек" не годится чтобы загнать программу неизвестно куда, и хорошо если на рестарт?

Автору вопроса: еще одна из возможных причин - watchdog, точнее недостаточное время настройки. Возможно, программа в некоторых случаях не успевает отработать между его сбросами.
Go to the top of the page
 
+Quote Post
Alex_2015
сообщение Mar 2 2016, 04:32
Сообщение #13





Группа: Участник
Сообщений: 14
Регистрация: 8-08-15
Пользователь №: 87 893



День добрый!
Проблема решилась. По всем признакам, формировался резет из-за многочисленных помех (устройство-мощное ЗУ) и проц уходил в загрузчик или что-то похожее (по косвенным признакам).
Добавили кучу фильтров в питание и разделили по питанию процессор и перефирию, скорректировали трассировку нулевого провода.
Хотя на удивление предыдущая версия прибора при тех же технических характеристиках и похожей трассировке платы проблем не доставляла.
Всем спасибо.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th April 2024 - 10:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.0149 секунд с 7
ELECTRONIX ©2004-2016