Estoy utilizando PIC18F13K22 y Microchip's compilador C18 en MPLABX. El PIC siguió reiniciando, cuando estaba a punto de saltar a la rutina de servicio de interrupción (ISR). Pude rastrear el problema hasta la declaración de una matriz:
UINT16 rom periods[] = {64000,59412,55438,51962, ...} // 1024 Values
Si reduzco el tamaño de la matriz a unos pocos elementos, el PIC se ejecuta sin reiniciarse continuamente.
Ahora me pregunto por qué la matriz grande provoca un reinicio. Y aún más interesante para mí: ¿puedo declarar de alguna manera un conjunto de datos que contenga estos 1024 valores?
La información solicitada de la sección:
Section Type Address Location Size(Bytes)
--------- --------- --------- --------- ---------
_entry_scn code 0x000000 program 0x000006
.cinit romdata 0x000006 program 0x000002
.romdata_Main.o romdata 0x000008 program 0x000800
.code_Main.o code 0x000808 program 0x000124
_cinit_scn code 0x00092c program 0x00009e
.code_Debug.o code 0x0009ca program 0x000080
.code_Signal.o code 0x000a4a program 0x000040
PROG code 0x000a8a program 0x00003c
.code_t0open.o code 0x000ac6 program 0x000038
.code_ADC.o code 0x000afe program 0x000032
.stringtable romdata 0x000b30 program 0x000026
.code code 0x000b56 program 0x000020
_startup_scn code 0x000b76 program 0x00001c
.code___init.o code 0x000b92 program 0x000002
.romdata_t0open.o romdata 0x000b94 program 0x000000
.idata___init.o_i romdata 0x000b94 program 0x000000
.idata_t0open.o_i romdata 0x000b94 program 0x000000
.romdata_Debug.o romdata 0x000b94 program 0x000000
.idata_Debug.o_i romdata 0x000b94 program 0x000000
.romdata___init.o romdata 0x000b94 program 0x000000
.romdata_Signal.o romdata 0x000b94 program 0x000000
.idata_Signal.o_i romdata 0x000b94 program 0x000000
.idata_Main.o_i romdata 0x000b94 program 0x000000
.romdata_ADC.o romdata 0x000b94 program 0x000000
.idata_ADC.o_i romdata 0x000b94 program 0x000000
.code_c018i.o code 0x000b94 program 0x000000
.romdata_c018i.o romdata 0x000b94 program 0x000000
.idata_c018i.o_i romdata 0x000b94 program 0x000000
.config_300001_Main.o romdata 0x300001 program 0x000001
.config_300002_Main.o romdata 0x300002 program 0x000001
.config_300003_Main.o romdata 0x300003 program 0x000001
.config_300005_Main.o romdata 0x300005 program 0x000001
.config_300006_Main.o romdata 0x300006 program 0x000001
MATH_DATA udata 0x000000 data 0x000014
.tmpdata udata 0x000014 data 0x000000
.stack udata 0x000060 data 0x000050
.udata_c018i.o udata 0x0000b0 data 0x00000a
.udata_Signal.o udata 0x0000ba data 0x000002
.idata_c018i.o idata 0x0000bc data 0x000000
.udata_ADC.o udata 0x0000bc data 0x000000
.idata_ADC.o idata 0x0000bc data 0x000000
.udata_Main.o udata 0x0000bc data 0x000000
.idata_Main.o idata 0x0000bc data 0x000000
.idata_Signal.o idata 0x0000bc data 0x000000
.udata_Debug.o udata 0x0000bc data 0x000000
.idata_Debug.o idata 0x0000bc data 0x000000
.udata_t0open.o udata 0x0000bc data 0x000000
.idata_t0open.o idata 0x0000bc data 0x000000
.udata___init.o udata 0x0000bc data 0x000000
.idata___init.o idata 0x0000bc data 0x000000
SFR_UNBANKED0 udata 0x000f68 data 0x000098