Свежие обсуждения
Микроконтроллеры

Программный сброс PIC16?

1 2

HOWK: При сбросе ( MCLR ) устанавливаются все регистры МК в 0,
кроме TRIS и OPTION - они в 1, STATUS - 3 и 4 биты в 1.

Это не вполне соответствует истине. И никаких вырываний кусков из текста нет. Читайте даташит (фрагмент в аттаче).
В некоторые регистры после сброса заносятся начальные значения (вовсе не обязательно это будут нули!)
А данные в бОльшей части регистров, если говорить обо ВСЕХ регистрах, а не только SFR - не изменяются.
Посмотрите табл. 3-4 в переводе PIC16 Manual.
Убедились?
То, что МК занесёт в регистры нули после сброса - распространённое заблуждение среди начинающих. Это может сделать компилятор, но сам PIC этого не делает.

 

AlexAlcoa:
проблема с переполнением стека
Проблем не будет, поскольку и переполнения тоже. Если достигнут максимум стека, новые данные записываются поверх старых. Поскольку, при сбросе, программа начинается заново, старые данные нас вовсе не интересуют.
Более того. Как-то, даже использовал выход из ПП без Return (т.е. без извлечения из стека), поскольку логика программы это позволяла.

 

Такой вариант возможен при включенном сторожевом таймере. Если нужен выполнить сброс направляете программу на цикл где отсутствует сброс сторожевого таймера. Таймер отрабатывает время и пик перезапускается. Проблем не возникало.

 

Gregory: поскольку и переполнения тожеOK. Значит просто GOTO 0x0000

 

AlexAlcoa:
просто GOTO 0x0000
Ну, там уж сами смотрите. Может и не обязательно каждый раз инициализацию проходить.

 
1 2