Re: I2C EEPROM的控制@18F46J50
|
||||
---|---|---|---|---|
中級會員
|
LATB忘了關所以才會變成SDA端一直是HIGH的資料
我想應該是初始化時PORTB是HIGH 狀態 PORTD一開始我就有關掉,花了一天才發現 LATB重置就會HIGH
發表於: 2010/1/25 14:52
|
|||
|
Re: I2C EEPROM的控制@18F46J50
|
||||
---|---|---|---|---|
版主
|
參照:
LATB = 0; 等於 PORTB = 0; 但是: a = LATB 是不等於 a=PORTB 的。 欲知分曉,請看I/O Port 的方塊架構圖。
發表於: 2010/1/25 12:08
|
|||
|
Re: I2C EEPROM的控制@18F46J50
|
||||
---|---|---|---|---|
資深會員
|
小心..........豆腐結冰.....會死人的.....(好冷......)
發表於: 2010/1/21 18:27
|
|||
|
Re: I2C EEPROM的控制@18F46J50
|
||||
---|---|---|---|---|
中級會員
|
LATB = 0;
我撞豆腐自殺好了...
發表於: 2010/1/21 17:40
|
|||
|
Re: I2C EEPROM的控制@18F46J50
|
||||
---|---|---|---|---|
版主
|
再往下一層找,EByteWrite1( ) 函數的內容為何,是不是有些設定還是指向I2C 2 檢查一下底層的函數是不是都指到 I2C 1 的呢?
發表於: 2010/1/20 9:49
|
|||
|
Re: I2C EEPROM的控制@18F46J50
|
||||
---|---|---|---|---|
中級會員
|
ODCON3 = 0x01;
I2C_flag = EByteWrite1 (I2C_Address, EE_Address, DATABUF); 之後為下圖 我發現SSP1CON2bits.SEN = 1; 不會動作 SSP2CON2bits.SEN = 1; 卻可以設定 Attach file: (0.00 KB)
發表於: 2010/1/19 16:38
Edited by wdszd on 2010年01月19日 16:58:57
Edited by wdszd on 2010年01月19日 18:31:55 |
|||
|
Re: I2C EEPROM的控制@18F46J50
|
||||
---|---|---|---|---|
版主
|
TRISBbits.TRISB4 = 1;
TRISBbits.TRISB5 = 1; 1. 在 I2C 架構下的SCL & SDA 為 Open Drain 的架構,所以要外接提升電阻的,10K ohm OpenI2C1(MASTER,SLEW_OFF); SSP1ADD = 0x1D; //100KHz@12MHz //FOSC/(4*(SSPADD + 1)) 2. 經此設定後,SCL & SDA 這兩隻腳都要為 High 才對,圖中在沒傳送資料時, SCL 為 Low 就已經不對了。在此先設個斷點檢查一下I2C Bus 的狀態。 ODCON3 = 0x01; I2C_flag = EByteWrite1 (I2C_Address, EE_Address, DATABUF); 3. 這時用是示波器應可量到 SCL 所送出的 clock 訊號,同事 SDA 也會有變化的。檢查一下Start condiction & Data & ACK 的訊號是否符合 I2C 的規範。
發表於: 2010/1/19 13:25
|
|||
|
Re: I2C EEPROM的控制@18F46J50
|
||||
---|---|---|---|---|
資深會員
|
參照:
不正常 表示有CLOCK 但是沒資料
發表於: 2010/1/19 12:04
|
|||
My name is jan,Jan是棒的
|
||||
|
Re: I2C EEPROM的控制@18F46J50
|
||||
---|---|---|---|---|
中級會員
|
示波器上 SCL 為 CH1; SDA為CH2
這表示我的資料沒有送出去? Attach file: (0.00 KB)
發表於: 2010/1/19 11:42
|
|||
|