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?
Hallo, Du hast bedacht, daß SS (PB2) nur als Ausgang frei verwendet werden kann, wenn der SPI Master sein soll? SS ist Slave Select des SPI und muß bei Eingang auf Low gezogen sein. Gruß aus Berlin Michael
Hallo, laut meinem spi_init unterprogramm sollte er als SPI Master laufen. SPCR |= (1<<SPE)|(1<<MSTR)|(1<<SPR0); Meines erachtens ist (1<<MSTR) das bit für den Masterbetrieb.
> 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
> ... 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..."
HAllo, ich habe den SS auf High gesetz und dann ging es auch gleich. Vielen Dank für die schnelle Hilfe Eigentlich wollte ich an dem Ausgang die PWM nutzen. Da lese ich jetzt nochmal nach ob das gehen würde.
> Eigentlich wollte ich an dem Ausgang die PWM nutzen.
Kein Problem, ist ja dann als Ausgang konfiguriert.
S. Landolt schrieb: > ...it must be held high to ensure Master > SPI operation... Deutsch: Es muß ein großer Held sein, der die SPI-Operation als Master sicherstellt. MfG Paul
> 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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.