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?
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...
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?
im datenblatt steht man kann den höher betreiben aber auf kosten der genauigkeit
Hallo, ok danke werds dann mal richtig schnell probieren. Ob 65µSek sschon die schnellste Wandelzeit?
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.
ich glaube das is der klassische Fall für ein RTFM! ja man kann ihn auf 8 bit umstellen
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.