Atmega8 SPI läuft nicht

OP #5282334
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
> 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...
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
Gast
> ... gibt den Master erst bei High frei

Genauer: schaltet um auf Slave.

"If SS is configured as an input and is driven low while MSTR is set, 
MSTR will be cleared..."
> 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

Eine eigene Frage? Dieser Thread ist über 8 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.