Forum: Mikrocontroller und Digitale Elektronik Tiny13 Vref stabilization


von Stefan (Gast)


Lesenswert?

Hallo,

im DB des Tiny13 steht auf Seite 84
1
When the bandgap reference voltage is used as input to the ADC, it will take a certain time for
2
the voltage to stabilize. If not stabilized, the first value read after the first conversion may be
3
wrong.
es wird jedoch nirgends angegeben auf was sich die "certain time" 
beläuft.

Ist das im Kontext der
1
The first ADC conversion result after switching reference voltage source may be inaccurate, and the user is advised to discard this result.
 und kann ich bei einer ausreichende Wartezeit die erste AD-Wandlung 
verwenden?

Konkret geht es um eine Ultra-Low-Power Anwendung bei der ich natürlich 
die Energie für die erste Wandlung einsparen würde.

Danke für Hilfe
--Stefan

von Einer K. (Gast)


Lesenswert?

Ich möchte jetzt nicht das Datenblatt nach der Stelle durchsuchen, 
welche du übersehen hast.
In den anderen AVR Datenblättern steht die Zeit drin.

Wenn du die Zeit sowieso verwarten musst, kannst du doch genauso eine 
erste Messung machen.
Und überhaupt, warum willst du die "reference voltage source" dauernd 
umschalten?
(ach, vergiss es, ist mir nicht wichtig)

von Stefan (Gast)


Lesenswert?

Ich antworte mal mir selbst.

Im Rahmen des Kapitels 8.2 (wusste garnicht, dass die ein eigenes 
Kapitel hat) wird auf die Tabelle 18-4 verwiesen, wo man die Werte 
findet:
tBG Bandgap reference start-up time typ 40 max 70 μs

Bleibt die Frage, ob ich nach abwarten der Zeit die erste AD Wandlung 
verwenden kann...

von Einer K. (Gast)


Lesenswert?

Das sind aber 2 Schuhe!

Ein grüner und ein gelber.

Stefan schrieb:
> Bandgap reference start-up time

Stefan schrieb:
> switching reference voltage source

Einen tragfähigen Zusammenhang sehe ich da nicht.

von Stefan F. (Gast)


Lesenswert?

Nach Abwarten der zeit kannst du die erste Messung verwenden.
Ohne Abwarten solltest du das Ergebnis der ersten Messung verwerfen.

von Karl M. (Gast)


Lesenswert?

Stefan schrieb:
> Konkret geht es um eine Ultra-Low-Power Anwendung bei der ich natürlich
> die Energie für die erste Wandlung einsparen würde.

Also im Datenblatt steht schon etwas drin, man muss es nur lesen.

8.2 Internal Voltage Reference
Voltage Reference Enable Signals and Start-up Time

Und dann weiter unter:
18.5 System and Reset Characteristics

Bandgap reference start-up time 40 70 μs
Bandgap reference current consumption 15 μs

Also wenn das nichts ist! Dann einen Daumen hoch!

Quelle: http://ww1.microchip.com/downloads/en/DeviceDoc/doc2535.pdf

von Einer K. (Gast)


Lesenswert?

Karl M. schrieb:
> 15 μs

Eine interessante Maßangabe für Strom.

