PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : I²C mit 24C512



Bubi_00
02.03.2007, 11:29
HI

Ich habe hier testweise für I²C Master lib von Fleury ein kleines EEprom angeschlossn. Ein PortExpander zum schreiben funktioniert einwandfrei.
Das EEProm auslesen aber leider nicht :(



int main(void)
{
unsigned char ret = 0;


USART_INIT( MYUBRR);
USART_Puts("EEPROM \n \r");
i2c_init(); // init I2C interface

/* write 0x75 to eeprom address 0x05 (Byte Write) */
ret = i2c_start(DevAdd_W); // set device address and write mode
_delay_ms(5);
if ( ret ) {
/* failed to issue start condition, possibly no device found */
i2c_stop();
USART_Puts("Start Failed");
}else {
/* issuing start condition ok, device accessible */
i2c_write(0x20); // write address = 5
_delay_ms(5);
i2c_write(0x75);
_delay_ms(5);
i2c_stop(); // set stop conditon = release bus

i2c_start_wait(DevAdd_W);
i2c_write(0x20);
_delay_ms(5);
i2c_rep_start(DevAdd_R); // set device address and read mode
_delay_ms(5);
ret = i2c_readNak(); // read one byte
i2c_stop();

USART_Puts("Read from EEPROM: ");
USART_Puts(ret);
USART_Puts("\n\r");

}

for(;;);
}


Ist größtenteils eigentlich der Beispielcode vom Peter Fleury...
Im Hypterterm ist aber folgendes zusehen



EEPROM
Read from EEPROM: †uI˜~!%R8¼¦v…¥»ÁEDDÍU„f¼‰âš§0ƒ¥Žò
`"’°Çk
“€½0$@.Ä
ˆ
Ich bin jetzt schon am timing rumspielen wie ihr seht, aber irgendwie wills ned so recht :(
Seht ihr den Fehler..
Mfg Bubi
Achja Pullups hab ich[/highlight]

Ringo
02.03.2007, 11:40
hmm
du schreibst 0x75 in adresse 5 und liest es wieder ein.

Du gibts die 0x75 dann über uart_puts aus.. vll ist das der fehler.
hab mal in einer ASCII Tabelle nachgeschaut. 0x75 entspricht 'u' oder dezimal 117. Ich würd einfach mal anstatt 0x75 eine dezimale 49(entspricht '1') reinschreiben und sie mit uart_putc ausgeben..

wollt demnächst auch mal nen EEprom zum laufen bekommen. Datenblatt habe gelesen.

MfG
Ringo

Bubi_00
06.03.2007, 12:42
So Fehler gefunden und gelöst
Das EEPROM braucht 2 Addressen eine High und eine Low, also wie ein 2 Dimensionales Array... und so ganz nebenbei hatte ich auch noch nen Fehler in meinen uart funktionen :)