我用EM78P459制作I2C通信為何仿真正常而燒錄后運(yùn)行不正常,高手請指點(diǎn)
用EM78P459AKJ-G制作I2C被控器串行通信,使用ICE 458 (VER 1.0)進(jìn)行仿真,為何仿真正常,而把程序燒錄到EM78P459AKJ-G后,實(shí)際運(yùn)行不正常?
程序簡短說明,程序長度小于1K,程序內(nèi)有使用到PWM1,PWM2,ADC0,ADC1非中斷方式,TCC中斷,EM78P459AKJ-G作為I2C被控器件,I2C串行信號以1mS寬的負(fù)脈沖引導(dǎo)EM78P459AKJ-G進(jìn)入/INT中斷服務(wù)程序中進(jìn)行接收和發(fā)送.每隔約250mS處理一次I2C串行數(shù)據(jù)傳輸.仿真OK,而燒錄到EM78P459AKJ-G實(shí)模式運(yùn)行不正常(程序運(yùn)行一小段時(shí)間后出錯(cuò)),百思不得其解.
如有討論需要,可提供出程序和電路原理圖
EM78P459玩I2C串行通信,高手請指點(diǎn),初學(xué)者請來吸收
全部回復(fù)(5)
正序查看
倒序查看
@lin135
貼圖上來看下,數(shù)據(jù)線上是否加了上位電阻呢?
I2C通信總線示意圖:
500) {this.resized=true; this.width=500; this.alt='這是一張縮略圖,點(diǎn)擊可放大。\n按住CTRL,滾動鼠標(biāo)滾輪可自由縮放';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='這是一張縮略圖,點(diǎn)擊可放大。\n按住CTRL,滾動鼠標(biāo)滾輪可自由縮放';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
回復(fù)
@lin135
貼圖上來看下,數(shù)據(jù)線上是否加了上位電阻呢?
打算掛接240個(gè)EM48P459軟件模擬被控器件到I2C總線上, /INT線為I2C信號同步傳輸線,I2C主控器每次想尋址EM78P459軟件模擬被控器件之前,先發(fā)出一個(gè)1mS負(fù)脈沖,EM48P459進(jìn)入/INT負(fù)沿中斷,等待I2C啟動時(shí)序到來后進(jìn)而在/INT負(fù)沿中斷服程序里完成I2C傳輸和處理之后返回主程序繼續(xù)做本機(jī)的事務(wù).
I2C總線上拉電阻R101 R102 R103 聯(lián)線組網(wǎng)使用時(shí),取用阻值為1MΩ,現(xiàn)在僅主控器和單個(gè)被控器編程調(diào)試時(shí),此3個(gè)電阻取用4.7KΩ.
I2C主控器是采用PIC16F877A來制作.
I2C總線上拉電阻R101 R102 R103 聯(lián)線組網(wǎng)使用時(shí),取用阻值為1MΩ,現(xiàn)在僅主控器和單個(gè)被控器編程調(diào)試時(shí),此3個(gè)電阻取用4.7KΩ.
I2C主控器是采用PIC16F877A來制作.
0
回復(fù)