Re: codeoffset 問題
|
||||
---|---|---|---|---|
資深會員
|
如果您只單純將Application做code offset到0x600, 也不和Bootloader Project combine在一起的話, 那就要在您的Application自行remap Reset Vector到0x600.
請問您是怎麼Remap中斷的?
發表於: 2020/6/4 17:00
|
|||
|
Re: codeoffset 問題
|
||||
---|---|---|---|---|
初級會員
|
先回到我初始的問題, 先不要和 bootloader 挷一起問好了
單純的application(無bootloader), 有用到中斷 設定了 codeoffset (如0x600)後, 中斷就不能用了 在沒設offset 前 中斷是OK的 有無什麼方法 讓offset 後, 中斷能正常使用???
發表於: 2020/6/4 15:34
|
|||
|
Re: codeoffset 問題
|
||||
---|---|---|---|---|
初級會員
|
Bootloader project 有設定 ROM Range: 0-6FF 嗎? => 有
已有參考 該文件的做法了 你意思是要 1. 先將Bootloader project 有設定 ROM Range: 0-6FF 2. APPLICATION 設OFFSET 到0x700 3. 將Bootloader 及 APPLICATION 燒進 PIC16F18345 當程式 跑在 APPLICATION 時, 在APPLICATION 的 void __interrupt() INTERRUPT_InterruptManager (void) 就能使用... 有I2C 的中斷, 就可以跑到這段CODE 嗎???
發表於: 2020/6/4 9:35
|
|||
|
Re: codeoffset 問題
|
||||
---|---|---|---|---|
資深會員
|
請問一下您的Bootloader project有設定ROM Range: 0-6FF嗎?
您可以參考一下下面Bootloader Generator User Guide. http://ww1.microchip.com/downloads/en/DeviceDoc/40001779B.pdf Attach file: (0.00 KB)
發表於: 2020/6/4 9:27
|
|||
|
codeoffset 問題
|
||||
---|---|---|---|---|
初級會員
|
MCU: PIC16F18345
我設定 CODEODDSET=0x700 之後 下I2c 就跑不到 這裡.. void __interrupt() INTERRUPT_InterruptManager (void) { // interrupt handler if(INTCONbits.PEIE == 1) { if(PIE1bits.BCL1IE == 1 && PIR1bits.BCL1IF == 1) { MSSP1_InterruptHandler(); } else if(PIE1bits.SSP1IE == 1 && PIR1bits.SSP1IF == 1) { MSSP1_InterruptHandler(); if (1==SSP1STATbits.D_nA && 0==SSP1STATbits.R_nW ) { if (i2c1RdData==0xAA) { enterBootLoader=1; } 請問 設定完 codeoffset 後, Reset_Vector 就移到 0x700?? Interrupt_Vector 也會同步移到 0x704 ?? 若是的話.. 是不是還需什麼設定, 才能讓 "void __interrupt() INTERRUPT_InterruptManager (void)" 工作正常???
發表於: 2020/6/3 17:47
|
|||
|