Forum: Mikrocontroller und Digitale Elektronik EEprom auslesen mit ATmega32u4


von (unknown) (Gast)


Angehängte Dateien:

Lesenswert?

Hallo, ich brauche im Rahmen meiner Diplomarbeit einen EEprom um 
verschiederne Daten von Sensoren zu speichern.

Dabei verwende ich einen µC ATmega32U4 und einen EEprom 24AA1026 mit 1MB 
Speicher.
--> Datenblatt: 
http://docs-europe.electrocomponents.com/webdocs/137d/0900766b8137db20.pdf

Beschaltung des EEproms:
Pin 1 - Pin 4 wurden auf GND geschalten
Pin 5 Datenleitung inkl. 3k9 PullUp
Pin 6 Clock inkl. 3k9 PullUp (100kHz)
Pin 7 GND
Pin 8 Vcc

Das schreiben von Bytes sollte grundsätzlich funktionieren, aber kann 
dies nur bedingt überprüfen, da ich es bis jetzt noch nicht geschafft 
habe Bytes auszulesen.
Wenn ich versuche ein Byte auszulesen kommt immer der Wert 255 zurück, 
egal welche Word Adresse ich abfrage..

Im Anhang befinden sich die main.c und die EEprom.h, welche ich selbst 
geschrieben habe.

Um die Werte auszugeben habe ich ein LCD verwendet.

Vllt findet wer den Fehler bzw. kann mit weiter helfen :d

Danke im Vorraus

von Wolfgang (Gast)


Lesenswert?

Florian F. schrieb:
> Das schreiben von Bytes sollte grundsätzlich funktionieren, aber kann
> dies nur bedingt überprüfen, da ich es bis jetzt noch nicht geschafft
> habe Bytes auszulesen.

"Sollte" ist bei soetwas sehr vage.

Bekommst du vom EEPROM ein Ack auf dem Bus?
Wenn 'ja', dann kann man weiter sehen.

von (unknown) (Gast)


Lesenswert?

Wolfgang schrieb:
> Florian F. schrieb:
>> Das schreiben von Bytes sollte grundsätzlich funktionieren, aber kann
>> dies nur bedingt überprüfen, da ich es bis jetzt noch nicht geschafft
>> habe Bytes auszulesen.
>
> "Sollte" ist bei soetwas sehr vage.
>
> Bekommst du vom EEPROM ein Ack auf dem Bus?
> Wenn 'ja', dann kann man weiter sehen.

Ja ich bekomme ein ACK zurück, deshalb bin ich davon ausgegangen, dass 
die write Funktion funktioniert.

von Stefan E. (sternst)


Lesenswert?

Florian F. schrieb:
> Ja ich bekomme ein ACK zurück, deshalb bin ich davon ausgegangen, dass
> die write Funktion funktioniert.

Woher weißt du das? Ich sehe im Lese- bzw. Schreib-Code keinen einzigen 
Zugriff auf TWSR.

Davon abgesehen, die ganzen |= bei den TWCR-Zugriffen sind Quatsch. So 
wird z.B. TWSTA in deinem Code nicht wieder zurückgesetzt.

von (unknown) (Gast)


Lesenswert?

Stefan E. schrieb:
> Florian F. schrieb:
>> Ja ich bekomme ein ACK zurück, deshalb bin ich davon ausgegangen, dass
>> die write Funktion funktioniert.
>
> Woher weißt du das? Ich sehe im Lese- bzw. Schreib-Code keinen einzigen
> Zugriff auf TWSR.
>
> Davon abgesehen, die ganzen |= bei den TWCR-Zugriffen sind Quatsch. So
> wird z.B. TWSTA in deinem Code nicht wieder zurückgesetzt.

Danke für deine Hilfe, es ist an den ganzen |= gelegen :D!

von Marco H. (damarco)


Lesenswert?

Der ganze Code ist auch irrend wie Murks. Denn will niemand benutzen ;).

Versuche vernünftige read und write Funktionen zu programmieren. 
Vorallen unter dem Aspekt wie man solche Speicher organisiert.

Sonst sind das nicht die einzigen Probleme die Auftauchen, für ein 
Stadium der Diplom Arbeit ist der Code schon sehr dürftig ;). Da er die 
Prinzipien wie erwähnt gar nicht berücksichtigt. Die Struktur ist auch 
... naja ...

von (unknown) (Gast)


Lesenswert?

Marco H. schrieb:
> Der ganze Code ist auch irrend wie Murks. Denn will niemand benutzen ;).
>
> Versuche vernünftige read und write Funktionen zu programmieren.
> Vorallen unter dem Aspekt wie man solche Speicher organisiert.
>
> Sonst sind das nicht die einzigen Probleme die Auftauchen, für ein
> Stadium der Diplom Arbeit ist der Code schon sehr dürftig ;). Da er die
> Prinzipien wie erwähnt gar nicht berücksichtigt.

Ja ich weiß, der Code dient rein für Testzwecke :D

von Marco H. (damarco)


Lesenswert?

Naja glaube ich nicht da du den unterschied zwischen header Dateien usw. 
und was der Compiler daraus macht nicht verstanden hast. Auch C nicht ? 
Du backst dir irgend etwas zusammen und verstehst es nicht. So hat es 
den Anschein, für ein Bildungsprojekt finde ich das den falschen Ansatz. 
Kein Wunder das der BER nie aufmacht ...

Das dumme ist nur durch herum Probieren kommt man ganz selten zum Ziel. 
Da muss man sich eben um Literatur bemühen.

von Wolfgang (Gast)


Lesenswert?

Florian F. schrieb:
> Ja ich weiß, der Code dient rein für Testzwecke :D

Nur für Testzwecke kann man das schneller unter der Arduino-IDE 
zusammenbauen. Aus den Beispiele zur Wire Lib ist das in wenigen Minuten 
zurechtgebogen.

von (unknown) (Gast)


Lesenswert?

Danke für den Tipp

von Marco H. (damarco)


Lesenswert?

und es funktioniert sogar wenn der bootloader wieder per ISP drauf 
kommt. Da ich vermute das die IDE den Code anders gelinkt hat und nun 
ist er weg ;)

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.