Forum: Mikrocontroller und Digitale Elektronik Problem mit SPI & Bascom


von Markus (Gast)


Angehängte Dateien:

Lesenswert?

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

von Markus (Gast)


Angehängte Dateien:

Lesenswert?

Hmm, falsche Datei hochgeladen :-)
Hier ist die Richtige

von Robi (Gast)


Lesenswert?


von Markus (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.