Forum: Mikrocontroller und Digitale Elektronik Problem SPI + Atmega48


von Mathias S. (merzi1993)


Lesenswert?

Hallo!

Ich bin gerade dabei die SPI-Schnittstelle in Betrieb zu nehmen. Dazu 
habe ich auf einem Steckbrett folgendes Aufgebaut:

Atmega48
Kondensator zw. Vcc und GND
Pullup an Reset zu Vcc
LED an PC0 und PC1

Folgendes Programm habe ich dazu geschrieben:
1
#include <avr/io.h>
2
3
int main(void)
4
{
5
  SPI_MasterInit();
6
  
7
  DDRC = 0xff;
8
  PORTC = 0;
9
  
10
    while(1)
11
    {
12
    SPI_Transmit(125);    
13
    }
14
}
15
16
void SPI_MasterInit(){
17
  DDRB = (1<<3) | (1<<5); 
18
  SPCR = (1<<SPE) |(1<<MSTR) | (1<<SPR0);
19
}
20
21
void SPI_Transmit(char cData){
22
  SPDR = cData;
23
  PORTC = 1;
24
  while(!(SPSR & (1<<SPIF))){}
25
  PORTC = 3;
26
  
27
}

Ich will nun die Daten vom SPI-Bus mit meinem Logikanalysator 
aufzeichnen. Jedoch kommen da keine Daten an. (LA von IKALOGIK - 
Samplingrate: 1MHz, 261888 Samples --> Resolution: 1µs)

Nun habe ich testweise in SPI_Transmit Ausgänge (LEDs) gesetzt um zu 
testen, ob hier etwas nicht stimmt. Es ist nur Portc0 aktiv. Es scheint, 
als würde das Programm in der while(!(SPSR & (1<<SPIF))){} stecken.

Woran könnte das liegen?

von holger (Gast)


Lesenswert?

Du musst den SS Pin auf Ausgang schalten.

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.