Hi.. Ich versuche für eine Akkuladeschaltung derzeit ein paar Experimente mit dem ADC meines ATtiny26. Der Tiny26 steuert zu dem ADC noch einen LED-Farb-Fader mit 3 Software-PWMs an. ich messe über den ADC Kanal 0 und habe dort einen Poti gegen masse und AREF angeschlossen. An AREF befindet sich noch ein 100N keramik kondensator gegen masse. Alles so wies sein sollte. Ausgeben lasse ich mir das ganze über I²C auf meinen LED-Anzeigen. Der ADC wird mit dem Timer1 ungefär 4 mal in der Sekunde gestartet und läuft bei 8mhz systemtakt mit internem oszi und 64 vorteiler auf ca 125khz wandlungsfrequenz. sobald der ADC fertig ist wird eine ISR ausgelöst die das ganze per I²C an meine LED-anzeige schickt. Aber trotzdem spinnt der ADC n bissel. Während die LEDs faden zeigt der ADC ziemlich wirr schwankende werte an, je nach potentiometerstellung. halte ich die PWM mit meiner hold-funktion an wird nur noch ständig der taster abgefragt und nichts mehr geschaltet also vom µC gibt es schonmal eignetlich keine potentiellen rauschquellen. Das seltsame ist nun dass sich der ADC nicht mehr kontinuierlich aktualisiert.?! Je nach potistellung springt der ADC nur zwischen vier verschiedenen werten rum. Z.b. 3, 259, 515, 771. Wenn ich ihn hin und her drehe krig ich immernur eine dieser 4 zahlen. Irgendwann springt das ganze auf eine andere ebene ?! z.b. 0, 256, 512, 768. Scheint immer eine 2erpotenz und eine additive konstante zu sein, wie kommt denn bitte sowas zustande? ich weiß es gibt noch den adc noise reduction sleep mode aber das ist ja kein rauschen. scheint eher sowas wie n bug zu sein. was auch immer. jemand ne idee? ach ja, wenn ich vor mein hauptprogramm mal eine endlosschleife einbau die den normalen programmablauf verhindert, funktioniert alles voll normal. mfg PoWl
omg bitte löschen.. hab die falschen register genommen.. jetzt hab ich nur noch eine abweichung von +-2 LSB
Ein ähnliches Problem hatte ich letztens auch. Geholfen hat eine Verkürzung der Zeit, in der gemessen wird um die Hälfte (4 Messungen mit 128er Vorteiler). Ebenfalls erfolgreich war die Version mit AD Messung während die globalen Interrupts abgeschaltet sind - die erste Variante war mir lieber. Wie man das eleganter lösen kann kann ich dir leider nicht sagen, aber bis hier niemand antwortet, der den Durchblick hat kannst du das ja mal testen :).
Hi Bist du sicher, daß du das Low-Byte vom ADC richtig einliest ( richtige Reihenfolge)? Die Werte sehen aus, als ob nur das Highbyte (2Bit) ausgewertet würde. MfG Spess
so, ja wie gesagt tut mir leid, habe die falschen register genommen so hatte das low byte seinen wert woanders her und immernur das high byte hat gewechselt.. das erklärt auch die seltsamen sprunghaften änderungen des ADC. klappt nun schon ganz gut nur den ADC noise reduction modus möchte ich noch ausprobieren weil er durch das fading trotzdem noch ganz gut schwankt.. ganz egal wie viele kondensatoren ich da dranbaue?
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.