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 () 問題
|
||||
---|---|---|---|---|
資深會員
|
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
|
|||
|
用MCC gen 出的 bootloader code 無法進入 __interrupt() INTERRUPT_InterruptManager () 問題
|
||||
---|---|---|---|---|
初級會員
|
MCU: PIC16F18345
用MCC gen 出的 bootloader code 是接受UART CMD, 我想修改接收 I2C CMD 的方式, (因此再由MCC gen 出 I2C 的 code) 但bootloader 的code , 當 PIC16F18345 接收到I2C 時, 沒跑進 __interrupt() INTERRUPT_InterruptManager () { }.. 請問 1. MCC bootloader code 是不是將 INTERRUPT_VECTOR 移到其他位置? 2. 若要將 MCC bootloader code 能接I2C 且進到__interrupt() INTERRUPT_InterruptManager () { }.. 要如何修改??
發表於: 2020/6/4 11:56
|
|||
|