Re: 請問可能造成 TRAPS_ADDRESS_ERR 的原因?

作者 sarsgg444 於 2018年11月26日 16:29:31
後來多測試了幾次

發生 traps_error 時

INICON1 一共有兩個 ERROR 被 SET

分別是 ADDRERR 與 STKERR

發生的時間點是在程式重新 Init 時( ps:不是斷電重跑,我程式中一個條件trigger時,會 goto 到 Init 的那行開始 ),設定完中斷優先、周邊後,INTERRUPT_GlobalEnable()時發生的

進入 traps_error 後

會先進入


void ERROR_HANDLER_NORETURN _AddressError
(void)
{
    
errLoc=getErrLoc();
    
INTCON1bits.ADDRERR = 0;  //Clear the trap flag
    
TRAPS_halt_on_error(TRAPS_ADDRESS_ERR);
}


errLoc 的值為 0xFFFD

但一直無法進入


void ERROR_HANDLER_NORETURN _StackError
(void)
{
    
/* We use a failsafe stack: the presence of a stack-pointer error
     * means that we cannot trust the stack to operate correctly unless
     * we set the stack pointer to a safe place.
     */
    
errLoc=getErrLoc();
    
use_failsafe_stack();
    
INTCON1bits.STKERR = 0;  //Clear the trap flag
    
TRAPS_halt_on_error(TRAPS_STACK_ERR);
}


接著 Debug 就卡住不動了

getErrLoc 是 google 搜來的

內容似乎是印出進入 traps_error 前的 pc 位置(這點我還需要些時間翻datasheet確定)

附加檔案:



jpg  2018-11-26_153401.jpg (466.45 KB)
50946_5bfbaeeb8abf6.jpg 1920X1080 px

來自: http://www.microchip.com.tw/newbb/viewtopic.php?forum=2&topic_id=22470&post_id=78924