blackbit (29.08.2007 11:02, просмотров: 3898)
Работа с WD под отладочным кристаллом PIC16F684-ICD в MPLAB (может кто не знает): При попытке честно выставить флаг включения WD в слове конфигурации:
__config _FCMEN_OFF & _IESO_OFF & _BOD_ON & _CP_OFF & _MCLRE_ON & _PWRTE_OFF & _WDT_ON & _INTRC_OSC_NOCLKOUT & _CPD_OFF
и запустить отладку, MPLAB выкидывет что-то вроде:
"ICDWarn0014: Watchdog Timer cannot be enabled when ICD 2 is enabled as a debugger.
Disable Watchdog Timer?", отказываясь отлаживаться.
Под старыми камнями тоже так было. Но в более новых мелких кристаллах теперь есть возможность управлять включением изнутри, программно.
Поэтому не прем на рожон, а для убобства делаем:
#ifdef DEBUG
__config _FCMEN_OFF & _IESO_OFF & _BOD_ON & _CP_OFF & _MCLRE_ON & _PWRTE_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _CPD_OFF
#else
__config _FCMEN_OFF & _IESO_OFF & _BOD_ON & _CP_OFF & _MCLRE_ON & _PWRTE_OFF & _WDT_ON & _INTRC_OSC_NOCLKOUT & _CPD_OFF
#endif
т.е. на время отладки отключаем "внешний" фуз WD, а где-нибудь в инициализации включаем на ходу:
bsf WDTCON,SWDTEN ; запускаем WDT на время работы в отладке
можно и так, если надо еще предделитель настроить:
movlw b'00000101'
movwf WDTCON
Особенно полезно для отладки приложений с "нецелевым" использованием WD :), например для отcчета
временных интервалов в sleep'e.