 abivan (23.04.2019 16:46, просмотров: 478) ответил AlexBi на PIC24HJ256GP206A и ошибка значения указателя стека. Вроде бы хорошая вещь, можно контролировать выход стека за границы. Но, если в указатель стека записать что-то, выходящее за рамки физического ОЗУ, то вместо прерывания (и перехода на обработчик
 abivan (23.04.2019 16:46, просмотров: 478) ответил 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();
}