ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
4 декабря
98001
blackbit (29.08.2007 11:02, просмотров: 3902)
Работа с 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.