mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SPI funktioniert nur sporadisch


Autor: Sebastian D. (bineuling)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich einen Atmega32 als Master konfiguriert. Er soll in einer 
Endlosschleife zwei Byte über das SPI ausgeben (ohne Empfänger). Leider 
funktioniert das nur nachdem ich mehrere Sekunden lang den Resetbutton 
auf dem Board gedrückt halte (Atmel Evaluation Board von Pollin). 
Gesendet wird übrigens unabhängig von einer Eingabe. Andere Programme 
ohne Einbindung der SPI laufen jedoch ohne Probleme. Da ich es schon mit 
mehreren Controllern versucht habe, glaube ich nicht an einen 
Hardwarefehler.

Kennt jemand das Problem ?

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie ist der Slave-Select-Pin (\SS) verschaltet und konfiguriert? Der 
muss als Ausgang eingestellt sein.

Autor: Sebastian D. (bineuling)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wurde im ddr-register als ausgang geschaltet

Autor: Kuen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Massefehler?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Sebastian Deubl (bineuling)

>ich einen Atmega32 als Master konfiguriert. Er soll in einer
>Endlosschleife zwei Byte über das SPI ausgeben (ohne Empfänger). Leider
>funktioniert das nur nachdem ich mehrere Sekunden lang den Resetbutton
>auf dem Board gedrückt halte (Atmel Evaluation Board von Pollin).

Es bringt nichts, wenn du zu einem Problem zwei Threads aufmachst!
Wahrscheinlich hast du ein Hardwareproblem. Oder du hast SS nicht als 
Ausgang gesetzt.

AVR-Tutorial: Schieberegister

MfG
Falk

Autor: Sebastian D. (bineuling)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Antwort auf "Massefehler ?"

andere Programme laufen ja, der Port funktioniert auch wenn ich z.B 
einen Takt ausgebe.

Autor: Sebastian D. (bineuling)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo nochmal,

jetzt funktioniert es !!!

Bisher habe ich den Port und das SPI-Controlregister Bitweise 
konfiguriert (mit sbi und cbi). Jetzt lade ich eine Konstante in ein 
Register und kopiere dieses in das jeweilige Steuerregister. Et voila, 
es klappt ! Aber fragt mich nicht warum.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann poste doch mal deinen Code, dann können wir auch was sehen. Ich 
glaube nicht, dass sbi und cbi nicht gehen sollen. Deine Vorgehensweise 
mit Konstanten mag richtig sein, aber der ursprüngliche Weg sollte auch 
gehen, deswegen wunderts mich ein wenig, es sei denn, die Adresse des 
SPI-Registers ist höher als 31 --> Trifft soweit ich weiss nicht auf SPI 
zu. Allerdings steht im Datenblatt auch, dass bei Verwendung von SBI 
einige Bits, die vorher eins waren, evtl. mit dem SBI-Befehl auf Null 
gesetzt werden!

Ralf

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ralf wrote:
> Allerdings steht im Datenblatt auch, dass bei Verwendung von SBI
> einige Bits, die vorher eins waren, evtl. mit dem SBI-Befehl auf Null
> gesetzt werden!
Trifft aber ausschließlich auf Interrupt-Flags zu.

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.