Hallo,

dass der Code ein wenig durcheinander ist, liegt nicht daran, dass es wild zusammenkopiert ist, sondern daran, dass ich das eine Menge rumprobiert habe und dabei die Ordnung habe schleifen lassen.

Ich habe das Ganze einmal aufgeräumt, siehe unten.

Das CS funktioniert sicher. erst ist der Pin HIGH, dann setze ich ihn auf LOW und dann wieder auf HIGH. Das habe ich mir mit dem Oszi angeschaut.
Ich habe einfach mal den SPI-Kram auskommentiert, ein delay zwischen Sensor-aktivieren und Sensor-deaktivieren eingefügt, CS am Oszi angeschaut und das springt eben wie gewünscht HIGH - LOW - HIGH.

Bei der Clock sehe ich aber leider nichts.

Ich habe das Gefühl, dass ich vor lauter Bäumen den Wald nicht mehr sehe.
SPI - Init:
Code:
#define SPI_PIN                PINB
#define SPI_DDR               DDRB
#define SPI_PORT             PORTB

#define SPI_MISO        PB3    
#define SPI_MOSI        PB2    
#define SPI_Clock        PB1
#define SPI_SS           PB0

SPI_DDR &=~(1<<SPI_MISO);         // miso auf input
SPI_DDR |= (1<<SPI_Clock);          // clock auf output
SPI_DDR |= (1<<SPI_MOSI);          // mosi auf output
SPI_DDR |= (1<<SPI_SS);             // ss auf output
PORTE |= (1<<PE2);                   // Sensor deaktivieren

SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPI2X)|(1<<SPR0)|(1<<SPR1)|(1<<CPOL)|(1<<CPHA);    
                                                                // SPI Enable
                                                                // Master Select
                                                                // f_clkio/64
                                                                // Leading Edge -> Falling
                                                                // Trailing Edge -> Rising
Code aus der main:
Code:
PORTE &= ~(1<<PE2);                // Sensor aktivieren, CS -> LOW
_delay_us(10);                          // wait
SPDR= 0x10;
while(!(SPSR & (1<<SPIF)));            
data= (SPDR<<8) & 0x3FFF;        // 8 Bit auslesen
                                
                                    
SPDR= 0x01;                            
while(!(SPSR & (1<<SPIF)));            
data+= SPDR;                           // Weitere 8 Bit auslesen
_delay_us(10);                          // wait
PORTE |= (1<<PE2);                   // Sensor deaktivieren