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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren