www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik EEPROM per SPI lesen!


Autor: Izoard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Aleksej Kiselev (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Izoard (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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!

Autor: Aleksej Kiselev (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Izoard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Izoard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.