|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
設(shè)計(jì)問題請教 |
| 作者:羽翔 欄目:單片機(jī) |
我用PIC16C56芯片實(shí)現(xiàn)I2C slave模式,其中需檢測一start信號,波形如下: SDA------------------- | | ------------------------ SCL---------------------------------- | | --------- 在SCL高電平期間,如果檢測到有一SDA的下降沿,就為start信號 由于56芯片沒有中斷功能,我將RTCC腳和RB的第0腳短接,并和MASTER方的SCL腳相連,用來檢測SCL的上升沿和低電平,RB的第1腳和MASTER的SDA相連,其子程序如下: DETECTSTART INCF LFSR30,F DETECTSCL BTFSS RTCC,0 ; high? GOTO DETECTSCL BTFSS RB,SDA GOTO DETECTSCL SDA0 BTFSS RB,SCL GOTO DETECTSCL BTFSC RB,SDA ; SDA goes low during SCL high? GOTO SDA0 CLRF RTCC RETLW 0 可是檢測的時(shí)候卻有一些誤判,不知各位DX有何高見,有什么辦法可以解決,請賜教! * - 本貼最后修改時(shí)間:2003-6-4 10:05:02 修改者:羽翔 |
| 2樓: | >>參與討論 |
| 作者: 羽翔 于 2003/6/4 9:51:00 發(fā)布:
怎么沒人回答? 幫幫忙啦! |
|
| 3樓: | >>參與討論 |
| 作者: 羽翔 于 2003/6/4 10:14:00 發(fā)布:
哎! 全部是我自言自語,難道這里就沒高手嗎? |
|
| 4樓: | >>參與討論 |
| 作者: 張明峰 于 2003/6/4 10:29:00 發(fā)布:
各有方法不同 沒有時(shí)間去分析你用TMR0(RTCC)測IIC總線START條件的玄機(jī)。要是我,最簡單的方法就象下面的代碼所示: DETECTSTART movf PORTB,w ;讀PORTB andlw b'11' ;只關(guān)心RB1/0 xorlw b'11' ; skpz ;RB1/0 = 11 goto DETECTSTART ;等待IIC總線為Idle ;等待START條件 WAIT_START movf PORTB,w ;讀PORTB andlw b'11' ;只關(guān)心RB1/0 xorlw b'01' ; skpnz ;RB1/0 != 01 retlw 0 ;START條件滿足,結(jié)束 xorlw b'01'^b'11' ;RB1/0 = 11? skpnz goto WAIT_START ;等待IIC總線產(chǎn)生START goto DETECTSTART ;RB1/0既不時(shí)11也不是01,重新開始 |
|
| 5樓: | >>參與討論 |
| 作者: 羽翔 于 2003/6/4 11:10:00 發(fā)布:
RE:張明峰 非常感謝你的回答,我馬上就去試一下。 我用RTCC主要是考慮到這個(gè)引腳是SMT輸入,可以濾波(用于工業(yè)控制,要求抗干擾性強(qiáng)),省卻了幾條濾波語句(要與IIC的MASTER方速度匹配,語句多了速度就跟不上了),再者是因?yàn)橥ㄟ^直接檢測寄存器RTCC的第0位就可知道RTCC腳上有沒有來一個(gè)上升沿。 |
|
| 6樓: | >>參與討論 |
| 作者: 羽翔 于 2003/6/5 10:41:00 發(fā)布:
還有沒有誰能給點(diǎn)意見啊 |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |