EEPROM per SPI lesen!

Gast #51850
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...
Gast #51852
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!
Angehängte Dateien:
Gast #51853
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
Gast #51854
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!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren