• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

EM78P459玩I2C串行通信,高手请指点,初学者请来吸收

我用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实模式运行不正常(程序运行一小段时间后出错),百思不得其解.
如有讨论需要,可提供出程序和电路原理图
全部回复(5)
正序查看
倒序查看
lin135
LV.5
2
2009-05-15 18:17
贴图上来看下,
数据线上是否加了上位电阻呢?
0
回复
hhg1
LV.3
3
2009-05-16 08:23
@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);">
0
回复
hhg1
LV.3
4
2009-05-16 08:51
@lin135
贴图上来看下,数据线上是否加了上位电阻呢?
打算挂接240个EM48P459软件模拟被控器件到I2C总线上, /INT线为I2C信号同步传输线,I2C主控器每次想寻址EM78P459软件模拟被控器件之前,先发出一个1mS负脉冲,EM48P459进入/INT负沿中断,等待I2C启动时序到来后进而在/INT负沿中断服程序里完成I2C传输和处理之后返回主程序继续做本机的事务.
I2C总线上拉电阻R101 R102 R103 联线组网使用时,取用阻值为1MΩ,现在仅主控器和单个被控器编程调试时,此3个电阻取用4.7KΩ.
I2C主控器是采用PIC16F877A来制作.
0
回复
hhg1
LV.3
5
2009-05-16 08:54
@lin135
贴图上来看下,数据线上是否加了上位电阻呢?
以上文字输入有错字:EM48P459应改为EM78P459
0
回复
hhg1
LV.3
6
2009-05-16 09:09
@lin135
贴图上来看下,数据线上是否加了上位电阻呢?
这是一组由240个通道组成的电子负载,每一个通道可统一控制负载范围在0到5A.
EM78P459程序里有用到PWM1,PWM2,ADC0,ADC1非中断方式,TCC中断.
主控器是采用PIC16F877A来制作,轮流扫描显示各负载通道的电压电流值,主控器上有键盘,可通过操作键盘来完成整机240个电子负载的各种功能设定.
0
回复