Hallo zusammen, versuche per SPI mit einem ATmega einen Beschleunigungssensor auszulesen. Da ich Anfänger bin, habe ich mir bei http://www.ermicro.com/blog/?p=1050 einiges abgekuckt. Beim Debuggen stehe ich immer vor folgendem Problem. Wenn ich den Dateninhalt von data übertragen will, wird die Transmission nicht beendet.(Er bleibt in der while-Schleife, was ja bedeutet, dass das Status Interrupt Flag nicht gesetzt wird). void SPI_MasterTransmit(uint8_t adress, uint8_t data) { DDR_SPI &= ~(1<<DD_SS); //activate SS pin SPDR = adress ; // Start transmission of adress while(!(SPSR & (1<<SPIF))) // Wait for transmission complete ; SPDR = data ; // Start transmission of data (register) while(!(SPSR & (1<<SPIF))) // Wait for transmission complete ; DDR_SPI |= (1<<DD_SS); //deactivate SS pin } Wenn ich aber die beiden Zeilen "activate SS pin" und "deactivate SS pin" auskommentiere, funktioniert das Debuggen. Ich bin mir aber ziemlich sicher, dass ich die beiden Zeilen brauche. So wurde es auch in dem Programmbeispiel von http://www.ermicro.com/blog/?p=1050 gezeigt.
DDR_SPI &= ~(1<<DD_SS); //activate SS pin Du musst das PORT Register nehmen und nicht DDR.
Hi Warum fummelst du an der Datenrichtung des SS-Pins herum? Damit deaktivierst du mit großer Sicherheit den Mastermode. Im Datenblatt gibt es dazu ein extra Kapitel: 'SS Pin Functionality'. MfG Spess
@ spess53 Danke für den Hinweis. Ich hatte es lediglich benutzt, da es in meinem Bespielcode auch verwendet wurde. Ich schau mir nochmal das ATmega datasheet an.
Hi >Ich hatte es lediglich benutzt, da es in meinem Bespielcode auch >verwendet wurde. Sicher? MfG Spess
Hi Spess, ich bin mir nicht 100% sicher ob es richtig ist.
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.