Re: 用MCC gen 出的 bootloader code 無法進入 __interrupt() INTERRUPT_InterruptManager () 問題
|
||||
---|---|---|---|---|
資深會員
|
MCC所產生的UART Bootloader並沒有使用Interrupt mode, 而是使用polling的方式, MCC已經將Reset Vector與Interrupt Vector幫您Remap到Application的起始位址(0x700)了.
所以您在Bootloader FW無法使用中斷. 因為開中斷的風險是當Flash在做Erase或是Write時, 萬一中斷發生了, 會導致Flash操作異常. 所以UART Bootloader才使用polling mode, 再者也不佔用Application會使用到PIC16的唯一中斷向量. 除非您的Application code沒有使用到中斷, 就可以再Bootloader使用中斷.(但記得把那段Remapped Reset Vector & Interrupt Vector的code註解掉) 檢查一下GIE 與 PIE是否有Enable.
發表於: 2020/6/4 12:16
|
|||
|
Re: 用MCC gen 出的 bootloader code 無法進入 __interrupt() INTERRUPT_InterruptManager () 問題
|
||||
---|---|---|---|---|
初級會員
|
Bootloader and Application 都會用到中斷
想請問 1. PIC16F18345 的I2C 一定要使用 中斷 的方式嗎? 2. Bootloader and Application 能同時使用中斷嗎? 3. 如何將 中斷 vector 重新指定新的位址??
發表於: 2020/6/4 15:12
|
|||
|
Re: 用MCC gen 出的 bootloader code 無法進入 __interrupt() INTERRUPT_InterruptManager () 問題
|
||||
---|---|---|---|---|
資深會員
|
1. MCC Generate出來的I2C slave default是使用中斷.
2. PIC16F系列只有一個中斷向量, 只能給Bootloader或是Application其中一個使用 3. 問題3, 在MCC generate的Bootloader code就有了~ 看一下附圖. 我剛剛測試是可以的~ 您試一下! Attach file: (0.00 KB)
發表於: 2020/6/4 17:07
|
|||
|