Здравствуйте уважаемые,
делаю сеть контроллеров, связь CAN BUS. На PIC18F4520 и PIC18F4680. Обнаружил неприятное явление, 4680 меняет частоту такта при кратковременном понижении напряжения питания питания с 8 на 1 МГц. Внешний кварцевый осцилятор перестает работать.
Биты OSCCON нахожу в следующем состоянии:
OSTS = 0 Oscillator start-up time-out timer is running; primary oscillator is not ready
IOFS = 1 INTOSC frequency is stable and the frequency is provided by one of the RC modes
SCS1:SCS0 = 00 Primary oscillator
IRCF2:IRCF0 = 100 Internal Oscillator Frequency 1MHz
Конфигурация:
Oscillator Switchover mode disabled
Fail-Safe Clock Monitor enabled
HS oscillator
Brown-out Reset disabled in hardware and software
PWRT enabled
WDT disabled
MCLR pin enabled; RE3 input pin disabled
Instruction set extension and Indexed Addressing mode disabled
Single-Supply ICSP disabled
Stack full/underflow will cause Reset
Более-менее определился, конфигурация должна быть
Oscillator Switchover mode disabled
Fail-Safe Clock Monitor disabled
HS oscillator
Brown-out Reset enabled in hardware only 4,3В
PWRT enabled
WDT enabled 8 сек
MCLR pin enabled; RE3 input pin disabled
Instruction set extension and Indexed Addressing mode disabled
Single-Supply ICSP disabled
Stack full/underflow will cause Reset
Плюс IRCF2:IRCF0 = 111 Internal Oscillator Frequency 8MHz
Еще clrwdt делается только после успешного принятия пакета с CAN шины. Т.е. если контроллер перестает успешно принимать данные перезгружается полоностью. Опробовал reset инструкцию, работа с внешнего осцилятора не востанавловается.
Плохо, часть модулей может перезгружается свободно, да есть другие, которым нельзя. Вот и плутаю, как будто изменение конфигурации должно работать надежно, да параноя заела. И ничего сделать не могу. С сомнениями