Ich hab die Lösung:
Den Wert mittels "Getadc(x)" abholen verbietet sich bei differential Channels. Der Wert muss direkt aus den beiden Registern Adcl unf Adch abgeholt werden.
Verwendbar ist die ganze Sache für mich allerdings nicht. Da auch negative Werte ( nicht bezogen auf Masse, sondern auf die beiden verpolten Eingänge) gemessen werden, geht die Auflösung auf 9 Bit runter. Ausserdem wird +512 bei meinem M16 nie erreicht, max ist hier +488 bei Gain x10 und Uref = Vcc.Code:Adcsra.adate = 1 'Bit5 = Auto Trigger en ' Adcsra.adif Bit4 Flag für fertige Konversation ' adcsra.adie = 1 ' Aktiviert ADC Interupt I-Bit in SREG muss gesetzt sein Adcsra.adps2 = 1 ' prescaler 128 Adcsra.adps1 = 1 ' prescaler 128 Adcsra.adps0 = 1 ' prescaler 128 Adcsra.aden = 1 ' Bit7 1= en ADC Adcsra.adsc = 1 ' |Bit6=1 Start Conversion(Singel o. Free ) Admux = &B01001001 Do Loop Until Adcsr.adif = 1 ' Warten auf conversation Adcsr.adif = 1 ' Reset flag Lowbyte = Adcl ' Lowbyte Register Highbyte = Adch 'High Byte Register Print Hex(highbyte) ; Hex(lowbyte) ' Print High und Lowbyte in Hex Print Highbyte ; Print " "; Print Lowbyte Waitms 900 ' Auge zu langsam Stop Adc
Hier scheint die Qualität des internen OpAmps nicht toll zu sein.
Update:Ein Versuch mit Uref=REFint allerdings schon, das die +512 (01FF) erreicht werden.
Thomas







Zitieren
Lesezeichen