Hallo Ich habe ein I2C EEPROM (M24M02-DR) von ST. Leider check ich nicht auf welcher I2C Adresse das EEPROM hört. Vieleicht hat das schon mal jemand verwendet. Soll mit einem Atmega angesteuert werden. Schönen Abend Christoph
Die Adressen sind: 0xA0, 0xA2, 0xA4, 0xA6 (bei E2=0) 0xA8, 0xAA, 0xAC, 0xAE (bei E2=1) (Achtung Adressen schon einmal nach links geschiftet) Auf jeder Adresse kannst du auf 64kByte zugreifen. Gruß Oliver
OK Danke schonmal Noch eine kurze Frage. Write Control kann die ganze Zeit auf LOW sein. Bekomme ich nur den Wert 255 ausgelesen.
1 | #define F_CPU 16000000
|
2 | #include <avr/io.h> |
3 | #include <mk3/MK3_2560_TWI.h> |
4 | #include <mk3/MK3_2560_LCD.h> |
5 | #include <avr/delay.h> |
6 | int main(void) |
7 | {
|
8 | char n=0; |
9 | MK3_INIT_LCD(); |
10 | MK3_LCD_CLEAR(); |
11 | MK3_INIT_TWI(); |
12 | MK3_TWI_START(); |
13 | MK3_TWI_SEND(0xA0,false); // ADRESSE DEVICE |
14 | MK3_TWI_SEND(0x00,false); // REGISTER ADRESSE |
15 | MK3_TWI_SEND(0x55,false); //DATEN |
16 | MK3_TWI_STOP(); |
17 | |
18 | |
19 | _delay_ms(1000); |
20 | MK3_TWI_START(); |
21 | MK3_TWI_SEND(0xA0,false); // ADRESSE DEVICE |
22 | MK3_TWI_SEND(0x00,false); // REGISTER ADRESSE |
23 | MK3_TWI_START(); |
24 | MK3_TWI_SEND(0xA0+1,false); Daten auslesen |
25 | n=MK3_TWI_READ(false); |
26 | MK3_TWI_STOP(); |
27 | |
28 | MK3_LCD_PRINT_UINT(n); |
29 | while(1) |
30 | {
|
31 | |
32 | }
|
33 | }
|
Du machst Murks. Schau ins Datenblatt. Da steht drin, wie man mit dem EEPROM reden muss. Gruß Oliver
Ok danke. Klappt nun soweit. Noch eine kurze Frage. Ich muss ein Array mit 1026 Werten abspeichern.Ich kann ja max 256 Bytes nacheinander schreiben. Muss ich nach 256 Bytes das WC kurz auf High ziehen oder wie läuft der weiter Schreibvorgang ab? Habe den WC PIN dauernd auf LOW
@ Christoph B. (christoph_b) >Ich muss ein Array mit 1026 Werten abspeichern.Ich kann ja max 256 Bytes >nacheinander schreiben. Eben, also musst du blockweise schreiben, aka Page mode. > Muss ich nach 256 Bytes das WC kurz auf High Nein. >ziehen oder wie läuft der weiter Schreibvorgang ab? Datenblock in den EEPROM schreiben, I2C_STOP, dann schreibt er und reagiert erst wieder auf I2C Kommandos, wenn er fertig geschrieben hat. MfG Falk
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.