Forum: Mikrocontroller und Digitale Elektronik SPI bei 3,3V funktioniert nicht


von Lorenz W. (lolle)


Lesenswert?

Hallo zusammen

Ich versuche die SPI Schnittstelle eines Atmega64 als Master in betrieb 
zu nehmen, aber ich scheitere schon daran, dass ich keine "transmission 
complete" bekomme (der Controller bleibt also in der while-Schleife in 
SPI_MasterTransmit hängen). Komischerweise funktioniert es, wenn ich den 
Controller mit 5V betreibe, nicht aber wenn ich ihn mit 3,3V betreibe.

Ich verwende den Code aus dem Datenblatt:
1
void SPI_MasterInit(void)
2
{
3
  /* Set MOSI and SCK output, all others input */
4
  DDRB = (1<<2)|(1<<1);
5
  /* Enable SPI, Master, set clock rate fck/16 */
6
  SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
7
}
8
void SPI_MasterTransmit(char cData)
9
{
10
  /* Start transmission */
11
  SPDR = cData;
12
  /* Wait for transmission complete */
13
  while(!(SPSR & (1<<SPIF)));
14
}
und main sieht so aus:
1
int main( void )
2
{
3
  SPI_MasterInit();
4
5
  SPI_MasterTransmit('A');
6
}

Hat jemand eine Ahnung was ich falsch mache?
Ich habe es auch noch einmal mit einem Atmega128 probiert, habe aber 
genau das gleiche Problem.

Vielen Dank im Voraus.

Lolle

von H.Joachim S. (crazyhorse)


Lesenswert?

Was ist mit SS? Sollte auch ein Ausgang sein.

von Lorenz W. (lolle)


Lesenswert?

Hallo Joachim

Vielen Dank für die schnelle Antwort. Deine Vermutung war richtig, jetzt 
geht's.

Ich dachte ich bräuchte mich um SS nicht kümmern, da der Controller 
Master ist und ich sowieso noch keinen Slave angeschlossen hatte. Da hab 
ich mich wohl getäuscht.

Grüße

Lolle

von Michael U. (amiga)


Lesenswert?

Hallo,

nicht nur denken, Datenblatt fragen. ;-))

Gruß aus Berlin
Michael

von Christoph B. (christophbudelmann) Benutzerseite


Lesenswert?

Lorenz Winkler schrieb:
> Ich dachte ich bräuchte mich um SS nicht kümmern, da der Controller
> Master ist und ich sowieso noch keinen Slave angeschlossen hatte. Da hab
> ich mich wohl getäuscht.

Da bist du aber nicht der einzige, wenn es dich beruhigt. Der Controller 
wechselt dann halt beim ersten Low-Impuls an SS in den Slave-Modus.

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.