Hallo, Ich möchte, dass der ADC ein Potentiometer auswertet. Folgender Code scheint jedoch nicht zu funktionieren, ich bekomme im Terminal nur die Zahl 1023 heraus, egal welche Spannung anliegt: int main(void) { DDRC = 0b00000000; PORTC = 0b00000000; uart_init(); while(1) { _delay_ms(100); uart_puts(utoa( ADmessung(), s, 10 )); } } uint16_t ADmessung(void) { ADMUX = 0b00000100; ADCSRA |= (1<<ADEN)|(1<<ADPS1); ADCSRA |= (1<<ADSC); while((ADCSRA & (1<<ADSC))); return ADC; } Die serielle Übertragung mithilfe der puts methode funktioniert! Mehrfach getestet. Kann mir jemadn helfen? Danke im Voraus.
Nabend, Jabu schrieb: > Kann mir jemadn helfen? Danke im Voraus. lege alles offen (Hard/Software) sonst wird das nichts mit der Hilfe MfG
Hi >Folgender Code >scheint jedoch nicht zu funktionieren, ich bekomme im Terminal nur die >Zahl 1023 heraus, egal welche Spannung anliegt: Falsche Referenzspannung. Außerdem ist eine stetige Neuinitialisierung vor einer Messung Unsinn. MfG Spess
Hi, lt ADMUX-Einstellungen verwendest du eine externe Vref. um zu verifizieren, daß der ADC grundsätzlich funktioniert, würde ich einfach mal Vin=Vbg und Vref=Avcc anlegen, d.h. ADMUX=0b01001110, an Vref nur eine Kapazität gegen Masse. Da sollte dann halbwegs konstant ein Wert in der Größenordnung 1.3/Avcc*1024 rauskommen. Wenn das funktioniert, als nächstes wieder die externe Vref anlegen und noch einmal Vbg gegen die die externe Vref wandeln,d.h. ADMUX=0b00001110 Da sollte dann halbwegs konstant ein Wert von 1.3/Vef*1024 rauskommen. Wenn das funktioniert, dann erst, wie ursprünglich gedacht, ADC4 gegen externe Vref wandeln. Wenn das dann immer noch nicht funktioniert, kann der Fehler eigenlich nur auf der Strecke vom Input-Pin bis zum Analog-Multiplexer liegen. Ebenfalls problematisch ist der Start der Wandlung sofort nach ADEN=1. Lt. Datenblatt werden alle Spannungen erst bei ADEN=1 geschaltet und die werden sich nicht bis zum nächsten Clk-Zyklus stablisiert haben. D.h. zumindest die ersten paar Wandlungen liefern nur Schrott. Zuletzt noch: passt das mit der Prescaler-Einstellung? Datenblatt: "By default, the successive approximation circuitry requires an input clock frequency between50kHz and 200kHz to get maximum resolution. If a lower resolution than 10 bits is needed, the input clock frequency to the ADC can be higher than 200kHz to get a higher sample rate." Gruss, Heinz
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.