本帖最后由 forthlab 于 2016-6-29 16:12 编辑
要测试IIC的代码,
环境:
ke06z128的freedom测试板,
测试MMA8451倾角传感器,是IIC接口
启动processor expert,添加IIC组件,主要设置:
禁止中断,SCL4.688K
设置中发现有个小三角警告:polling trials:32000;修改其他值器没法消除警告,但曾经代码可以执行
主要代码如下:
for(;;){
n = MMA8451_SelectSlave(0x1d); //IIC地址
n = MMA8451_SendBlock("\x0d\x1d", 2, &i); //0xd 是ID寄存器的地址 ,在这一步跳到event。c
n = MMA8451_RecvChar(&c); //取ID,应该是0x1a
n = MMA8451_SendStop();
}
单步执行后,跳到event.c
/*
** ===================================================================
** Method : UnhandledInterrupt (component MKE06Z128LK4)
**
** Description :
** This ISR services the unhandled common interrupt.
** This method is internal. It is used by Processor Expert only.
** ===================================================================
*/
PE_ISR(UnhandledInterrupt);
PE_ISR(UnhandledInterrupt)
{
PE_DEBUGHALT();
}
补充说明一下:
1. 这个程序我一开始运行,是可以运行的,也能取到MMA8451的ID,偶尔会出问题,包括用中断的模式也是可以的;但运行不稳定,于是我重新建项目;只保留主要代码;
2. IIC我实际用肯定是要用中断的,现在先测试不用中断的模式;问题一个一个解决;
请教一下,我的PE组件的IIC代码问题在哪里?
|