Forum: Mikrocontroller und Digitale Elektronik mega32 und 24C16


von mc-kalabok (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich versuche ein 24C16 EEPROM über TWI zu beschreiben und den Wert 
wieder auszulesen. Das ganze soll in erster Linie der Übung im Umgang 
mit TWI dienen. Leider habe ich gleich das erste Problem. Ich schreibe 
den Wert 0x2F in die Adresse 0x00, lese dann das EEPROM und möchte 
diesen Wert dann binär über 8 LEDs darstellen. Das Schreiben scheint 
noch zu klappen (zumindestens steht es im Statusregister 0x28). Beim 
Auslesen ist meine letzte Meldung im Statusregister 0x40 (SLA+R has been 
transmitted; ACK has been received) im TWDR steht allerdings dann immer 
noch die Adresse vom EEPROM+R (01010001). Habe sowohl CURRENT ADRESS 
READ wie RANDOM ADRESS READ probiert alles scheint tadellos abzulaufen 
bis der mega das Byte vom EEPROM empfangen sollte..... Es bleibt immer 
die Adresse vom 24c16 im TWDR stehen.....
Hat einer von euch ne Idee woran das liegen könnte?

von hp-freund (Gast)


Lesenswert?

Wie sind die A0..A2 und WP Pins beschaltet?

von K. M. (mc-kalabok)


Lesenswert?

Also A0,A1,A2 und WP(WC) liegen alle auf Masse, womit sich die Adresse 
1010000+R/W ergeben- und ein beschreiben jederzeit möglich sein sollte 
oder liege ich da jetzt falsch?

von hp-freund (Gast)


Lesenswert?

Also wenn die Pullup Widerstände auch dran sind sollte das in Ordnung 
sein.

Ich würde allerdings von Anfang an das Programm übersichtlicher in 
Funktionen gliedern.

Hier:

http://www.avrbeginners.net/interfacing/24C16/24C16.html

ist ein schönes Beispiel dafür. Hat im Text allerdings auch einen 
Fehler, deshalb am Besten gleich den C Code am Ende mit dazu anschauen 
und die LCD Funktionen durch die LED Ausgabe ersetzen.

...
hp-freund

von Justus S. (jussa)


Lesenswert?

vielleicht einfach mal die TWI-Library von Fleury versuchen

von mc-kalabok (Gast)


Lesenswert?

Also mit der TWI-Library von Fleury funktioniert es einwandfrei, ich 
wollte es halt selbst probieren um das ganze zu verstehen. Verstehe ich 
das richtig das ich den 24C16 nur jeweils mit 2KByte beschreiben kann? 
(abhängig von E0,E1,E2) das ergibt ja dann 2^3= 8 x 2K = 16K somit ist 
nur ein 24C16 an einem I2C Bus möglich, sehe ich das richtig?

von Bernadette (Gast)


Lesenswert?

ja

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
Noch kein Account? Hier anmelden.