ВходНаше всё Теги codebook PARTS Поиск Опросы Закон Понедельник
13 июля
/961844
Топик полностью
RxTx (30.11.2019 17:57 - 18:07, просмотров: 29) в ответ на Caxapa - сайт для публикации ЛЮБЫХ потоков сознания. Ему уж лет 16. Какой компилятор и версия - видимо, С30, старый, как гавно мамонта с кучей багов? Не надо весь код сюда тащить, для начала будет достаточно инициализации ВСЕЙ периферии - автор: MBedder
Контроллер наконец-то работает в отладке (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 Почему это приводит к сбросу пока неизвестно.
Кварцевание и карантин
Ответить
Ответы