Alex_2015 0 8 августа, 2015 Опубликовано 8 августа, 2015 · Жалоба Всем доброго дня. Досталась плата на основе aduc845 для модификации изделия. Пишу свою простенькую программу для попробовать и всё здорово работает, но не более часа. Спустя примерно час с момента подачи питания процессор входит в не понятный для меня режим, а именно на PSEN появляется 1 и прекращается генерация кварца. С некоторой периодичностью (примерно 100мс) PSEN сбрасывается в ноль на короткое время и кварц начинает генерить. PSEN восстанавливается в 1, генерация прекращается. Программа при этом не работает. Что это за режим такой и что его может вызывать? Причём от сложности программы ни чего не зависит. Даже примитивная программа с миганием светодиодом в основном цикле ведёт себя точно также. Работаю с процессором пока второй день, опыта с ним маловато. Всё больше AVR. Смущает ещё тот факт, что судя п описанию при работе с внутренней памятью на PSEN должна быть 1, а я наблюдаю 0 при работе программы. Быть может вокруг этого искать надо. Возможно если при таких условиях он словит помеху по резету, то может свалиться в режим загрузки программы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Edit2007 3 10 августа, 2015 Опубликовано 10 августа, 2015 · Жалоба На сколько я понмню архитектуру MCS51 PSEN вырабатыватся аппаратно при чтении инструкции из внешней памяти (Programm Strobe ENable) С этой стороны и надо копать. Либо вызов функции через указатель из-за пределов флеши, либо вывод работы с внутренней флешкой (кажется EA) дребезжит. PS: Если останавливается кварц - это совсем другое. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_2015 0 10 августа, 2015 Опубликовано 10 августа, 2015 · Жалоба Спасибо за подсказку. Так случилось, что именно в этом направлении я сегодня и копал. Пришёл к этому решению, вспомнив выдержку из даташита о том, что aduc поддерживает работу с внешней памятью и поковыряв стартаповский файл понял, что настройки по умолчанию предопределяют работу именно с внешней памятью, подключаемой через порт 2. А у меня на нём светодиоды зацеплены. Ситуацию с переходом процессора в "не понятный режим" устранил. Но с PSEN пока непонятка осталась. Буду более подробно изучать организацию памяти. Потому, как на ALE наблюдаю генерацию с изменяемой частотой, будто он на самом деле пытается общаться с внешней памятью. Надо разделение памяти подкорректировать. Там ещё возможна нестыковка с учётом структуры программы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Edit2007 3 11 августа, 2015 Опубликовано 11 августа, 2015 · Жалоба Сигнал ALE - также имеет отношение к внешней памяти.Если PSEN строб выбора программ, то ALE фиксация адреса (или его младшей части?) как для программ так и для данных при выборке из внешней памяти. Обращение к внешней памяти данных выполняется инструкциями MOVX. Часто тип памяти данных (внешняя-внутренняя) по умолчанию зависит от указанной модели при сборке проекта. Так в КЕЙЛ если модель памяти SMALL, то данные по умолчанию во внутреннем ОЗУ. Если LAGE то во внешнем. Еще, на атмелах и интелах был специальный вывод (EA кажется), который определял вешнее или внутреннее размещение программы (при наличии внутренней ЕЕПРОМ для программ). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_2015 0 11 августа, 2015 Опубликовано 11 августа, 2015 · Жалоба Видимо это было у очень старых атмеловских процессоров или у 51 архитектуры. У арма я такое не припомню. Но пока я решил остановиться с копанием PSENа. Программа сейчас работает без сбоев и надо уже по основным изменениям отработать. А времени, как всегда, мало, а сделать надо много. Хотя подозрение возникло. Проверю его чуть позже. Некоторые моменты в описании структуры памяти не совсем однозначно можно толковать. За подсказки спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_2015 0 4 февраля, 2016 Опубликовано 4 февраля, 2016 · Жалоба День добрый. Хотелось бы в продолжение темы задать ещё один вопрос. Как мне казалось, с процессором я разобрался, первую версию изделия собрали уже в нескольких экземплярах и всё чудненько работает. Но не бывает всегда всё хорошо. Сейчас делаем обновлённую версию и я достаточно серьёзно перепахал программу с целью ввести дополнительны возможности в прибор. И на столе всё работает изумительно, а вот в приборе... Вопрос в следующем. В самом начале основного цикла вставил переключение состояния пина, управляющего светодиодом, для контроля перехода программы через нулевой адрес в процессе работы (было замечено, что при некоторых внешних условиях программа будто перезапускается) и светодиод действительно переключается. А вот теперь пытаюсь понять, что его на это сподвигает. Проблемы с кодом не вижу. Подскажите, кто сталкивался, какие внешние события могут приводить к подобному сбою. Быть может это POR так себя проявляет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Edit2007 3 11 февраля, 2016 Опубликовано 11 февраля, 2016 · Жалоба какие внешние события могут приводить к подобному сбою. RESET, POR, WDT, JMP 0000 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость Igor_K 11 февраля, 2016 Опубликовано 11 февраля, 2016 · Жалоба - На стек обратите внимание, может в некоторых ситуациях переполняется. - Ошибки в адресации (вместо памяти программа обращается в SFR). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Edit2007 3 12 февраля, 2016 Опубликовано 12 февраля, 2016 · Жалоба - Ошибки в адресации (вместо памяти программа обращается в SFR). исключено - адресное пространство разное. Если только не знать принципа работы МК: к SFR только прямой доступ, к памяти только косвенный. Еще как вариант - прерывание без обработчика - будет очень похожий эффект. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость Igor_K 12 февраля, 2016 Опубликовано 12 февраля, 2016 · Жалоба Не слишком самоуверенно? Любая ошибка в адресации - например хотелось MOV R0,#1 а написалось MOV @R0,#1 Если R0 содержит число в диапазоне 0...127, "будьте любезны?" :) исключено - адресное пространство разное. Если только не знать принципа работы МК: к SFR только прямой доступ, к памяти только косвенный. Еще как вариант - прерывание без обработчика - будет очень похожий эффект. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Edit2007 3 15 февраля, 2016 Опубликовано 15 февраля, 2016 · Жалоба вместо памяти программа обращается в SFR хотелось MOV R0,#1 а написалось MOV @R0,#1 Если R0 содержит число в диапазоне 0...127 То можно запортить переменную или стек, но не SFR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость Igor_K 17 февраля, 2016 Опубликовано 17 февраля, 2016 · Жалоба Согласен, SFR не взорвется с дымом и разлетающимися во все стороны осколками ADUC-а. Это мой косяк. Однако, программа все же выполнит не то действие, которое от нее ожидалось? А еще можно почитать из SFR вместо памяти. То можно запортить переменную или стек, но не SFR. "Запортить стек" не годится чтобы загнать программу неизвестно куда, и хорошо если на рестарт? Автору вопроса: еще одна из возможных причин - watchdog, точнее недостаточное время настройки. Возможно, программа в некоторых случаях не успевает отработать между его сбросами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_2015 0 2 марта, 2016 Опубликовано 2 марта, 2016 · Жалоба День добрый! Проблема решилась. По всем признакам, формировался резет из-за многочисленных помех (устройство-мощное ЗУ) и проц уходил в загрузчик или что-то похожее (по косвенным признакам). Добавили кучу фильтров в питание и разделили по питанию процессор и перефирию, скорректировали трассировку нулевого провода. Хотя на удивление предыдущая версия прибора при тех же технических характеристиках и похожей трассировке платы проблем не доставляла. Всем спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться