Контроллер наконец-то работает в отладке (Debugger->Run), по своему прерыванию переключает два светодиода. А также останаливается на HW breakpoint'ах и я могу вменяемо степать по коду.
К этому привело:
MPLAB8 + PICKi3 + _FOSC (XT & CSW_FSCM_OFF); + (Debug configuration)
Захожу так: меню Debugger -> Program -> меню Debugger -> Run...
Но проблема #1
Нажатие меню Debugger "Halt" приводит к:
Halting...
Target halted
PICkit 3 has halted with error(s).
Проблема #2. Попытка сделать дебаггером шаг через библиотечную ф-цию OpenADC10(...) вызывает reset процессора.
Функция инициализации, из которой вызывается OpenADC10():
int ADC10_Open (void)
{
int n, err;
ADCON1bits.ADON = 0; // ADC - off
SetChanADC10 (ADC_CH0_POS_SAMPLEA_AN0 & ADC_CH0_NEG_SAMPLEA_NVREF);
ConfigIntADC10 (ADC_INT_ENABLE & ADC_INT_PRI_3);
OpenADC10 (
ADC_MODULE_ON & ADC_IDLE_CONTINUE &
ADC_FORMAT_SIGN_FRACT & //ADC_FORMAT_INTG &
ADC_CLK_AUTO & ADC_AUTO_SAMPLING_OFF & ADC_SAMPLE_INDIVIDUAL,
ADC_VREF_EXT_EXT & ADC_SCAN_ON & ADC_CONVERT_CH0 & ADC_ALT_BUF_OFF & ADC_ALT_INPUT_OFF,
ADC_CONV_CLK_SYSTEM & ADC_SAMPLE_TIME_4 & ADC_CONV_CLK_4Tcy, // Tad = 150 ns
ENABLE_AN0_ANA & ENABLE_AN1_ANA & ENABLE_AN2_ANA & ENABLE_AN3_ANA &
//ENABLE_AN4_ANA & ENABLE_AN5_ANA &
ENABLE_AN6_ANA & ENABLE_AN7_ANA & ENABLE_AN8_ANA & ENABLE_AN9_ANA &
ENABLE_AN10_ANA & ENABLE_AN11_ANA & ENABLE_AN12_ANA & ENABLE_AN13_ANA & ENABLE_AN14_ANA & ENABLE_AN15_ANA,
SKIP_SCAN_AN4 & SKIP_SCAN_AN5 & SKIP_SCAN_AN1);
//SCAN_ALL);
for (n=0; n<10; n++) ADC10_Conversion ();
if (sKIV.RS.Test) {
err = ( !sTMP.ADC10[15] || !sTMP.ADC10[14] ) ? ERR_OPEN_ADC10 : 0; // Температура || Напряжение + 24 v
}
else err = 0;
return err;
}
Сброс происходит на первой же команде тела библиотечной OpenADC10():
Line Adress Opcode Disassembly
-> 308 00266 881543 mov.w 0x0006,0x02a8
После неё я наблюдаю уже адрес 0000
0x02a8 судя по
даташиту это ADPCFG, до записи там 0xFFFF
Почему это приводит к сбросу пока неизвестно.