SPI bei 3,3V funktioniert nicht

OP #1331428
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
OP #1331443
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

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