Hallo Ich möchte für ein Netzgerät eine Digitale Strom und Spannungsanzeige bauen. Dazu messe ich mit einem ATTiny25 sowohl den Ausgang als auch über einem Shunt und zeige das Ergebnis auf einer 7-Segment-Anzeige an. Da die Anzeige nicht Platz für beides bietet, muss ich die Anzeige per Schalter umschalten. Dazu habe ich einen Doppel-Umschalter. Je nach Schalterstellung wird V_out oder GND an den ADC3 gelegt. Der ADC2 liegt konstant an V_Shunt. Ich nutze die differentiellen Eingänge. zwischen V_out und V_Shunt kann ich die Ausgangsspannung messen, zwischen V_Shunt und GND (mit Verstärkung x20 und Polarität vertauscht) den Ausgangsstrom. (Der zweite Schalter signalisiert dem µC, was grade gemessen werden soll). Soweit so gut. Das klappt an sich auch sehr gut, nur muss ich jetzt noch an ADC1 ein Signal messen. Dazu schalte ich auf den ADC1 um, setze die Referenzspannung auf VCC und messe den Pin. Das funktioniert auch noch super. Das Problem ist jetzt aber das zurückschalten. Dazu setze ich die Referenzspannung auf AREF und wähle ADC2-ADC3 aus. Nur liefert er mir dann immer 0. Ich hab das Problem schon eingekreist, wenn ich "SetMeasureADC1()" auskommentiere, kann ich wunderbar die Spannung zwischen den beiden Eingängen messen, das Ergebnis stimmt auch soweit (Logischerweise liefert die Messung dann murks, da andere Channel ausgewählt sind). Sobald ich die Funktion einkommentiere, gibt er mir wieder 0 aus. Und zwar wirklich 0, der Wert schwankt auch kein bisschen. Auch vor dem 2ten Messen ADMUX komplett auf 0 zu setzen und neu zu initialisieren scheint nichts zu bringen. Code: http://pastebin.de/23218 (Der Interrupt ist absichtlich leer, er soll mich nur aus dem Schlafmodus wecken. Das Auslesen geschieht dann in ReadADC(). Sobald ich in den Noise-Reduction-Sleepmode wechsle, startet die Messung automatisch). Er hängt sich auch nicht auf, das Display wird weiter aktualisiert. Folglich muss er aus dem Schlafmodus wieder raus kommen, was nur durch ein Interrupt funktioniert. Der ADC scheint also zu laufen. Nur warum liefert er 0? Bestimmt so ein ganz blöder Flüchtigkeitsfehler :/ MfG ATTiny25
In meinem Datenblatt Seite 130 Punkt 19.5.2 steht das man nach AREF wechsel die erste Conversion verwerfen soll.
Hey, danke, es funktioniert :) Ich wusste zwar dass der ADC n paar Takte länger dauert nach dem wechseln, aber dass das Ergebnis gleich 0 ist :/ Naja danke dir nochmal :)
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.