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 ?
Wie ist der Slave-Select-Pin (\SS) verschaltet und konfiguriert? Der muss als Ausgang eingestellt sein.
wurde im ddr-register als ausgang geschaltet
Gast
#764733
Massefehler?
@ 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
Antwort auf "Massefehler ?" andere Programme laufen ja, der Port funktioniert auch wenn ich z.B einen Takt ausgebe.
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.
Gast
#764844
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
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
Bitte melde dich an, um einen Beitrag zu schreiben.