www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC läuft nicht frei


Autor: mr.chip (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Irgendwie kapiert mein ADC nicht, was 'free running' heisst. Ich 
initialisiere ihn folgendermassen:

Einstellen der Quellen (unbedeutend für das Problem):
ADMUX = (1 << REFS0) | (0 << ADLAR) | (n << MUX0);

Einstellen der Funktionsweise:
ADCSRA = (1 << ADEN) // Enable ADC
  |(1 << ADSC) // Start Conversion
  |(1 << ADIE) // Interrupt Enable (AUSGESCHALTET!)
  |(7 << ADPS0)// Prescaler XTAL / 128
  |(1 << ADATE); // Auto trigger enable (for free running)

Einstellen der Trigger-Source:
  ADCSRB = (0 << ADTS0); // free running mode


Komischerweise wird der ADC-Interrupt (im Simulator) nur genau einmal 
aufgerufen, obwohl der ADC ja free running sein sollte. Wenn ich im 
Interrupt ADSC wieder auf 1 schreibe, dann läuft er auch schön brav 
stetig durch. Allerdings sollte er ja automatisch getriggert werden.

Was mache ich bloss falsch?

Gruss
Michael

Autor: JaaWaa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meines Wissen muss man den wieder anwerfen. Ich tu's jeweils im ADC 
Interrupt : Lesen, dann neu starten.

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>(n << MUX0);

was ist denn n?
Und mit welchem Controller arbeitest du?

MW

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welcher Controller?

Ich habe vor Jahren mal das Problem gehabt, dass die 
Auto-Trigger-Funktionalität im Simulator nicht funktionierte. Ich 
vermute mal, dass das auch den Free Running Mode betrifft. In den 
Known Issues stand damals auch nichts von einem bekannten Bug. 
Möglicherweise hat sich da bis heute nichts dran geändert (OK, ich habe 
damals glaub ich keinen Bugreport an ATMEL geschrieben, was ich 
vielleicht hätte tun sollen).

Beitrag "AVRStudio-Simulator: ATMega16, ADC Auto Trigger"

Ich vermute mittlerweile fast, dass der Simulator schlicht und 
ergreifend das ADATE-Bit ignoriert.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
JaaWaa wrote:
> Meines Wissen muss man den wieder anwerfen.
Das sollte im Free Running Modus aber eben nicht nötig sein!

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael Wilhelm wrote:
>>(n << MUX0);
>
> was ist denn n?
Schätzungsweise die Kanalnummer...

Autor: mr.chip (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Meines Wissen muss man den wieder anwerfen. Ich tu's jeweils im ADC
> Interrupt : Lesen, dann neu starten.

Das würde aber den 'free running' Mode überflüssig machen. Es gibt ja 
diese Auto-Trigger-Sources, die den ADC selbst anwerfen. Eine davon ist 
free running, und da erwarte ich eben, dass der ADC dann auch 
tatsächlich automatisch angeworfen wird.

In meinem Fall ist das insofern wichtig, dass ich keinen ADC-Interrupt 
haben möchte, aber immer ein aktuelles Resultat. Der ADC soll einfach 
nebenher laufen und stetig abtasten, gelesen wird dann, wenn man gerade 
einen Wert braucht.

Autor: Ahem (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Eine davon ist free running, und da erwarte ich eben, dass der ADC dann auch
>tatsächlich automatisch angeworfen wird.
Das ist auch so. Habe ich auch schon verwendet.

Also den Controller wissen wir ja noch nicht, aber aus dem Manual vom 
48/88/168 habe ich mal folgendes herausgeholt. Ich gehe im Moment davon 
aus, das dies bei allen Megas so ist.


>Using the ADC Interrupt Flag as a trigger source makes the ADC start a new 
>conversion as soon
>as the ongoing conversion has finished. The ADC then operates in Free >Running 
mode, constantly
>sampling and updating the ADC Data Register. The first conversion must be 
>started by
>writing a logical one to the ADSC bit in ADCSRA. In this mode the ADC will 
>perform successive
>conversions independently of whether the ADC Interrupt Flag, ADIF is >cleared or 
not.

Autor: mr.chip (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich habe vor Jahren mal das Problem gehabt, dass die
> Auto-Trigger-Funktionalität im Simulator nicht funktionierte.

Das habe ich mittlerweile auch feststellen müssen. Auf dem AVR läuft es 
nämlich. Ein bisschen ärgerlich, was Atmel da produziert - fehlende 
Funktionen kann ich verstehen, aber dann sollte der Simulator wenigstens 
darauf hinweisen.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Ahem:
Klar, wie gesagt, ich gehe von einem Simulatorproblem aus. Wäre nicht 
das erste. Ich habe auch schon mit dem Free Running Mode in Hardware 
gearbeitet, und da läuft er...

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mr.chip wrote:
> aber dann sollte der Simulator wenigstens
> darauf hinweisen.
Wie gesagt, wenn niemand einen Bugreport schreibt, dann wird das nix. 
Auch wenn ich mir fast nicht vorstellen kann, dass das in drei Jahren 
noch keiner außer mir damals festgestellt hat...

Wenn die das dann nicht für nötig halten, es zu reparieren, dann kommt 
wenigstens in die Known Issues ein Eintrag, dass Auto Trigger nicht 
unterstützt wird. Da selbst das ausgeblieben ist, vermute ich stark, 
dass sich tatsächlich noch niemand ernsthaft beschwert hat. Aber der 
alte Simulator V1 wird ja denke ich mal sowieso nicht mehr gemaintaint.

Autor: Ahem (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Johnny-M

>Klar, wie gesagt, ich gehe von einem Simulatorproblem aus.

Ich weiss, das Du das geschrieben hast. Und?

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.