我用EM78P459制作I2C通信为何仿真正常而烧录后运行不正常,高手请指点
用EM78P459AKJ-G制作I2C被控器串行通信,使用ICE 458 (VER 1.0)进行仿真,为何仿真正常,而把程序烧录到EM78P459AKJ-G后,实际运行不正常?
程序简短说明,程序长度小于1K,程序内有使用到PWM1,PWM2,ADC0,ADC1非中断方式,TCC中断,EM78P459AKJ-G作为I2C被控器件,I2C串行信号以1mS宽的负脉冲引导EM78P459AKJ-G进入/INT中断服务程序中进行接收和发送.每隔约250mS处理一次I2C串行数据传输.仿真OK,而烧录到EM78P459AKJ-G实模式运行不正常(程序运行一小段时间后出错),百思不得其解.
如有讨论需要,可提供出程序和电路原理图
EM78P459玩I2C串行通信,高手请指点,初学者请来吸收
全部回复(5)
正序查看
倒序查看
现在还没有回复呢,说说你的想法
@lin135
贴图上来看下,数据线上是否加了上位电阻呢?
I2C通信总线示意图:
500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/77/65031242433218.gif');}" onmousewheel="return imgzoom(this);">
完整电路原理图:
500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/77/65031242433420.gif');}" onmousewheel="return imgzoom(this);">
500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/77/65031242433218.gif');}" onmousewheel="return imgzoom(this);">
完整电路原理图:
500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/77/65031242433420.gif');}" onmousewheel="return imgzoom(this);">
0
回复
提示
@lin135
贴图上来看下,数据线上是否加了上位电阻呢?
打算挂接240个EM48P459软件模拟被控器件到I2C总线上, /INT线为I2C信号同步传输线,I2C主控器每次想寻址EM78P459软件模拟被控器件之前,先发出一个1mS负脉冲,EM48P459进入/INT负沿中断,等待I2C启动时序到来后进而在/INT负沿中断服程序里完成I2C传输和处理之后返回主程序继续做本机的事务.
I2C总线上拉电阻R101 R102 R103 联线组网使用时,取用阻值为1MΩ,现在仅主控器和单个被控器编程调试时,此3个电阻取用4.7KΩ.
I2C主控器是采用PIC16F877A来制作.
I2C总线上拉电阻R101 R102 R103 联线组网使用时,取用阻值为1MΩ,现在仅主控器和单个被控器编程调试时,此3个电阻取用4.7KΩ.
I2C主控器是采用PIC16F877A来制作.
0
回复
提示