mikrocontroller.net

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


Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
im datenblatt steht man kann den höher betreiben aber auf kosten der
genauigkeit

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

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

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Brauchst du nicht :)

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

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

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: DerMax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich glaube das is der klassische Fall für ein

  RTFM!

ja man kann ihn auf 8 bit umstellen

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.