Forum: Mikrocontroller und Digitale Elektronik Taktteiler für ADC einstellen(>50-200kHz)?


von Thomas O. (Gast)


Lesenswert?

Hallo,

ich möchte meinen ADC interruptgesteuert nutzen und eine möglichst
schnelle Wandlungszeit erreichen. Im Datenblatt steht das man ihn zw.
50 und 200kHz einstellen soll wenn aber die Genauigkeit von 10bit nicht
benötigt wird kann man auch mehr fahren.

Jetzt wollte ich mal die Praktiker fragen was da zu empfehlen wäre, da
mir hier das Datenblatt nicht weiterhilft.

Der Freerunmode ist doch jeweils nur für einen Kanal oder kann man hier
auch die Kanäle nacheinander durchlaufen lassen. Habe bis jetzt nur im
Single Modus probiert und da könnte ich ja in der Interruptroutine
jedesmal den Kanal weiterschalten(erhöhen) damit die Kanäle
nacheinander abgefragt werden oder ist diese Möglichkeit langsammer?

von ...HanneS... (Gast)


Lesenswert?

Hi...

z.B.:
In der Timer-ISR ADC auslesen und anschließend ADMUX auf neue Quelle
einstellen. Dabei sicherstellen (Vorteiler, Timereinstellung), dass ADC
genug Zeit zum Wandeln hat bzw. ADIF prüfen und ggf. das Auslesen und
Umschalten auf nächsten Timer-Int verschieben.

...HanneS...

von Thomas O. (Gast)


Lesenswert?

Hallo,

ok danke es geht aber hauptsächlich darum wie niedrig ich den
Taktteiler einstellen kann? Der µC läuft mit 8MHz  bei einem Teiler von
16 hätte der ADC einen Takt von 500kHz und bei einem Teiler von 32
250kHz.

Was passiert wenn ich den Teiler zu niedrig einstelle? Geht dann der
ADC wegen dem hohem Takt kaputt oder liefert er mir nur falsche Werte?

von Tobi (Gast)


Lesenswert?

im datenblatt steht man kann den höher betreiben aber auf kosten der
genauigkeit

von Thomas O. (Gast)


Lesenswert?

Hallo,

also meint ihr ich muss mir keine sorge um meinen AVR machen.

von Alex (Gast)


Lesenswert?

Brauchst du nicht :)

von Thomas O. (Gast)


Lesenswert?

Hallo,

ok danke werds dann mal richtig schnell probieren. Ob 65µSek sschon die
schnellste Wandelzeit?

von Thomas O. (Gast)


Lesenswert?

Hallo,

also ich habe es inzwischen geschaft das Signal eines Drucksensors zu
wandeln. Jetzt meine Frage läßt sich der AVR so einstellen das er
gleich ein 8bit Signal auspuckt damit man sich das ROR sparen kann um
es noch etwas schneller werden zu lassen, oder wird generell ins 10bit
Format gewandelt.

von DerMax (Gast)


Lesenswert?

ich glaube das is der klassische Fall für ein

  RTFM!

ja man kann ihn auf 8 bit umstellen

von Thomas O. (Gast)


Lesenswert?

Hallo,

RTFM hilft mir auch nichts, man wird hier immer hingestellt als ob man
zu faul wäre das zu lesen. Aber es beantwortet mir nicht meine Frage
einer schnelleren Wandlung.

If the result is left adjusted and no more than 8-bit precision is
required, it is sufficient to read ADCH. Otherwise, ADCL must be read
first, then ADCH, to ensure that the content of the data registers
belongs to the same conversion. Once ADCL is read, ADC access to data
registers is blocked. This means that if ADCL has been read, and a
conversion completes before ADCH is read, neither register is updated
and the result from the conversion is lost. When ADCH is read, ADC
access to the ADCH and ADCL Registers is re-enabled. The ADC has its
own interrupt which can be triggered when a conversion  completes. When
ADC access to the Data Registers is prohibited between reading of ADCH
and ADCL, the interrupt will trigger even if the result is lost.

So wie ich das jetzt interpretiere soll man einfach die 8 linken Bits
nehmen. Meine Frage war aber ob es einen Weg gibt eine schnellere
Wandlung zu erreichen ohne erst in 10Bit Auflösung zu wandeln.

von Tobi (Gast)


Lesenswert?

was ist das problem an 10bit wandlung? kannst du ja trotzdem schneller
stellen bloss dann solltest du dich nicht wundern wenn die unteren bits
schlackern. einfach richts shiften (wie oft auch immer) und du hast
einen wert

von ...HanneS... (Gast)


Lesenswert?

Hi...

Bei linksbündiger Ausgabe (das können aber nicht alle ADC-AVRs) hast du
die oberen 8 Bit im H-Byte, kannst die unteren 2 Bits, die im L-Byte
stehen, also ignorieren. Du sparst also die Aufbereitung des
Ergebnisses durch Schieben.

Ich nutze in der Auswertung meist eine Nachlauf-Variable mit Hysterese,
die das "Klappern" der unteren Bits verhindert. Sie wird nur
aktualisiert, wenn der neu eingelesene Wert mehr als die vorgegebene
Hysterese vom zuvor eingelesenen Wert abweicht. - Aber das wolltest du
ja NICHT wissen...

Wie schnell du sampeln kannst, musst du schon selbst herausfinden, mir
reichen da immer normale Abtastraten, mir muss es nicht extrem schnell
gehen. Wenn es möglich ist, starte ich eine Messung (mit INT) immer zu
einem Zeitpunkt, wenn keine andere ISR dazwischenfunken kann und das
Hauptprogramm gerade fertig ist und den AVR nach ADC-Start schlafen
schickt.

...HanneS...

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.