von Stefan (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Das sind aber 2 Schuhe!

Nein, sind es nicht, da die Vref (falls nicht anderweitig verwendet) 
erst mit umschalten auf diese als Referenz aktiviert wird und das 
verwerfen der ersten Messung daher auf der Instabilität beruhen könnte.


Stefanus F. schrieb:
> Nach Abwarten der zeit kannst du die erste Messung verwenden.
> Ohne Abwarten solltest du das Ergebnis der ersten Messung verwerfen.

Das bedeutet umgekehrt, wenn die erste Wandlung, welche verworfen wird, 
kürzer als die Stabilisierungsdauer ist, kann die zweite Messung 
ebenfalls noch ungenau sein.
Z.Zt. läuft die erste Messung bei maximaler Geschwindigkeit, da ich 
nicht dachte, dass es von der Zeit abhängt. Also kann ich jetzt 
ausknobeln was stromsparender ist ist, Vref setzen und Timer in IDLE 
laufen lassen, oder ADC in NOISE REUCTION laufen lassen.

von Einer K. (Gast)


Lesenswert?

Stefan schrieb:
> (falls nicht anderweitig verwendet)
BOD aktiv?

Stefan schrieb:
> Nein, sind es nicht,
Wenn du das sagst, dann wird das wohl stimmen....

von Stefan F. (Gast)


Lesenswert?

> Das bedeutet umgekehrt, wenn die erste Wandlung, welche verworfen wird,
> kürzer als die Stabilisierungsdauer ist, kann die zweite Messung
> ebenfalls noch ungenau sein.

Ja richtig.

von Karl M. (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Karl M. schrieb:
> 15 μs
>
> Eine interessante Maßangabe für Strom.

Ja, ein Schreibfehler im DB. Es sind 15uA.

von M. K. (sylaina)


Lesenswert?

Stefan schrieb:
> Das bedeutet umgekehrt, wenn die erste Wandlung, welche verworfen wird,
> kürzer als die Stabilisierungsdauer ist, kann die zweite Messung
> ebenfalls noch ungenau sein.

Wie bekommste das denn hin, dass die erste Wandlung kürzer als die 
Stabilisierungsdauer ist? Wenn ich mich recht entsinne dauert die erste 
Wandlung, unabhängig vom Modus, immer 25 Zyklen. Und bei 200 kHz 
ADC-Takt sind das so Pi mal Daumen 125 us.
Solange man also den ADC innerhalb der Datenblattspezifikation benutzt 
ist die erste Wandlung immer länger als die Stabilisierungsdauer. 
Deshalb hab ich es mir angewöhnt stets die erste Wandlung a. direkt nach 
der Konfiguration (bzw. Rekonfiguration) des ADCs durchzuführen und b. 
zu verwerfen.

Stefan schrieb:
> Z.Zt. läuft die erste Messung bei maximaler Geschwindigkeit, da ich
> nicht dachte, dass es von der Zeit abhängt. Also kann ich jetzt
> ausknobeln was stromsparender ist ist, Vref setzen und Timer in IDLE
> laufen lassen, oder ADC in NOISE REUCTION laufen lassen.

Mit Timer ist es stromsparender. Du könntest nämlich den AVR in einen 
entsoprechenden Sleep-Modus hauen und dann entsprechend aufwecken wenn 
die Zeit rum ist.

: Bearbeitet durch User
von Stefan (Gast)


Lesenswert?

M. K. schrieb:
> Wie bekommste das denn hin, dass die erste Wandlung kürzer als die
> Stabilisierungsdauer ist? Wenn ich mich recht entsinne dauert die erste
> Wandlung, unabhängig vom Modus, immer 25 Zyklen. Und bei 200 kHz
> ADC-Takt sind das so Pi mal Daumen 125 us.
> Solange man also den ADC innerhalb der Datenblattspezifikation benutzt
> ist die erste Wandlung immer länger als die Stabilisierungsdauer.
> Deshalb hab ich es mir angewöhnt stets die erste Wandlung a. direkt nach
> der Konfiguration (bzw. Rekonfiguration) des ADCs durchzuführen und b.
> zu verwerfen.

Die ADC Frequenz hat lediglich Einfluss auf die Genauigkeit. Da das 
erste Ergebnis sowieso verworfen wird, lasse ich die mit maximaler 
Geschwindigkeit laufen (4,8 MHz), was grob 5uS macht. Also weit unter 
der Stabilisierungszeit.


M. K. schrieb:
> Mit Timer ist es stromsparender. Du könntest nämlich den AVR in einen
> entsoprechenden Sleep-Modus hauen und dann entsprechend aufwecken wenn
> die Zeit rum ist.

Ich finde leider nirgends Daten zum Stromverbrauch im ADC Noise 
Reduction Modus, aber aufgrund der Tatsache, dass eine Taktquelle mehr 
abgeschaltet ist, könnte der Modus stromsparender sein.
Die Frage läuft im Endeffekt darauf hinaus was mehr Strom zieht, 
laufender ADC oder ADC Idle + laufende clkIO.

von M. K. (sylaina)


Lesenswert?

Stefan schrieb:
> Die ADC Frequenz hat lediglich Einfluss auf die Genauigkeit. Da das
> erste Ergebnis sowieso verworfen wird, lasse ich die mit maximaler
> Geschwindigkeit laufen (4,8 MHz), was grob 5uS macht. Also weit unter
> der Stabilisierungszeit.

Naja, kann man ja halten wie man möchte. Etwas Zeiteffizienter wäre es 
aber, den ADC auf seine Benutzungsparameter einzustellen und die 
Stabilisierungszeit abzuwarten. Ich mein, was hast du davon den ADC mit 
4.8 MHz laufen zu lassen? Um sicher zu gehen musst du doch eh die 70 us 
maximale Stabilisierungszeit abwarten.

Stefan schrieb:
> Die Frage läuft im Endeffekt darauf hinaus was mehr Strom zieht,
> laufender ADC oder ADC Idle + laufende clkIO.

Hast du ein 4 1/2 stelliges Multimeter? Dann könntest du das messen. Ich 
hab hier einen Tiny85 an dem ich das mal austesten könnte.

EDIT: Habs mal kurz geprüft am Attiny85. Den Analog Comperator, Timer0&1 
sowie USI hab ich ausgeschaltet. Im Sleepmode Idle hat der Tiny noch ca. 
540 uA aufgenommen, im Sleepmode ADC-Noise-Reduction waren es ca. 490 uA 
bei Vcc = 3VDC. Ich denke bei einem Attiny13 dürfte sich das ähnlich 
verhalten.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

> Wie bekommste das denn hin, dass die erste Wandlung kürzer als die
> Stabilisierungsdauer ist? Wenn ich mich recht entsinne dauert die erste
> Wandlung, unabhängig vom Modus, immer 25 Zyklen. Und bei 200 kHz
> ADC-Takt sind das so Pi mal Daumen 125 us.

So hatte ich das auch in Erinnerung, deswegen war meine erste Antwort:
> Ohne Abwarten solltest du das Ergebnis der ersten Messung verwerfen.

Aber dann hat andere Stefan (Gast) nochmal nachgehakt was mich dazu 
animierte, ins Datenblatt zu schauen. Danach wurde mir klar, dass die 
erste Messung unter extremen Bedingungen (z.B. maximale Taktfrequenz) 
doch kürzer sein kann, als die benötigte Zeit.

von Karl M. (Gast)


Lesenswert?

Spannend finde ich noch die Frage: was dann passiert und wofür der
Attiny13 verwendet werden soll?

So ein isolierter Atmel ohne Außenkontakt ist in meinen Augen zu nichts 
zu gebrauchen.
Soll heißen, wenn Daten erfasst werden, müssten sie auch weiter gegeben 
werden.

Wie erfolgt das?

von M. K. (sylaina)


Lesenswert?

Stefanus F. schrieb:
> Danach wurde mir klar, dass die
> erste Messung unter extremen Bedingungen (z.B. maximale Taktfrequenz)
> doch kürzer sein kann, als die benötigte Zeit.

Ja klar, kann sein. Aber warum sollte man den ADC schneller als mit 200 
kHz laufen lassen? Das reduziert doch nur die effektive Auflösung. Man 
stellt ihn also auf 4.8 MHz damit was genau passiert? Da kann man IMO 
den ADC direkt auf die richtige Frequenz einstellen und eine 
Dummy-Wandlung durchführen. Macht halt meiner Meinung nach mehr Sinn.
Wenn man nur 8 Bit braucht kann man bis auf 1 bis 1.5 MHz hochgehen 
hatte ich mal ausprobiert bis einem das Rauschen des ADCs reinpfuscht. 
Aber für ernsthafte Anwendungen halte ich auch das für zu unsicher, man 
kann sich ja nicht darauf verlassen, dass das für jeden µC gilt, das 
kann ja fertigungsabhängig sein.

von Purzel H. (hacky)


Lesenswert?

Stromspar & den ADC mit 4.8MHz laufen lassen passt irgendwie nicht 
zusammen. Wie immer wissen wir zuwenig, und werden mit einer Loesung 
beworfen, ohne das Problem zu kennen.
Also erst das Problem, dann die loesung. Die ADC Zeit zu verkuerzen soll 
Strom sparen ?

von Stefan (Gast)


Lesenswert?

@M. K.:
Danke für die Messergebnisse, dann werde ich es per Dummy-Wandlung 
machen, da das Stromsparender ist.
Mehr als 200kHz würde Sinn machen, wenn der ADC bei der ersten Wandlung 
ungenau ist, aber dies nicht von einer Zeitkonstante abhängt. Dann 
könnte man die erste Wandlung so schnell wie möglich machen um sie 
hinter sich zu bringen. Da nun aber geklärt ist, dass es nicht die erste 
Wandlung ist, sondern das Hochlaufen der Vref für Ungenauigkeit sorgt, 
ist der Ansatz maximal schnell zu wandeln und verwerfen hinfällig.

Karl M. schrieb:
> Spannend finde ich noch die Frage: was dann passiert und wofür der
> Attiny13 verwendet werden soll?
>
> So ein isolierter Atmel ohne Außenkontakt ist in meinen Augen zu nichts
> zu gebrauchen.
> Soll heißen, wenn Daten erfasst werden, müssten sie auch weiter gegeben
> werden.
Ganz abgeschnitten von der Welt ist er ja nicht, es gibt ein 
minimalistisches HMI welches alle paar Wochen was ausgibt.
Abgesehen davon gibt es aber tausende Anwendungen in denen uCs quasi 
abgeschnitten von der Welt ihren Dienst verrichten.

Jetzt ist G. schrieb:
> Stromspar & den ADC mit 4.8MHz laufen lassen passt irgendwie nicht
> zusammen. Wie immer wissen wir zuwenig, und werden mit einer Loesung
> beworfen, ohne das Problem zu kennen.
> Also erst das Problem, dann die loesung. Die ADC Zeit zu verkuerzen soll
> Strom sparen ?
Ja ja, die gute alte "beim Stromsparen die Frequenz so langsam wie 
möglich"-Leier...
Kleines Rechenbeispiel, 100 Instruktionen Tiny @ 2,7V:
100kHz = 40uA; 1000uS => 108nWs
10Mhz = 2840uA; 10uS => 77nWs
=> Unter 3,3V hießt es bei Tinys: Für Stromsparen hoch mit der Frequenz.

von S. Landolt (Gast)


Lesenswert?

> 108nWs ... 77nWs

Das ist mir noch nicht ganz klar: für einen korrekten Vergleich müsste 
man doch noch wissen, wieviel Strom der ATtiny13 in den restlichen 990 
us braucht; wenn er nicht von außen geweckt wird, hieße das Idle-Mode + 
Timer.

von Stefan (Gast)


Lesenswert?

S. Landolt schrieb:
>> 108nWs ... 77nWs
>
> Das ist mir noch nicht ganz klar: für einen korrekten Vergleich müsste
> man doch noch wissen, wieviel Strom der ATtiny13 in den restlichen 990
> us braucht; wenn er nicht von außen geweckt wird, hieße das Idle-Mode +
> Timer.

Die Idee hinter Ulta Low Power ist einerseits den uC so lange und so 
tief wie möglich schlafen zu legen und andererseits im aktiven Betrieb 
so wenig wie möglich zu verbrauchen.
Tiefschlaf ist der Power Down und dort verbraucht er unabhängig von der 
eingestellten Frequenz immer gleich viel, da der Oszillator 
ausgeschaltet ist.
Und im aktiven Modus muss man dann halt schauen was weniger verbraucht, 
schnell und Energiehungrig oder sparsam dafür lange. Wie gesagt ist bei 
den neuen AVRs unter 3,3V eigentlich immer schnell angesagt.

von S. Landolt (Gast)


Lesenswert?

D.h. Sie schalten den ATtiny13 in den Power-down-Modus und wecken ihn 
für die ADC-Messung von außen per INT0 oder PCINT auf - okay, das konnte 
ich aus den bisherigen Beiträgen nicht herauslesen.

von Stefan (Gast)


Lesenswert?

S. Landolt schrieb:
> D.h. Sie schalten den ATtiny13 in den Power-down-Modus und wecken ihn
> für die ADC-Messung von außen per INT0 oder PCINT auf - okay, das konnte
> ich aus den bisherigen Beiträgen nicht herauslesen.

Nicht ganz, er wird per Watchdog geweckt. Ändert ab an der ganzen 
Geschichte nichts.

von S. Landolt (Gast)


Lesenswert?

Da ich fast nie den Watchdog benutze, hatte ich diesen unbewusst 
ausgeblendet; sieht mit seinen rund 4 uA bei 2.7 V ganz gut aus.

von M. K. (sylaina)


Lesenswert?

S. Landolt schrieb:
> Da ich fast nie den Watchdog benutze,

Den Watchdog zu benutzen ist aus verschiedenen Sichtweisen sinnvoll, 
sollte man sich angewöhnen, auch wenn es erstmal Arbeit ist sich damit 
auseinander zu setzen.

Stefan schrieb:
> Kleines Rechenbeispiel, 100 Instruktionen Tiny @ 2,7V:
> 100kHz = 40uA; 1000uS => 108nWs
> 10Mhz = 2840uA; 10uS => 77nWs
> => Unter 3,3V hießt es bei Tinys: Für Stromsparen hoch mit der Frequenz.

Warum das ganze auf unter 3.3V begrenzen? Die Kurve Strom über Frequenz 
ist doch relativ linear bei den AVRs (nicht nur bei den Tinys).

: Bearbeitet durch User
von 2 Cent (Gast)


Lesenswert?

Stefan schrieb:
> Tiefschlaf ist der Power Down und dort verbraucht er unabhängig von der
> eingestellten Frequenz immer gleich viel, da der Oszillator
> ausgeschaltet ist.
Stefan schrieb:
> Kleines Rechenbeispiel, 100 Instruktionen Tiny @ 2,7V:
> 100kHz = 40uA; 1000uS => 108nWs
> 10Mhz = 2840uA; 10uS => 77nWs

Ist das "kleine Rechenbeispiel" mit 100 Instruktionen und 77nWs 
gemessen, oder nur Konstruiert? Ich habe so meine Zweifel ob das 
Aufwachen aus deinem
Tiefschlaf heraus nicht eine "Extraportion" des gesparten Futters 
wegfrisst. Insgesamt haengt das alles tuerlich auch von der 
Programmlaufzeit und Haeufigkeit (Schlafzeit) ab.

Stefan schrieb:
> Also kann ich jetzt
> ausknobeln was stromsparender ist

Wenns stromsparen wirklich wichtig ist (Mission to Mars): verschiedene 
Versionen selber testen und messen und testen und messen...

Just my name

von Schreiber (Gast)


Lesenswert?

Karl M. schrieb:
> So ein isolierter Atmel ohne Außenkontakt ist in meinen Augen zu nichts
> zu gebrauchen.
> Soll heißen, wenn Daten erfasst werden, müssten sie auch weiter gegeben
> werden.
>
> Wie erfolgt das?

Solche Teile werden für alles von Dämmerungsschalter über 
Kaffeemaschinen bis hin zu Treppenlichtschalter und einfache Regler 
(z.b. Motordrehzahl konstant halten oder Akkus schonend laden) 
verwendet.

von Stefan (Gast)


Lesenswert?

M. K. schrieb:
> Warum das ganze auf unter 3.3V begrenzen? Die Kurve Strom über Frequenz
> ist doch relativ linear bei den AVRs (nicht nur bei den Tinys).

Es spricht nichts dagegen es auch bei höheren Spannungen zu machen. Ich 
hatte beim schreiben nur irgendwie den Knoten im Kopf, dass über 3,3V 
der Strom exponentiell wächst, was jedoch falsch ist.

2 Cent schrieb:
> Ist das "kleine Rechenbeispiel" mit 100 Instruktionen und 77nWs
> gemessen, oder nur Konstruiert? Ich habe so meine Zweifel ob das
> Aufwachen aus deinem
> Tiefschlaf heraus nicht eine "Extraportion" des gesparten Futters
> wegfrisst. Insgesamt haengt das alles tuerlich auch von der
> Programmlaufzeit und Haeufigkeit (Schlafzeit) ab.

Welches Futter soll es wegfressen?
Bei allen internen Oszillatoren ist die "Start-up Time from Power-down" 
6CK, unabhängig von den SUT Fuses.
Daher würde die langsame Frequenz sogar noch mehr Energie verbrauchen, 
da die oben genannte Rechnung auch hier anwendbar ist.

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.