Forum: Mikrocontroller und Digitale Elektronik EEPROM per SPI lesen!


von Izoard (Gast)


Lesenswert?

Ich bin daran, das EEPROM AT25256 von Atmel über die SPI (Hardware)
Schnittstelle anzusprechen!

Meine Frage ist:

Wie kann ich das Byte vom EEPROM lesen!
Muss man dann der uC (8515) als Slave initialisieren?

Jetzt habe ich es so gemacht:

1. CS Leitung LOW
2. Read OP-Code übermitteln
3. High Adresse übermitteln
4. Low Adresse übermitteln
5. -> Jetzt will ich den Wert vom EEPROM lesen!

das habe ich so realisiert:

variable = SPDR;
while (!(SPSR & (1<<SPIF)));   // warten bis SPI übermittlung komplett

Leider funktioniert es so nicht!


Hab ich da etwas völlig falsch gemacht?

THANKS





PS: Ein DA  - Wandler konnte ich ohne Problem ansteuern...

von Aleksej Kiselev (Gast)


Lesenswert?

Was soll "funktioniert nicht" heissen? Könntest du das Problem mal
besser beschreiben? Kriegst du gar nichts oder geht es um die falschen
Werte?

von Izoard (Gast)


Angehängte Dateien:

Lesenswert?

Also wenn ich das richtig verstehe, sollten, sobald ich vom SPDR
Register lese, 8 Takte am SCLK PIN kommen! Diese kann ich nicht
anschauen!

Leider kann ich nicht sagen, ob die Schreibe- bzw. Leseroutine für das
EEPROM läuft oder nicht!

Das ist ja das blöde! Ich kann es gar nicht kontrollieren, ausser das
Übermittlungsprotokoll mit dem Osziloskop aufzuzeichen!

Im Anhang noch mein Code!

von Aleksej Kiselev (Gast)


Lesenswert?

Der Controller läuft doch als Master, also soll der Controller diese 8
Takte erzeugen. Wenn du keine Takte hast, dann kannst du nichts
auslesen, ist ja logisch. Wie es bei dem eingebauten SPI geht weiß ich
nicht so gut, aber ich habe mit den EEPROM's gearbeitet, kann dir ein
Paar Proceduren schicken. Das Problem ist daran, dass die in Assembler
sind

von Izoard (Gast)


Lesenswert?

Ich möchte es mit dem eingebauten SPI machen!

stimmt es, dass der Master, sobald ich die Zeile:


variable = SPDR;


schreibe, sofort 8 Takte erzeugt und danach der Wert in Variable ist!

Oder wie muss ich vom SPDR - Register Daten lesen????

Ich denke, dort mach ich den Fehler!

von Izoard (Gast)


Lesenswert?

so hab es doch noch rausgefunden.

Für alle die es wissen möchten:

Wenn man von der SPI Schnittstelle lesen möchte, muss man ein
beliebiges Byte ausgeben, damit 8 Takte erzeugt werden. Über die MISO
Leitung werden jetzt die Bits ins SPDR - Register geschoben.



Dank sei diesem Beitrag:

http://www.mikrocontroller.net/forum/read-1-50423.html

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.