Taktteiler für ADC einstellen(>50-200kHz)?

Gast #112905
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?
Gast #112906
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...
Gast #112907
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?
Gast #112912
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.
Gast #112914
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.
Gast #112915
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
Gast #112916
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...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren