Hallo,
ich möchte einen SCA3000-D01 Sensor über SPI an meinen ATmega32L
auslesen.
Ich habe mal folgenden Code geschrieben, ist da irgendwo ein Fehler den
ich nicht sehe und wie kann ich über den Spare Anschluss am STK500 Board
mein Programm beobachten um zu sehen wo es sich aufhängt.
Hier der Code
#include <avr/io.h>
#include <util/delay.h> //Bibliothek für Verzögerung
int read_x_channel();
void SPI_MasterInit(void);
int main(void)
{
int Wert;
SPI_MasterInit();
while(1)
{
Wert = read_x_channel();
_delay_us(20);
}
return 0;
}
int read_x_channel()
{
short x1,x2;
int x3, xGes;
PORTB = (0 << PB0); //SS auf low setzen
SPDR = 0x05; //Befehl read X-Channel in SPDR
while(!(SPSR & (1<<SPIF))); //Warten bis Empfangsende
x1 = SPDR; //Wert x1 aus DR wird gespeichert
x3 = x1<<8; //x1 wird um 3 verschoben
SPDR = 0x04; //Dummybyte
while(!(SPSR & (1<<SPIF))); //s.o.
x2 = SPDR; //Wert x2 aus DR wird gespeichert
xGes = x3 + x2; //Endwert wird berechnet
PORTB = (1 << PB0); //SS auf highsetzen
return (xGes); //Endwert wird zurück gegeben
}
void SPI_MasterInit(void)
{
/* Set MOSI and SCK output, all others input */
DDRB |= (1<<PB2) | (1<<PB3) | (1<<PB5);
/* Enable SPI, Master, set clock rate fck/16 */
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
}
Vielen Dank im Voraus
Gruß Gerald