SPI lässt sich nicht aktivieren Atmega328P

OP #6396168
Lesenswert?
• ▲
▼
Hallo zusammen,
Ich habe folgendes Problem: Mein Atmega 328P auf einem Arduino UNO Bord 
lässt nicht zu, dass ich das SPE Register im SPCR (Kontrollregister von 
SPI) beschreibe.
Das Programm soll an sich nicht viel machen sondern nur das Register 
beschreiben und eine LED danach zum blinken bringen. Allerdings kommt 
der Prozessor nie zu dem Punkt dass er blinkt, wenn der Befehl SPCR |= 
(1<<SPE) aktiv ist. Ich benutze das Atmel Studuio, habe das ganze aber 
auch schon mit der Arduino IDE auf Linux und Windows versucht. Kann es 
irgendwie an den zwei Arduinos liegen die ich benutze?
Vielen Dank schonmal
Angehängte Dateien:
#6396171
Lesenswert?
• ▲
▼
Jumper M. schrieb:
> Hallo zusammen,
> Ich habe folgendes Problem: Mein Atmega 328P auf einem Arduino UNO Bord
> lässt nicht zu, dass ich das SPE Register im SPCR (Kontrollregister von
> SPI) beschreibe.

Glaub ich nicht.

Du MUSST das IO-Pin mit dem SS Signal VORHER auf Ausgangs setzen. Siehe 
Datenblatt, ""SS pin functionality".

Es ist übrigens im Allgemeinen eine gute Idee, ZUERST alle IO-Pins 
passend zu konfigurieren und DANACH erst irgendwelche IO-Module.
#6396178
Lesenswert?
• ▲
▼
Jumper M. schrieb:
> Ich weiß es klingt unglaublich, ich hatte SPI davor auch aktiviert
> bekommen und bekam ein Signal bei SPI, aber als ich es nochmal versucht
> hatte ging es nicht. Die IO Pins hatte ich auch davor ursprünglich
> geschrieben gehabt, aber mit dem gleichen Ergebnis.

Deine Einschätzung dass dein Programm "abstürzt" nur weil du ein Bit in 
einem Register setzt ist falsch, weil an dieser Stelle unmöglich.
Du musst damit aufhören Lösungen für unmögliche Probleme zu suchen und 
statt dessen nochmal genau nachforschen was wirklich passiert.

Wahrscheinlich funktioniert einfach nur das programmieren des Flash 
nicht und dein Programm wird gar nicht ausgeführt.
Beitrag #6396193 wurde von einem Moderator gelöscht.
Gast #6396208
Lesenswert?
• ▲
▼
Cyblord -. schrieb:
> Wenns schon an korrekter Bitmanipulation scheitert kann man so viel
> nicht erwarten.

Dass man nicht viel erwarten kann spiegelt sich schon in der
Ausdrucksweise wieder.

Jumper M. schrieb:
> Mein Atmega 328P auf einem Arduino UNO Bord
> lässt nicht zu, dass ich das SPE Register im SPCR (Kontrollregister von
> SPI) beschreibe.

Er wehrt sich sozusagen mit Händen und Füssen.
Gast #6396279
Lesenswert?
• ▲
▼
Jumper M. schrieb:
> Das Problem ist ja, dass OHNE den Befehl SPCR = (1<<SPE); ohne
> Probleme
> durchläuft und anfängt zu blinken, mit dem Befehl aber nicht zum blinken
> kommt, da er schon vorher nicht weiter kommt.

Es wurde dir schon gesagt!

PB5 dient bei dir zum blinken.
PB5 wird von der SPI Schnittstelle benutzt.

Bei einem Auto kannst du auch nicht aus beiden Türen gleichzeitig 
aussteigen.
Merke: Es gibt Situationen, wo man sich entscheiden muss.


Also:
Sobald du SPI benutzt/aktivierst endet das blinken.
Das Verhalten ist das erwartete Verhalten.
Es ist kein anderes Verhalten plausibel/denkbar.

Alles ok.
Nur deine Diagnose ist völlig daneben.
Beitrag #6396302 wurde von einem Moderator gelöscht.
Beitrag #6396314 wurde von einem Moderator gelöscht.
Beitrag #6396337 wurde von einem Moderator gelöscht.
Beitrag #6396355 wurde von einem Moderator gelöscht.
Beitrag #6396442 wurde von einem Moderator gelöscht.
Beitrag #6396501 wurde von einem Moderator gelöscht.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.