初級會員
Joined
: 2005/9/6 16:20 最後登入時間
: 2006/12/12 14:17
Group:
註冊會員
Level : 4 HP : 0 / 78 MP : 9 / 4262 EXP : 12
|
各位好! 我在用I2C Slave模式时,只要中断打开PC指针就跑飞,具体情况如下: 用的是P18F452, I2C 工作在Slave 模式, 就用了这一个中断,具体如下: #pragma code InterruptVectoHigh=0x0008 void InterruptVectorHigh (void) { _asm goto InterruptHandlerHigh _endasm }
#pragma code #pragma interrupt InterruptHandlerHigh void InterruptHandlerHigh () { if((PIE1bits.SSPIE)&&(PIR1bits.SSPIF)) { I2CSlaveHandler(); PIR1bits.SSPIF=0;
} } 不知道我写的中断是否对的.在I2CSlaveHandler()里,主要就是通过SSPSTAT判断是什么事件就做相应的处理. 问题就是,只要中断启用,PC指针就跑飞了,有时跑到没有调用的程序里,甚至跑到剩余的ROM空间了, 我把上面的程序改到Main()做查询, 就很正常,PC指针也不乱, SCL,SDA,以及其他的监测信号也很正常.具体如下: main() { // ..... .... while(1) { if(PIR1bits.SSPIF) { I2CSlaveHandler(); PIR1bits.SSPIF=0;
} ............ .............. } }
还有这样一个情况须说明,就是I2C 中断会很频繁,有可能一出就要进入中断.
發表於: 2006/10/13 9:30
|