Forum: Mikrocontroller und Digitale Elektronik SPI SS pin active und passiv verhindert transmission complete


von debugwire (Gast)


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.

von holger (Gast)


Lesenswert?

DDR_SPI &= ~(1<<DD_SS);      //activate SS pin

Du musst das PORT Register nehmen und nicht DDR.

von spess53 (Gast)


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

von debugwire (Gast)


Lesenswert?

Danke holger

von debugwire (Gast)


Lesenswert?

@ 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.

von spess53 (Gast)


Lesenswert?

Hi

>Ich hatte es lediglich benutzt, da es in meinem Bespielcode auch
>verwendet wurde.

Sicher?

MfG Spess

von debugwire (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.