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?