Forum: Mikrocontroller und Digitale Elektronik Ich raff das mit dem SPI nicht


von Klaus G. (Gast)


Lesenswert?

Guten Abend!

Ich habe hier ein Board mit einem Mega64, der via SPI einige ICs
anquatschen soll. Allerdings funktioniert das nicht. Ich habe das
Problem inzwischen soweit eingegrenzt:

- beim Senden erscheint im SPSR beim ersten mal noch das SPIF, bei
folgenden nicht mehr
- ich sehe keine Clock auf SCK!

Ich gehe vor wie im Datenblatt beschrieben, also SPDR beschreiben,
danach warten bis SPIF angeht. Das scheint ja relativ deppensicher zu
sein ;-)

Die SCK-Leitung an sich ist wohl OK, denn beim Programmieren über den
ISP springt das brav bis auf 5 Volt rauf, also auch keine Kurzschlüsse
oder so.

Ist es eigentlich egal, wann man was auf den SPI rausschreibt? Ich
meine: wenn keine Zuhörer da sind, müsste das doch auch gehen, bloß daß
eben 0x00 als "Antwort" zurückkommt, oder? Interessanterweise
funktioniert nämlich das Rausschreiben beliebigen Schrotts (0xff habe
ich gerade drin) auf einem alten Board (hatte ich noch rumliegen, da
funktioniert SPI nachweislich) nicht. Das Normale Reden mit dem dort
verbauten Slave funktioniert, aber wenn ich 0xff schreibe, klemmt
komischerweise auch das SPIF und der bleibt in der Schleife kleben.

Ciao, Klaus

von usul27 (Gast)


Lesenswert?

Ob jemand am SPI "hört", ist dem ATMega egal. Und auch 0xff
rausschreiben muss ohne Probleme gehen. Bist du sicher, dass dein Code
nicht versehentlich den SPI-Pin als Eingang konfiguriert?

von Stefan Seegel (Gast)


Lesenswert?

Vermutung:

Der SS Pin MUSS auf Ausgang (DDR) gesetzt sein, sonst haut das nicht
hin.
Ob 0x00 oder sonstwas als Antwort zurückkommt hängt davon ab was an der
MISO Leitung hängt, wenn die offen ist kommt unberechenbarer Müll
zurück.

Stefan

von usul27 (Gast)


Lesenswert?

Laut Datenblatt, kann SS auch als Eingang gesetzt sein. In diesem Fall
MUSS der Eingang aber auf H liegen, ansonsten denkt der ATMega, dass
noch ein anderer Master auf dem Bus ist.

von Klaus G. (Gast)


Lesenswert?

SS war's, ich habe jetzt PB0 als Ausgang konfiguriert, und schwupps
geht die ganze Sache, inklusive kräftiger 5-Volt-Rechtecke auf der
SCK-Leitung. Das andere Board, das sporadisch funktioniert hat, hat
wohl irgendeinen Murks auf SS eingestreut, sodaß es "meistens HIGH"
war... grusel

Danke für eure schnelle Hilfe! :-)

Jetzt habe ich nur noch eine lügende Spannungsreferenz... (1,88 statt
2,50 Volt, das ist doch der Hammer...)

Ciao, Klaus

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.