Forum: Mikrocontroller und Digitale Elektronik AVR16EB14/20/28/32 Silicon Errata


von Gerhard H. (hauptmann)


Lesenswert?

In den Errata der brandneuen AVR-EB findet sich der etwas unglaubliche 
Bug

Internal Reference:
When ADC is using internal reference and running in active or idle sleep 
mode, the ADC will have missing codes.

Work Around
Use external reference or perform conversions only when device is in 
standby sleep mode.

Soll das heißen der ADC liefert im normalen Betrieb mit interner 
Referenz überhaupt keine Werte??

: Bearbeitet durch User
von Veit D. (devil-elec)


Lesenswert?

Hallo,

liefert falsche Werte, so lese ich das auch. Wenn der EB mit dem Bug 
wirklich in den Handel kommt wäre das übelst schwach. Würde ich mir 
nicht getrauen. Aber der EB ist laut meines Wissens noch nicht im 
Handel. Also abwarten und Tee trinken. Bisher waren fast alle Bugs 
irgendwie human umgehbar.

: Bearbeitet durch User
von Ove M. (Firma: ;-) gibt es auch) (hasenstall)


Lesenswert?

Kann man auch so lesen:
Im active sleep mode or in idle sleep mode. Wo ist nun das Problem?

von Gerhard H. (hauptmann)


Lesenswert?

Ove M. schrieb:
> active sleep

gibts nicht, nur idle/ standby/ powerdown.

Veit D. schrieb:
> Aber der EB ist laut meines Wissens noch nicht im Handel.

Direkt von Microchip erhältlich.

von Veit D. (devil-elec)


Lesenswert?

Gerhard H. schrieb:
> Veit D. schrieb:
>> Aber der EB ist laut meines Wissens noch nicht im Handel.
>
> Direkt von Microchip erhältlich.

Dann wird er wohl so auch in den Handel kommen. Das wäre natürlich 
äußerst schwach. Damit ist der ADC nahezu unbrauchbar.

von Gerhard H. (hauptmann)


Lesenswert?

Gerhard H. schrieb:
> the ADC will have missing codes

könnte ja bedeuten daß er "zwischendurch" auch Brauchbares liefert 🤔

von Marc X. (marc_x)


Lesenswert?

Veit D. schrieb:
> Gerhard H. schrieb:
>> Veit D. schrieb:
>>> Aber der EB ist laut meines Wissens noch nicht im Handel.
>>
>> Direkt von Microchip erhältlich.
>
> Dann wird er wohl so auch in den Handel kommen. Das wäre natürlich
> äußerst schwach. Damit ist der ADC nahezu unbrauchbar.

Ach das ist ja noch harmlos, es gibt Bausteine da funktionieren 
komplette Peripherieblöcke nicht, hatten das mal bei einem STMicro SPC 
und wollten eine Applikation mit CAN-FD bauen und ausgerechnet der ging 
nicht, bzw. erst nachdem ein neuer Maskensatz produziert wurde, ich hab 
auch mal mit einem anderen Mikrocontroller rumgespielt, da ging I2C 
nicht, wenn die Daten zwei mal hintereinander 0x00 sind. Nach solchen 
Erlebnissen fängt man an das Errata zu lesen bevor man überhaupt einen 
Controller in Erwägung zieht.

von Thorsten S. (thosch)


Lesenswert?

Veit D. schrieb:
> Damit ist der ADC nahezu unbrauchbar.
Naja, ganz so schlimm ist es ja nun auh wieder nicht.

Der Workaround war ja angegeben:
Use external reference or perform conversions only when device is in
standby sleep mode.

Also entweder eine externe Referenz verwenden, oder den μC für die 
ADC-Messung in den standby sleep mode schicken.

Viele ADCs in Mikrocontrollern haben ein Störabstands-Problem, wenn man 
sie im active mode des Controllers betreibt. Nicht selten sind die 
niederwertigen 2-3 Bits von Rauschen dominiert...

Oft reicht die erzielbare Genauigkeit dennoch, z.B. mit gleitender 
Mittelwertbildung.

Wer richtig genau messen muß, nimmt eh einen externen ADC.

von Gerhard H. (hauptmann)


Lesenswert?

Thorsten S. schrieb:
> Viele ADCs in Mikrocontrollern haben ein Störabstands-Problem, wenn man
> sie im active mode des Controllers betreibt.

Also it's no bug, it's a feature?
War mit den 12bittigen active-mode Ergebnissen der AVR-Dx bislang sehr 
zufrieden, wenngleich es nur langsam veränderliche Sensor-Spannungen zu 
messen gab. Die Mittelwertbildung kann auch gleich in Hardware erfolgen.

