Wer kann mir helfen? Ich habe schon ADC zum laufen gekriegt, aber der im mega8 weigert sich strikt. Mit folgendem Code möchte ich den ADC0 im single conversion mode laufen lassen und den Interrupt benutzen, aber es geht nicht: ;in der Reset Routine hab ich für die konfiguration: ldi tmp,0b11000000 out ADMUX,tmp ;Int Ref & ext Cap; Adj Right; ADC0 ldi tmp,0b10001000 out ADCSR,tmp ;und in einem Timer-interrupt steht zum starten der Wandlung: sbi ADCSR,ADSC der Timer-interrupt findet auch statt, aber der ADC-Interrupt wird nicht ausgelöst. Weiss jemand warum? Bin dankbar für jede Hilfe! Ingo
> Weiss jemand warum?
Weil Du den ADC übertaktest? Du hast einen Teilerfaktor von 2
eingestellt, die ADC-Taktfrequenz soll aber zwischen 50 und 200 kHz
liegen. Ich bezweifle, daß Dein Prozessor mit 100...400 kHz Takt
arbeitet...
Danke, ich habs grad gefunden, was schief läuft: der Simulator vom AVRStudio 4.08 macht einfach nicht was ich will, der mega8 schon. Ich habs auch ohne prescaler getestet, ich glaub man hat dann nur eine schlechtere als 10-Bit-Genauigkeit oder?
Hättest Du nicht gleich schreiben können, daß das im AVRStudio passiert? Ist ein altbekanntes Problem, daß da ADC-Interrupts nicht ausgelöst werden. TWI funzt im Simulator auch nicht.
> Ich habs auch ohne prescaler getestet, ich glaub man hat dann nur > eine schlechtere als 10-Bit-Genauigkeit oder? Wie kommst Du auf diesen Dampfer? Nein, wenn Du die 200 kHz überschreitest, läßt die Genauigkeit nach. Das steht so irgendwo im Datenblatt. Wenn Du sie heftig überschreitest, wird er sicher irgendwann nicht mehr vernünftig wandeln. Was passiert, wenn man die 50 kHz unterschreitet, steht glaub ich nirgends geschrieben, ich kann mir vorstellen, daß die S&H Logik dann vielleicht zu viel nachläßt, so daß die Wandlung ebenfalls ungenau wird. Aber im Allgemeinen will man ja ohnehin kürzestmögliche Wandlungszeiten erzielen.
Die S&H Schaltung könnte auch die obere Schranke bestimmen. Es dauert halt einige Zeit, bis sich der Kondensator auf den Eingangswert aufgeladen hat. Müsste man mal ausprobieren, wie weit der Meßung bei hoher Rate verfälscht wird. Vermutlich wird es dabei aber auch einiges an Streung in der Fertigung geben. Wie der eingebaute DA Wandler arbeitet ist ja nicht definiert - finde ich sowieso schade, daß der nicht per S&H ausgeführt wird, wie es bei anderen Bausteinen der Fall ist.
> Wie der eingebaute DA Wandler arbeitet ist ja nicht definiert - > finde ich sowieso schade, daß der nicht per S&H ausgeführt wird, wie > es bei anderen Bausteinen der Fall ist. Doch, ich glaube mich schon zu erinnern, daß irgendwo beschrieben ist, daß es sich um einen Wandler mit sukkzessiver Approximation handelt, und auch der S&H ist implizit erwähnt: der Meßwert/-kanal zum Zeitpunkt des Starts der Messung bleibt während der Konvertierung erhalten. Man kann den ADMUX sofort nach dem Start der Messung auf einen anderen Kanal umschalten, diese Umschaltung wird erst für die nächste Messung wirksam.
In einer speziellen Anwendung betreibe ich den ADC mit 1MHz. Dabei kann man ca. 6-7 Bits verwenden. Wenn man weniger Bits braucht kann man noch mehr MHz nehmen.
Interessante Aussage. Beschreib' mal, wie Du das ermittelt hast, damit man sich ein Bild machen kann, wie gut das reproduzierbar ist. (Welcher Controller? Meßverfahren? Über wie viele Chips ermittelt?) Kann ja zuweilen gut sein, daß man sowas mal gebrauchen kann.
@Joerg: richtig das alles ist beschrieben - nur eben nicht der verwendete DA Wandler. Man kann aber wohl annehmen, daß es ein Wandler ist, welcher mit einem Widerstandsnetzwerk arbeitet.
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.