Hallo Es gibt ja schon Zahlreiche ADC-Beiträge für den Tiny13. Dort konnte ich aber meine Lösung nicht finden. Problem ist, dass der ADC immer den gleichen in etwa Wert ausliest, egal welche Spannung anliegt. Ich sehe leider den Fehler nicht, könnt ihr mir helfen? Danke Michael
Anhang vergessen...
Gast
#1482431
Code?
Schaltung?
Gast
#1482455
du setzt val=0; also isses solange 0 bis du was anderes rein schreibst ...
Nein, val wird immer um eins erhöht. Bei Geraden ist der ADC Wert auf der Weisen LED, bei ungeraden ist er Null. Das habe ich nur gemacht, damit ich weiß, dass der ADC nicht hängt, oder dort in einer Endlosschleife steckt. Schaltung: An ADC1 hängt die Spannungsquelle, an OC0A die weiße, an OC0B die gelbe LED.
Michael H. schrieb:
> Schaltung: An ADC1 hängt die Spannungsquelle
edit: nix
Okay, unklar ausgedrückt: Es hängt die Spannungsquelle die gemessen werden soll.. (über einen Spannunsteiler, selbstredent!)
Jetzt funktioniert's. Vielleicht liegt es daran, dass ich nur den 8 bit
Mode verwenden wollte.
Der neue Code:
void adc_init(){
ADMUX=(0<<REFS0)|(1<<MUX0);
ADCSRA=(1<<ADEN)+(1<<ADSC)+(0<<ADPS2)+(0<<ADPS1)+(0<<ADPS0);
}
uint_fast16_t adc_shoot(){
ADCSRA|=(1<<ADSC);
while(!(ADCSRA &&(1<<ADSC)));
unsigned char read_first;
read_first=ADCL;
return (ADCH<<8)+read_first;
}
Hoffe, das hilft wenn jemand das gleiche Problem hat...
Michael
Gast
#1482813
Kann es sein, dass du nur 8 bit auslesen wolltest? Wenn ich mich recht erinnere muss man auch im "8-bit modus" immer 16 bit lesen, ob man sie nun verwendet oder nicht. Vielleicht wars ja sogar das hier... Felix
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.