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...
Was soll "funktioniert nicht" heissen? Könntest du das Problem mal besser beschreiben? Kriegst du gar nichts oder geht es um die falschen Werte?
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!
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
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.