Как софтово перезагрузить 16f628a

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
Tenko
Открыл глаза
Сообщения: 76
Зарегистрирован: Вт июл 07, 2020 12:56:10

Как софтово перезагрузить 16f628a

Сообщение Tenko »

Добрый день. Подскажите, если не сложно, как именно софтово перезагрузить 628a? А именно - какие регистры требуется обнулить и что не забыть сделать помимо гото 0?
Просто надо сделать рестарт устройству по команде, прилетающей в уарт, а у меня клешни вместо рук и коржик вместо мозга, и что-то я туплю в это прекрасное и солнечное воскресенье. С прерываниями научился работать, с таймерами и ШИМом - тоже. А вот как делать пику рестарт - что-то не соображаю.
Реклама
Аватара пользователя
Steppe
Друг Кота
Сообщения: 4812
Зарегистрирован: Вс сен 17, 2017 17:44:21
Откуда: 51.7727, 55.0988. Высота над морем 107 м. До границы 161 км.

Re: Как софтово перезагрузить 16f628a

Сообщение Steppe »

[uquote="Tenko",url="/forum/viewtopic.php?p=4201200#p4201200"]. А вот как делать пику рестарт - что-то не соображаю.[/uquote]
Примеры:
для PIC18F
CCS --> disasm
reset_cpu(); --> 087A 00FF RESET
или
для PIC16F
88: reset_cpu();
0D9 018A CLRF 0xa
0DA 2800 GOTO 0
Последний раз редактировалось Steppe Вс мар 20, 2022 17:21:58, всего редактировалось 1 раз.
Реклама
Tenko
Открыл глаза
Сообщения: 76
Зарегистрирован: Вт июл 07, 2020 12:56:10

Re: Как софтово перезагрузить 16f628a

Сообщение Tenko »

Steppe, спасибо.
Аватара пользователя
Родэрик
Нашел транзистор. Понюхал.
Сообщения: 162
Зарегистрирован: Чт ноя 26, 2015 23:22:35
Откуда: не с Уфы
Контактная информация:

Re: Как софтово перезагрузить 16f628a

Сообщение Родэрик »

Включи wdt. А в том месте где определяешь команду на сброс напиши goto $
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15569
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Как софтово перезагрузить 16f628a

Сообщение BOB51 »

Простой переход на 0х0000 не аналогия аппаратному сбросу - кой-чего из регистров специальных функций не переустановит.
Команда reset есть только в случае ПИК18 или улучшенной среднемладшей серий.
Как вариант - использование одного из свободных выводов МК...
:roll:
Реклама
Tenko
Открыл глаза
Сообщения: 76
Зарегистрирован: Вт июл 07, 2020 12:56:10

Re: Как софтово перезагрузить 16f628a

Сообщение Tenko »

Вот я про то и говорю. Если кратко - у меня там типа флаговый автомат, написанный на JALе (знаю, извращение - но в мплабе я бы ковырялся дольше, и до него руки дойдут рано или поздно). Получается так, что при простом прыжке на нуль у меня девайс уходит в бут-луп как будто при этом не обнуляется приёмный буфер уарта (а с чего бы ему обнуляться, так-то по хорошему... или всё-таки должен? не знаю...), и при первом же проходе цикл получает из него ту же самую команду на ребут и весело её обрабатывает по кругу. Какой регистр надо пнуть чтоб такого не происходило - я найти пока не смог. И вообще по ребуту из прошивки, да ещё со сбросом состояния уарта как-то не много информации нашел - все советуют только гото 0 как попугаи. При этом, ощущение такое, что от этого гото 0 даже переменные не обнуляются. Какие регистры используются при инициализации порта - посмотрел в библиотеках JALа и ДШ, попробовал RCREG обнулять и всё такое - как-то не помогает пока. Хоть ты тресни - бут-луп.
Ватчдог не хочу использовать - у меня его прескейлер занят другим таймером, а без него он слишком часто тикает, а я ещё не от всех делеев везде избавился.

На счёт CLRF 0xA - это, полагаю, я программный счетчик PCLATH обнуляю? Ну это мало поможет в моём случае, но спасибо, почитаю, запомню.
Реклама
1en2
Собутыльник Кота
Сообщения: 2804
Зарегистрирован: Вс фев 02, 2020 09:12:37

Re: Как софтово перезагрузить 16f628a

Сообщение 1en2 »

чего-то мне кажется, что твоя хотелка просто неправильная: контроллер по внешним командам должен выполнять определённые действия, а не отключать себе питание....если это в качестве устранения какой-то нештатной ситуации, то нет гарантии, что контроллер примет и отработает эту команду.....надо исходить из того, что ВСЕ как-то пользуются контроллером и только тебе захотелось чего-то нестандартного, а скорее всего просто из-за недостатка опыта...
Аватара пользователя
Steppe
Друг Кота
Сообщения: 4812
Зарегистрирован: Вс сен 17, 2017 17:44:21
Откуда: 51.7727, 55.0988. Высота над морем 107 м. До границы 161 км.

Re: Как софтово перезагрузить 16f628a

Сообщение Steppe »

[uquote="Tenko",url="/forum/viewtopic.php?p=4201490#p4201490"]И вообще по ребуту из прошивки, да ещё со сбросом состояния уарта как-то не много информации нашел - все советуют только гото 0 как попугаи. При этом, ощущение такое, что от этого гото 0 даже переменные не обнуляются. Какие регистры используются при инициализации порта - посмотрел в библиотеках JALа и ДШ, попробовал RCREG обнулять и всё такое - как-то не помогает пока. .[/uquote]
В начале программы, где описываются всякие инициализации портов и регистров, а также переменные и массивы, добавьте строчки по обнулению нужных переменных и буферов. И фсЁ. Разве это проблема?
Tenko
Открыл глаза
Сообщения: 76
Зарегистрирован: Вт июл 07, 2020 12:56:10

Re: Как софтово перезагрузить 16f628a

Сообщение Tenko »

Steppe, не проблема. Это изначально сделано по примеру функции инициализации порта из джаловских библиотек. Но не работает как надо. Я что-то явно упускаю.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15569
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Как софтово перезагрузить 16f628a

Сообщение BOB51 »

Нужно не только рабочую область ОЗУ обнулять, но и ставить в исходное состояние задействованные в прикладной программе регистры специальных функций.
А уж затем давать переход на стартовый адрес.
:roll:
Tenko
Открыл глаза
Сообщения: 76
Зарегистрирован: Вт июл 07, 2020 12:56:10

Re: Как софтово перезагрузить 16f628a

Сообщение Tenko »

Хорошо, попробую вечером написать функцию, приводящую МК в стандартные состояния регистров. Может быть, найду что забыл.
Ответить

Вернуться в «PIC»