Forum: Mikrocontroller und Digitale Elektronik wozu ein Prescaller am ADC


von Fragender Anfänger (Gast)


Lesenswert?

Warum gibt es einen Prescaller am internen ADC in einem uC?

Ist der ADC nicht in der Lage, eine Messung im MHz-Bereich 
durchzuführen, weil das mit der Messung zu "träge" ist und mit zB. 8MHz 
nicht funktioniert?

Wenn der ADC einen unabhänigen Takt hat - läuft der ADC dann auch 
getrennt vom Restprogramm parallel dazu, oder wenn ich eine Messung 
starte - hält mein sequentielles Programm so lange an, bis das 
Messergebnis da ist?

von Hans M. (hansilein)


Lesenswert?

1.
manchmal kann er nicht so schnell, manchmal braucht man ihn nicht so 
schnell, das spart strom

2.
bei vielen controllern gibt es beides,
continuous mode und single shot mode oder so.

von Bernd (Gast)


Lesenswert?

Ja, bei genauerem Nachsehen im Datenblatt findet man,
dass er nur bis etwa 200 kHz gut arbeitet.
Man muss also den gewählten Systemtakt für den ADC mit seinem
Prescaler auf einen sicheren Wert herunterteilen.

Hat man eine AD-Wandlung gestartet, läuft sie unabhängig vom
restlichen Programm ab.

Man kann im Programm eine Warteschleife einbauen und ständig das
Status-Bit abfragen, bis der AD-Wert abholbereit ist.

Hat man es nicht so eilig, kann man bei passender Gelegenheit
das Status-Bit abfragen und - nach Fertig-Meldung den AD-Wert
abholen.

Komplizierter wird es, wenn man den AD-Wandler beauftragt,
sobald er fertig ist, eine neue AD-Wandlung zu starten...

von Cyblord -. (cyblord)


Lesenswert?

1.) Der AD-Wandler braucht einen eigenen Takt von 50-200 KHz der aus dem 
Haupttakt gewonnen wird. Also braucht er einen Prescaler damit man den 
ADC bei allen Taktraten des µC nutzen kann. Steht auch so im Datenblatt.

2.)Der ADC läuft immer komplett getrennt vom Hauptprogramm. Wie auch 
sonst? Du setzt das ADSC Bit und dann gehts in deinem Programm weiter 
und der ADC macht ne Messung. Was da jetzt Single Shot usw. mit zu tun 
hat, weiß auch nur der Hans.

gruß cyblord

von Bernd (Gast)


Lesenswert?

@ cyblord ----    Nein!

Ich hab zum Beispiel auch darauf hingewiesen, dass die Behandlung
von automatisch wiederholten AD-Wandlungen etwas aufwändiger ist.
- Zumindest, wenn man alle Werte auch verarbeiten will...

von Cyblord -. (cyblord)


Lesenswert?

Bernd schrieb:
> @ cyblord ----    Nein!

Was nein? Was hab ich falsches geschrieben? Hör mit so einem Blödsinn 
auf, entweder du schreibst sofort was dir nicht passt du hälst die 
Klappe. Wie wär das?


> Ich hab zum Beispiel auch darauf hingewiesen, dass die Behandlung
> von automatisch wiederholten AD-Wandlungen etwas aufwändiger ist.
> - Zumindest, wenn man alle Werte auch verarbeiten will...
Ja na und? Das war in keinster Weise die Frage.

gruß cyblord

von Bernd (Gast)


Lesenswert?

Oha,
sich cyblord nennen und nicht mal die simpelsten Benimmregeln
kennen.

Automatisch wiederholte AD-Wandlungen sind nun mal kein
Single-Shot. Und das Abwarten, Abholen und Weiterverarbeiten
der AD-Werte muss im Programm unterschiedlich organisiert werden.

von Cyblord -. (cyblord)


Lesenswert?

Bernd schrieb:
> Oha,
> sich cyblord nennen und nicht mal die simpelsten Benimmregeln
> kennen.
Meld dich erstmal an, dann darfste bei den großen Mitspielen. So bist du 
nur ein Gast-Troll der mir nix von Benimm erzählen darf, solange er mir 
irgendwelche Aussagen unterstellt die ich nicht getätigt habe.

> Automatisch wiederholte AD-Wandlungen sind nun mal kein
> Single-Shot. Und das Abwarten, Abholen und Weiterverarbeiten
> der AD-Werte muss im Programm unterschiedlich organisiert werden.
Ja und nun? Wo hab ich sowas behauptet? Zitat bitte. Wovon redest du 
eigentlich? Es ging weder um Single-Shot vs Free-Running-Mode noch ging 
es darum wie man irgendwelche Werte schnell genug verarbeitet. Es ging 
nur um den ADC Prescaler. Kannst du das jetzt mal kapieren und evt. 
schauen ob du nicht irgendwelche Namen und Beiträge hier verwechselst? 
Ist ja nicht zum aushalten.

gruß cyblord

von bitte löschen (Gast)


Lesenswert?

Abgesehen davon

cyblord ---- schrieb:
> Es ging weder um Single-Shot vs Free-Running-Mode noch ging
> es darum wie man irgendwelche Werte schnell genug verarbeitet.

frage ich mich, was mit

Bernd schrieb:
> Und das Abwarten, Abholen und Weiterverarbeiten
> der AD-Werte muss im Programm unterschiedlich organisiert werden.

gemeint ist. Der einzige Unterschied ist das Setzen des ADFR bzw. ADATE 
Bits.
Ob man nun tumb daherwartet oder ADIE setzt und das Ergebnis im Handler 
auswertet, hat damit nichts zu tun. Das ist im Single Shot und im Free 
Running Modus gleich.
Also:
WAS muss unterschiedlich organisiert werden?

