www.mikrocontroller.net

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


Autor: Klaus G. (Gast)
Datum:

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

Autor: usul27 (Gast)
Datum:

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

Autor: Stefan Seegel (Gast)
Datum:

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

Autor: usul27 (Gast)
Datum:

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

Autor: Klaus G. (Gast)
Datum:

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

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.