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
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
Kann man auch so lesen: Im active sleep mode or in idle sleep mode. Wo ist nun das Problem?
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.
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.
Gerhard H. schrieb: > the ADC will have missing codes könnte ja bedeuten daß er "zwischendurch" auch Brauchbares liefert 🤔
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.
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.
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.
> 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).
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.
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
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. ;-)
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.