Поклонники продукции Microchip Technology Inc тусуются тут.
Вс мар 20, 2022 15:54:02
Добрый день. Подскажите, если не сложно, как именно софтово перезагрузить 628a? А именно - какие регистры требуется обнулить и что не забыть сделать помимо гото 0?
Просто надо сделать рестарт устройству по команде, прилетающей в уарт, а у меня клешни вместо рук и коржик вместо мозга, и что-то я туплю в это прекрасное и солнечное воскресенье. С прерываниями научился работать, с таймерами и ШИМом - тоже. А вот как делать пику рестарт - что-то не соображаю.
Вс мар 20, 2022 16:09:48
. А вот как делать пику рестарт - что-то не соображаю.
Примеры:
для PIC18F CCS --> disasm
reset_cpu(); --> 087A 00FF RESET
или
для PIC16F88: reset_cpu();
0D9 018A CLRF 0xa
0DA 2800 GOTO 0
Последний раз редактировалось
Steppe Вс мар 20, 2022 17:21:58, всего редактировалось 1 раз.
Вс мар 20, 2022 16:47:10
Steppe, спасибо.
Вс мар 20, 2022 17:20:26
Включи wdt. А в том месте где определяешь команду на сброс напиши goto $
Вс мар 20, 2022 23:29:38
Простой переход на 0х0000 не аналогия аппаратному сбросу - кой-чего из регистров специальных функций не переустановит.
Команда reset есть только в случае ПИК18 или улучшенной среднемладшей серий.
Как вариант - использование одного из свободных выводов МК...
Пн мар 21, 2022 09:53:08
Вот я про то и говорю. Если кратко - у меня там типа флаговый автомат, написанный на JALе (знаю, извращение - но в мплабе я бы ковырялся дольше, и до него руки дойдут рано или поздно). Получается так, что при простом прыжке на нуль у меня девайс уходит в бут-луп как будто при этом не обнуляется приёмный буфер уарта (а с чего бы ему обнуляться, так-то по хорошему... или всё-таки должен? не знаю...), и при первом же проходе цикл получает из него ту же самую команду на ребут и весело её обрабатывает по кругу. Какой регистр надо пнуть чтоб такого не происходило - я найти пока не смог. И вообще по ребуту из прошивки, да ещё со сбросом состояния уарта как-то не много информации нашел - все советуют только гото 0 как попугаи. При этом, ощущение такое, что от этого гото 0 даже переменные не обнуляются. Какие регистры используются при инициализации порта - посмотрел в библиотеках JALа и ДШ, попробовал RCREG обнулять и всё такое - как-то не помогает пока. Хоть ты тресни - бут-луп.
Ватчдог не хочу использовать - у меня его прескейлер занят другим таймером, а без него он слишком часто тикает, а я ещё не от всех делеев везде избавился.
На счёт CLRF 0xA - это, полагаю, я программный счетчик PCLATH обнуляю? Ну это мало поможет в моём случае, но спасибо, почитаю, запомню.
Пн мар 21, 2022 10:18:43
чего-то мне кажется, что твоя хотелка просто неправильная: контроллер по внешним командам должен выполнять определённые действия, а не отключать себе питание....если это в качестве устранения какой-то нештатной ситуации, то нет гарантии, что контроллер примет и отработает эту команду.....надо исходить из того, что ВСЕ как-то пользуются контроллером и только тебе захотелось чего-то нестандартного, а скорее всего просто из-за недостатка опыта...
Пн мар 21, 2022 10:57:17
И вообще по ребуту из прошивки, да ещё со сбросом состояния уарта как-то не много информации нашел - все советуют только гото 0 как попугаи. При этом, ощущение такое, что от этого гото 0 даже переменные не обнуляются. Какие регистры используются при инициализации порта - посмотрел в библиотеках JALа и ДШ, попробовал RCREG обнулять и всё такое - как-то не помогает пока. .
В начале программы, где описываются всякие инициализации портов и регистров, а также переменные и массивы, добавьте строчки по обнулению нужных переменных и буферов. И фсЁ. Разве это проблема?
Пн мар 21, 2022 11:06:30
Steppe, не проблема. Это изначально сделано по примеру функции инициализации порта из джаловских библиотек. Но не работает как надо. Я что-то явно упускаю.
Пн мар 21, 2022 11:57:29
Нужно не только рабочую область ОЗУ обнулять, но и ставить в исходное состояние задействованные в прикладной программе регистры специальных функций.
А уж затем давать переход на стартовый адрес.
Пн мар 21, 2022 12:42:22
Хорошо, попробую вечером написать функцию, приводящую МК в стандартные состояния регистров. Может быть, найду что забыл.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.