ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
917553 Топик полностью
abivan (23.04.2019 16:46, просмотров: 380) ответил AlexBi на PIC24HJ256GP206A и ошибка значения указателя стека. Вроде бы хорошая вещь, можно контролировать выход стека за границы. Но, если в указатель стека записать что-то, выходящее за рамки физического ОЗУ, то вместо прерывания (и перехода на обработчик
вот мои обработчики  void __attribute__((interrupt, no_auto_psv)) _StackError (void){ t_Trap Trap; Trap.wType=1; Trap.wSP=WREG15; Trap.wSPLIM=SPLIM; DB_PutPar(ID_PAR_TRAP, (ptr)&Trap); TRISD=0xF00; LATD=0x20; while(1) Nop(); /* при переполнении стека задачи попадем сюда */ } void __attribute__((interrupt, no_auto_psv)) _MathError (void){ t_Trap Trap; Trap.wType=2; Trap.wSP=WREG15; Trap.wSPLIM=SPLIM; DB_PutPar(ID_PAR_TRAP, (ptr)&Trap); TRISD=0xF00; LATD=0x28; while(1) Nop(); } void __attribute__((interrupt, no_auto_psv)) _AddressError (void){ t_Trap Trap; Trap.wType=3; Trap.wSP=WREG15; Trap.wSPLIM=SPLIM; DB_PutPar(ID_PAR_TRAP, (ptr)&Trap); TRISD=0xF00; LATD=0x30; while(1) Nop(); } void __attribute__((interrupt, no_auto_psv)) _OscillatorFail (void){ t_Trap Trap; Trap.wType=4; Trap.wSP=WREG15; Trap.wSPLIM=SPLIM; DB_PutPar(ID_PAR_TRAP, (ptr)&Trap); TRISD=0xF00; LATD=0x38; while(1) Nop(); }