SPI SS pin active und passiv verhindert transmission complete

Gast #2784542
Lesenswert?

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.
Gast #2784556
Lesenswert?

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

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