Gast
#3808136
Hallo,
Digitalpoti ist mit +5V Versorgt.
Poti-Anschlüsse an +2.5 Spannungsreferenz und GND, am Schleifer messe
ich die Ausgangsspannung.
Die SPI - Routinen:
void SPI_INIT (void)
{
DDRB |= (1<<PB3)|(1<<PB5)|(1<<PB7)|(1<<PB4);
SPCR |= (1 << SPE) | (1 << MSTR) | (1 << SPR0) | (1 << CPOL) | (1 <<
CPHA); //SPI enable,as Master,MSB first,CLK/16,Mode3
SPCR &=~(1<<DORD);
PORTB |= (1 << PB7)|(1 << PB3);
PORTB&=~(1<<PB4);
}
void SPI_WORD (char data1, char data2)
{
SPI_INIT();
PORTB|=(1<<PB4);
PORTB|=(1<<PB7); //SCK
PORTB|=(1<<PB5); //MOSI
PORTB &=~(1<<PB3); //CS
SPDR = data1;
while(!(SPSR & (1<<SPIF)));
SPDR = data2;
while(!(SPSR & (1<<SPIF)));
PORTB|=(1<<PB3); //CS
PORTB &=~(1<<PB7); //SCK
PORTB &=~(1<<PB5); //MOSI
}
main:
SPI_WORD(0b00010001,Offset);
Offset kann über Tastatur von 0 - 255 in 5er - Schritten hochgezählt
werden)
Ich lass mir jetzt am Display den Offset-Wert anzeigen, also 0 - 255,
das funktioniert
Bei 0 = 0V, Bei 255 = 2.46V also oke.
In der (fast) Mitte bei einem Offset - Wert von 130 messe ich aber nicht
ca. 1.2 sondern nur 1V. Also einen Fehler von ca. 200mV
Das ganze ist überhaupt nicht linear..
An was kann das liegen?
liebe Grüße

