|
|
|
aduc845 и PSEN |
|
|
|
Aug 8 2015, 05:39
|
Группа: Участник
Сообщений: 14
Регистрация: 8-08-15
Пользователь №: 87 893
|
Всем доброго дня. Досталась плата на основе aduc845 для модификации изделия. Пишу свою простенькую программу для попробовать и всё здорово работает, но не более часа. Спустя примерно час с момента подачи питания процессор входит в не понятный для меня режим, а именно на PSEN появляется 1 и прекращается генерация кварца. С некоторой периодичностью (примерно 100мс) PSEN сбрасывается в ноль на короткое время и кварц начинает генерить. PSEN восстанавливается в 1, генерация прекращается. Программа при этом не работает. Что это за режим такой и что его может вызывать? Причём от сложности программы ни чего не зависит. Даже примитивная программа с миганием светодиодом в основном цикле ведёт себя точно также. Работаю с процессором пока второй день, опыта с ним маловато. Всё больше AVR.
Смущает ещё тот факт, что судя п описанию при работе с внутренней памятью на PSEN должна быть 1, а я наблюдаю 0 при работе программы. Быть может вокруг этого искать надо. Возможно если при таких условиях он словит помеху по резету, то может свалиться в режим загрузки программы.
|
|
|
|
|
Aug 10 2015, 14:06
|
Группа: Участник
Сообщений: 14
Регистрация: 8-08-15
Пользователь №: 87 893
|
Спасибо за подсказку. Так случилось, что именно в этом направлении я сегодня и копал. Пришёл к этому решению, вспомнив выдержку из даташита о том, что aduc поддерживает работу с внешней памятью и поковыряв стартаповский файл понял, что настройки по умолчанию предопределяют работу именно с внешней памятью, подключаемой через порт 2. А у меня на нём светодиоды зацеплены. Ситуацию с переходом процессора в "не понятный режим" устранил. Но с PSEN пока непонятка осталась. Буду более подробно изучать организацию памяти. Потому, как на ALE наблюдаю генерацию с изменяемой частотой, будто он на самом деле пытается общаться с внешней памятью. Надо разделение памяти подкорректировать. Там ещё возможна нестыковка с учётом структуры программы.
|
|
|
|
|
Aug 11 2015, 12:57
|
Группа: Участник
Сообщений: 14
Регистрация: 8-08-15
Пользователь №: 87 893
|
Видимо это было у очень старых атмеловских процессоров или у 51 архитектуры. У арма я такое не припомню. Но пока я решил остановиться с копанием PSENа. Программа сейчас работает без сбоев и надо уже по основным изменениям отработать. А времени, как всегда, мало, а сделать надо много. Хотя подозрение возникло. Проверю его чуть позже. Некоторые моменты в описании структуры памяти не совсем однозначно можно толковать. За подсказки спасибо.
|
|
|
|
|
Feb 4 2016, 10:55
|
Группа: Участник
Сообщений: 14
Регистрация: 8-08-15
Пользователь №: 87 893
|
День добрый. Хотелось бы в продолжение темы задать ещё один вопрос. Как мне казалось, с процессором я разобрался, первую версию изделия собрали уже в нескольких экземплярах и всё чудненько работает. Но не бывает всегда всё хорошо. Сейчас делаем обновлённую версию и я достаточно серьёзно перепахал программу с целью ввести дополнительны возможности в прибор. И на столе всё работает изумительно, а вот в приборе... Вопрос в следующем. В самом начале основного цикла вставил переключение состояния пина, управляющего светодиодом, для контроля перехода программы через нулевой адрес в процессе работы (было замечено, что при некоторых внешних условиях программа будто перезапускается) и светодиод действительно переключается. А вот теперь пытаюсь понять, что его на это сподвигает. Проблемы с кодом не вижу. Подскажите, кто сталкивался, какие внешние события могут приводить к подобному сбою. Быть может это POR так себя проявляет?
|
|
|
|
|
Feb 11 2016, 08:34
|
Местный
Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315
|
Цитата какие внешние события могут приводить к подобному сбою. RESET, POR, WDT, JMP 0000
--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
|
|
|
|
|
Feb 12 2016, 07:16
|
Местный
Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315
|
Цитата - Ошибки в адресации (вместо памяти программа обращается в SFR). исключено - адресное пространство разное. Если только не знать принципа работы МК: к SFR только прямой доступ, к памяти только косвенный. Еще как вариант - прерывание без обработчика - будет очень похожий эффект.
--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
|
|
|
|
|
Feb 12 2016, 14:47
|
Частый гость
Группа: Validating
Сообщений: 113
Регистрация: 12-05-05
Пользователь №: 4 949
|
Не слишком самоуверенно? Любая ошибка в адресации - например хотелось MOV R0,#1 а написалось MOV @R0,#1 Если R0 содержит число в диапазоне 0...127, "будьте любезны?" Цитата(редактор @ Feb 12 2016, 10:16) исключено - адресное пространство разное. Если только не знать принципа работы МК: к SFR только прямой доступ, к памяти только косвенный. Еще как вариант - прерывание без обработчика - будет очень похожий эффект.
|
|
|
|
|
Feb 15 2016, 08:59
|
Местный
Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315
|
Цитата вместо памяти программа обращается в SFR Цитата хотелось MOV R0,#1 а написалось MOV @R0,#1 Если R0 содержит число в диапазоне 0...127 То можно запортить переменную или стек, но не SFR.
--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
|
|
|
|
|
Feb 17 2016, 01:27
|
Частый гость
Группа: Validating
Сообщений: 113
Регистрация: 12-05-05
Пользователь №: 4 949
|
Согласен, SFR не взорвется с дымом и разлетающимися во все стороны осколками ADUC-а. Это мой косяк. Однако, программа все же выполнит не то действие, которое от нее ожидалось? А еще можно почитать из SFR вместо памяти. Цитата(редактор @ Feb 15 2016, 12:59) То можно запортить переменную или стек, но не SFR. "Запортить стек" не годится чтобы загнать программу неизвестно куда, и хорошо если на рестарт? Автору вопроса: еще одна из возможных причин - watchdog, точнее недостаточное время настройки. Возможно, программа в некоторых случаях не успевает отработать между его сбросами.
|
|
|
|
|
Mar 2 2016, 04:32
|
Группа: Участник
Сообщений: 14
Регистрация: 8-08-15
Пользователь №: 87 893
|
День добрый! Проблема решилась. По всем признакам, формировался резет из-за многочисленных помех (устройство-мощное ЗУ) и проц уходил в загрузчик или что-то похожее (по косвенным признакам). Добавили кучу фильтров в питание и разделили по питанию процессор и перефирию, скорректировали трассировку нулевого провода. Хотя на удивление предыдущая версия прибора при тех же технических характеристиках и похожей трассировке платы проблем не доставляла. Всем спасибо.
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|