Guten Abend! Ich habe 2 ATmega48 die über SPI Daten austauschen sollen, leider klappt das nicht. Hab mal versucht das Problem einzugrenzen und eine LED angeschlossen, die im Betrieb blinkt. In dem Moment, wo die Daten übertragen werden sollen, leuchtet sie dauernd und an den SPI-Ausgägnen tut sich nichts. Sowohl bei SpiIn wie auch bei SpiOut. Habe mal testweise den SS-Port am Master als Eingang geschaltet und High-Pegel angelegt, sowie den SS-Port als Ausgang geschaltet. Gab keine Veränderung. Nach SpiInit ist Mosi ist high, Sck ist low. Nur wenn man den SS-Eingang auf Masse legt wird der Spi nicht initialisiert. Das ist das einzige was richtig funktioniert. Hab mal den Code des Masters mit angehängt. Gruß Markus
Hab jetzt mal die Register Spcr und Spsr ausgelesen, soweit ist alles in Ordnung. Hab die gesendeten Daten noch etwas verändert und sieh an, er sendet was. Ob es passt kann ich erst sagen, wenn das Slaveprogramm läuft. Mir ist aufgefallen, das der Atmega immer abstürzt wenn die an SpiOut übergebenen Werte kleiner 128 werden. Lege ich den Miso-Pin auf 5V und lese mit SpiIn ein, bekomme ich die 255 übergeben, kommt Miso aber auf Masse, gibt’s nur ein mal die 0, danach stürzt er wieder ab. Hab dann noch mal etwas ins Datenblatt geschaut und was von einem SPDR Register gelesen. In diese kann ich Werte von 0 - 255 schreiben und danach wird auch gesendet. Einlesen der 255 und der 0 klappt auch. Sehe ich das richtig, das wenn ich einen Wert an SPDR übergebe dieser Wert gesendet und wenn ich aus SPDR lade, Miso eingelesen wird?
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.