Hallo oberallgeier
du benutzt in ALLEN deinen ADC Zugriffen immer die OR Funktion
ADMUX |= blabla
da werden ja NIE Bits gelöscht....
Das funktiniert also nur wenn vorher im Register eine Null drin steht.
Nach einem Hardwarereset sollte es so ein, aber nach einem Softwarereset
steht da noch der letzte Wert drin.
Keine Ahnung ob daraus der Fehler rührt, vermutlich nicht, war mir nur grad aufgefallen.
Im Datenblatt ATmega328PB Punkt 28.5 stehen einige Problematiken beim Einstellen des MUX Registers.
Wenn Du das MUX Register einstellst sollte noch kein Interrupt eingeschaltet sein, scheint okay bei Dir
und die erste Messung muss evtl. verworfen werden.
könnte es sein, dass der erste Interrupt Dich in die Mindestschwelle führt,
der Wert aber noch nicht gültig ist.
Kannts Du den Code so ändern, dass z.B. die Ersten xx Werte ignoriert werden nach der Initialisierung.
---
eben noch was gesichtet:
Es gibt Unterschiede zwischen den Typen
ATmega328/P und ATmega328PB
Dokument AT15007: Differences between ATmega328/P and ATmega328PB
das betrifft unter anderem wohl auch die Analogeingänge 6 und 7
ADC7– Port E, Bit 3
PE3 can also be used as ADC input channel 7.
Note: ADC input channel 7 uses analog power AVCC
liegt hier evtl. das Problem
Noch eine Idee:
ADC7 liegt beim TQFP direkt neben einem GND .
Liegt da evtl. etwas Restzinn, so etwas hatte ich auch schon...
Nochmal richtig reinigen.
und noch eine:
Könnte es sein, dass an dem Eingang eine interne Schutzdiode leitend geworden ist und somit Strom wegzieht.
Das kann man nur prüfen wenn man den Controller tauscht oder ein anderes Board, wenn zur Verfügung, probiert.
Gibt es bei den Atmels eigentlich keine "Errata Sheets" ? zu jedem PIC gibt es entsprechende Dokumente, was da nicht richtigt funktioniert
und da ist oftmals so Einiges zu finden.
Auf der Microchip Seite oder auch im Netz habe ich dazu aber noch nichts gefunden.
Bei meinen NXP Prozessoren habe ich auch Tage gesucht wegen Ausreißer bei den ADU Werten,
da stellte sich dann heraus, dass es tatsächlich ein Chipfehler ist, den man mit entsprechendem Code umgehen konnte.
Beim PIC18F4620 z.B. gibt es 44 Offizelle Fehler die im Errata Sheet dokumentiert sind.
oder baut Atmel etwa voll funktionstüchtige Chips.....
Siro
Lesezeichen