ADC im mega8 will nicht

Gast #58191
Lesenswert?

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
Gast #58192
Lesenswert?

> 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...
Gast #58193
Lesenswert?

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?
Gast #58195
Lesenswert?

> 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.
Gast #58196
Lesenswert?

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.
Gast #58197
Lesenswert?

> 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.
Gast #58199
Lesenswert?

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.
Gast #58200
Lesenswert?

@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.

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