Zu den Fragen des TE fällt mir noch ein:
1. Der AD-Wandler wird mit zunehmender Taktfrequenz ungenauer. Der beste 
Kompromiss aus Geschwindigkeit und Genauigkeit ist für jede Anwendung 
separat herauszufinden.

2. Fragender Anfänger schrieb:
> hält mein sequentielles Programm so lange an, bis das
> Messergebnis da ist?

Nur wenn Du den µC während der Konvertierung schlafen legst. Dafür gibt 
es einen eigenen Sleep-Modus namens ADC Noise Reduction Mode.

von Fzzz (Gast)


Lesenswert?

Sinnvollerweise vewendet man den ADC interrupt um das Ganze zu steuern.

von spess53 (Gast)


Lesenswert?

Hi

>Zu den Fragen des TE fällt mir noch ein:
>1. Der AD-Wandler wird mit zunehmender Taktfrequenz ungenauer. Der beste
>Kompromiss aus Geschwindigkeit und Genauigkeit ist für jede Anwendung
>separat herauszufinden.

http://www.atmel.com/Images/doc8456.pdf

Auf Seite 17 ist die Sample&Hold-Stufe eines AVRs dargestellt.
Mit den Werten aus den Datenblättern ergibt sich für Radc und Cadc eine
Zeitkonstante von 0,014...1,4µs. In der Zeit lädt sich der Kondensator
auf 63,2 % der Eingangsspannung auf. Für 99,3 % braucht man schon die
fünffache Zeit. Die minimal Sampletime beträgt bei AVRs 1,5 ADC-Takte.

(5*1,4µs)/1,5 ergibt eine Periodendauer von 4,6666µs, was einer Frequenz
von 214,3 kHz entspricht.

Kommt das jemand bekannt vor?

MfG Spess

von MSP430 (Gast)


Lesenswert?

Ich verstehe nicht, wieso ihr auf en 50kHz bis 200kHz rumreitet.

Für den MSP430 gilt z.B.:

Internen Taktgenerator, (relativ ungenau) mit 5 bis 6 MHz.

Der Sampling-Kondensator ist mit ca. 20pF angegeben. Somit folgt die 
eigentliche Aufgabe doch eher daraus, die Anzahl an 
Sample-and-Hold-Zyklen so zu wählen, dass bei der gewählten 
ADC-Taktfrequenz die richtige Ladezeitkonstante eingehalten wird.

von Axel S. (a-za-z0-9)


Lesenswert?

MSP430 schrieb im Beitrag #2828245:
> Ich verstehe nicht, wieso ihr auf en 50kHz bis 200kHz rumreitet.

Weil die Hersteller von µC alle nur mit Wasser kochen und die 
Taktfrequenzen für den internen ADC ganz gut vergleichbar sein sollten.

> Für den MSP430 gilt z.B.:
> Der Sampling-Kondensator ist mit ca. 20pF angegeben. Somit folgt die
> eigentliche Aufgabe doch eher daraus, die Anzahl an
> Sample-and-Hold-Zyklen so zu wählen, dass bei der gewählten
> ADC-Taktfrequenz die richtige Ladezeitkonstante eingehalten wird.

Das ist erst die halbe Miete.

Der Komparator im ADC ist auch nicht beliebig schnell und begrenzt den 
Takt nach oben. Andererseits dürften die meisten integrierten ADC 
mittlerweile geschaltete Kondensatoren benutzen (a'la 
http://en.wikipedia.org/wiki/Successive_approximation_ADC#Charge-redistribution_successive_approximation_ADC)

Dann begrenzen die unvermeidlichen Leckströme die ADC-Taktfrequenz auch 
nach unten.


XL

von Fragender Anfaenger (Gast)


Lesenswert?

Herzlichen Dank fuer die Vielzahl an Euren Beiträgen.

Fzzz schrieb:
> Sinnvollerweise vewendet man den ADC interrupt um das Ganze zu steuern.

Ist es generell sinnvoll, mehrere Werte abzufragen und diese zu mitteln, 
wie in dem AVR-GCC-Beispiel zu dem obigen Link von mir? Wenn ja, macht 
es beim Mitteln auch Sinn, dies per Interrupt zu steuern? Wenn ich das 
sequenziell mache, dann kann ich einfach eine Schleife machen, mach ich 
das per Interrupt, dann muss ich noch einen Zähler basteln, der die 
gewünschte Anzahl zum Mitteln aufzählt.

von Hans M. (hansilein)


Lesenswert?

Ist das Signal sehr verrauscht würde ich lieber analog filtern.
Muss es digital sein (z.B. aus Platzgründen) ist der einfache Mittelwert 
so ziemlich der schlechteste Tiefpassfilter.

Ich würde erstmal ohne Mitteln anfangen und schauen ob die Werte gut 
genug sind.

von Aeh. (Gast)


Lesenswert?

>Muss es digital sein (z.B. aus Platzgründen) ist der einfache Mittelwert
so ziemlich der schlechteste Tiefpassfilter.

Den Mittelwert verwendet eh niemand. Was verwendet wird ist der 
exponentielle Mittelwert. Denn der braucht nur einen einzigen 
Speicherwert, und nicht 10 oder so. Und der exponentielle Mittelwert ist 
identisch zu einem Tiefpass erster Ordnung.
Siehe http://www.ibrtses.com/embedded/exponential.html

von Peter D. (peda)


Lesenswert?

Aeh. schrieb:
> Den Mittelwert verwendet eh niemand.

Doch, ich.
Warum auch nicht. Man kann damit prima z.B. 50Hz ausfiltern.


Aeh. schrieb:
> Und der exponentielle Mittelwert ist
> identisch zu einem Tiefpass erster Ordnung.

Stimmt, der filtert nur sehr schwach.


Peter

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.