SPI will nicht

OP Persönliche Seite #903301
Lesenswert?
• ▲
▼
Hallo Forum,

leider kann ich mit meinem Atmega8 SPI im Master mode nicht zur 
Mitarbeit ueberreden - es passiert garnichts. Weder an SCK noch an MOSI.

Ich verwende folgenden Code:
1
void spi_master_init(void)
2
{
3
  DDR_SPI |= (1 << DISP_SI) | (1 << DISP_CLK);
4

5
  /* SPE:   SPI enable
6
   * MSTR:  SPI master mode
7
   * CPOL:  clock polarity (high when idle)
8
   * CPHA:  clock phase (trailing edge)
9
   * frequency: F_OSC/32 => 250KHz
10
   */
11
  SPCR |= (1 << SPE) | (1 << MSTR) | (1 << CPOL) | (1 << CPHA) | (1 << SPI2X) | (1 << SPR1);
12
  _delay_ms(100);
13
}

Hinweis: SS ist als Output konfiguriert. Das sollte aber keine Probleme 
machen duerfen. Im Master Mode ist SS nach Datenblatt konfigurierbar und 
ein "general output". Als solchen verwende ich ihn derzeit auch (habe 
eine LED dran), er ist also als Ausgang konfiguriert.

Initial setze ich PortB komplett als Output.
Worin koennte das Problem bestehen?

Danke fuer Eure Hilfe.

P.S. Ein kleiner Abschnitt zu SPI im Tutorial waere mal nicht schlecht.

Gruss,
Michael
#903331
Lesenswert?
• ▲
▼
Jo, das "SPCR |= ..." ergibt keinen Sinn, "SPCR = ..." ist besser.

Aber wenn der frisch aus dem Reset kommt, ist der Inhalt sauber 
definiert vorher 0. Das kann also kaum die Ursache sein.

Ebenso führt das falsch plazierte SP2X nur zu einem anderen Takt, /128 
statt /32.

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