Atmega8 SPI läuft nicht

OP #5282334
Lesenswert?
• ▲
▼
Hallo,

ich habe einen ATMEGA8 und möchte über SPI zum meinen Schieberegistern 
kommunizieren. Leider scheint sich das Programm aufzuhängen.

Ich rufe im meiner Main-Funktion folgende Zeilen auf:

uart_puti(0x32);               // sende Zeichenfolge über 
Bluetoothemodul an Terminal
spi_tranceiver(0x0f);
PORTC|=(1<<PC0);
PORTC&=~(1<<PC0);
_delay_ms(1000);

Kommentiere ich den "spi_tranceiver..." aus kommt auf meinem Terminal 
das Signal vom Befehl "UART_puti" im 1 sek Takt auf dem Terminal.
Ist die SPI-Zeile nicht auskommentiert kommt nichts auf meinem Terminal 
an. Es scheint mit so als ob er in der spi_tranceiver Funktion hängen 
bleibt.

Die Befele für PC0 sind zum übernehmen der daten an den Schiebregistern 
die am SPI angeschlossen sind.

Kann mir hier jemand weiter helfen?
Angehängte Dateien:
Gast #5282358
Lesenswert?
• ▲
▼
> Meines erachtens ist (1<<MSTR) das bit für den Masterbetrieb.

Schon, aber:

Datenblatt 'SS Pin Functionality':
If SS is configured as an input, it must be held high to ensure Master 
SPI operation...
#5282359
Lesenswert?
• ▲
▼
Hallo,

soweit richtig. Es geht aber um den Pin SS (PB2), das gehört zur 
SPI-Hardware. Und wenn eben der SPI als Master gesetzt wird, kann dieser 
Pin entweder als Ausgang gesetzt werden und unabhängig genutzt werden 
oder er wird als Eingang gesetzt, dann ist er Slave Select für den SPI 
und gibt den Master erst bei High frei.
Habe gerade im Datenblatt gesehen, daß meine obige Angabe mit Low wohl 
falsch rum war...

Du hast den aber wohl anders genutzt und das klappt nicht.

Gruß aus Berlin
Michael
#5282951
Lesenswert?
• ▲
▼
> main.cpp

Eine ISR in einer .cpp kann interessante Nebenwirkungen haben, denn 
gängige Compiler übersetzen das als C++. Keine Ahnung ob AVR das korrekt 
behandelt.

SPI Master hängt sich gerne mal auf wenn SS nicht als Ausgang definiert 
wurde. Das sehe ich auf den 1. Blick nicht.

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.