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

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