: Bearbeitet durch User
Beitrag #7526695 wurde vom Autor gelöscht.
von ---- _. (quaddash)


Lesenswert?

> the ADC will have missing codes
heißt bei ADCs eher, dass diese "Lücken" haben, also ganz bestimmte 
ADC-Rohwerte nicht ausgeben. An genau dieser Stelle hast du dann eine 
kleine Abweichung, die bei "no missing codes" eben nicht da wäre. Es 
wird dann der nächstliegende "non-missing code" ausgegeben. (So mein 
Verständnis).

----, (QuadDash).

von Rolf (rolf22)


Lesenswert?

Gerhard H. schrieb:
> Soll das heißen der ADC liefert im normalen Betrieb mit interner
> Referenz überhaupt keine Werte??

"Missing codes" ist in diesem Kontext ein bekannter Fachausdruck. Der 
ADU liefert immer einen Wert. Was fehlt, sind nur bestimmte Codes, an 
deren Stelle werden andere (benachbarte) geliefert.

Microchip selbst erklärt das hier:
https://microchip.my.site.com/s/article/Explaining-and-reducing-missing-codes-in-microcontroller-ADC

Der ADU überspringt also einen oder mehrere Digitalwerte. Ob, wann und 
um wieviel ungenauer er dadurch wird, ist aus der Aussage gar nicht zu 
erkennen.

von Gerhard H. (hauptmann)


Lesenswert?

Rolf schrieb:
> Der ADU überspringt also einen oder mehrere Digitalwerte.

Demzufolge wäre bei geringeren Ansprüchen die Mittelwertbildung eine 
probate Methode.

Rolf schrieb:
> Microchip selbst erklärt das hier

Gute Erklärung, danke. Daß dies Thema bei einem FVR-ADC Controller sein 
kann war mir noch gar nicht bekannt.

: Bearbeitet durch User
von S. L. (sldt)


Angehängte Dateien:

Lesenswert?

ein Beispiel

von Veit D. (devil-elec)


Lesenswert?

Hallo,

was mir noch durch den Kopf geht. Ich frage mich warum in der Familie 
überhaupt solche komischen Bugs entstehen. Ich meine die Chipentwickler 
arbeiten doch auch mit Baugruppen die sie schon entwickelt haben. Die 
fangen doch nicht bei jeder Abwandlung komplett bei Null an. Um hier 
beim Bsp. zu bleiben. Wenn der ADC beim DA und DB funktioniert wie er 
soll, wundert es mich das er beim EB nicht 100% funktioniert. 
Desweiteren arbeiten die doch auch sicherlich mit Simulationssoftware. 
Warum sehen die sowas nicht vor der Maskenbestellung? Die Chipentwickler 
werden sicherlich auch nicht von einer Variante zur nächsten in der 
Controller Familie plötzlich die Fertigungstechnologie wechseln. Also 
können Problem damit auch ausgeschlossen werden. Ich würde es bei einer 
kompletten Neuentwicklung verstehen wenn man dann so mutig ist und das 
Produkt mit Fehler auf den Markt bringt. Aber hier gibt es ja schon 
Typen der Familie die den Fehler nicht haben. So richtig kann ich den 
Fehler nicht nachvollziehen.

Ist hier jemand zufällig irgendwo Chipentwickler und kann kurz darüber 
abreißen wie sowas passieren kann? Es soll nicht nur um Microchip gehen. 
Andere bringen auch defektes Zeug auf den Markt. ;-)

von Gerhard H. (hauptmann)


Lesenswert?

Veit D. schrieb:
> Wenn der ADC beim DA und DB funktioniert

und DD und EA...

von Gerhard H. (hauptmann)


Angehängte Dateien:

Lesenswert?

So ich war mal neugierig und hab mir ein paar Ergebnisse von meinem 
Versuchsobjekt AVR16EB28, Datecode 2332, Revision A0-Q ausgeben lassen.
Dabei fällt auf daß Richtung 12Bit Maximalwert FFFH immer mehr 
Einzel-Werte einer eingestellten Messspannung fehlen: Konkret sind es im 
result2.jpg 0FC7-0FCA. Für den ders selber am Controller ausprobieren 
will eine kleine .hex anbei die die digitalisierte Messspannung an PD0 
im Takt einer LED an PA5 auf dem seriellen Port PA0/1 mit 9600 Baud 8N1 
ausgibt. Gewählte interne Referenz ist 2,048V.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

eine .hex Datei? Das ist nicht dein ernst, oder?

von Gerhard H. (hauptmann)


Lesenswert?

Daß man weiß was man mit einer .hex anfängt hatte ich ganz dreist mal 
vorausgesetzt, Veit D.

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
Noch kein Account? Hier anmelden.