mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Interrupt bei fertiger AD-Wandlung auf Atmega128


Autor: Oz zy (ozzy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

um Code zu sparen möchte ich gerne für meine AD-Wandlungen folgendes 
machen: in einem Array stehen die Pinnummern, an denen die auszulesenden 
Werte anliegen. Nun wird mit einer for-Schleife durch das Array 
durchgegangen, und an Feld i die Pinnummer eingelesen, die AD-Wandlung 
gemacht, und dann in ein zweites Array an Nummer i geschrieben.
Nun aber meine Frage: gibt es eine intelligente Möglichgkeit, diese 
AD-Wandlung das erste mal anzustoßen? Denn ich möchte ungerne für die 
erste Wandlung den Code noch einmal einfügen...

Habt Ihr da eine schlaue Idee für mich?

Vielen Dank schon einmal im Voraus, Ozzy

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Christoph Osterloh (ozzy)

>Nun aber meine Frage: gibt es eine intelligente Möglichgkeit, diese
>AD-Wandlung das erste mal anzustoßen?

Was gibt es da anzustossen? Ausser deine Routione ist in einem 
Interrupt. Dann reicht es, den ADC zu konfigurieren und im Fre-Running 
Modus zu aktivieren.

> Denn ich möchte ungerne für die erste Wandlung den Code noch einmal einfügen...

???

MFG
Falk

Autor: Oz zy (ozzy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

dann hatte ich das wohl etwas falsch verstanden: ich dachte, man müsse 
die AD-Wandlung erst einmal anstossen (eben durch eine AD-Wandlung), 
nach derem Ende er dann in die Interrupt-Routine springen würde.

Dann werde ich das mal mit dem Free-Runngin-Modus probieren.

Aber noch eine Frage: wenn ich im Interupt eine AD-Wandlung anstoße, was 
passiert dann mit dem Wert? Oder geht doch so etwas:

ad_values[AdcChannel] = ADConv(ad_pin[AdcChannel]);

denn nach der ADäWandlung springt er doch in die Routine, oder?

MfG, Ozzy

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Christoph Osterloh (ozzy)

>dann hatte ich das wohl etwas falsch verstanden: ich dachte, man müsse
>die AD-Wandlung erst einmal anstossen (eben durch eine AD-Wandlung),
>nach derem Ende er dann in die Interrupt-Routine springen würde.

Genau das macht der ADC auch.

>Aber noch eine Frage: wenn ich im Interupt eine AD-Wandlung anstoße, was
>passiert dann mit dem Wert? Oder geht doch so etwas:

>ad_values[AdcChannel] = ADConv(ad_pin[AdcChannel]);

>denn nach der ADäWandlung springt er doch in die Routine, oder?

Ja. Aber pass auf dass du das mit dem ADC-MUX richtig machst, da kann 
man sich ins Knie schiessen und denkt, man hat eine Versatz von einem 
Kanal drin.

MFG
Falk

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

Bewertung
0 lesenswert
nicht lesenswert
Christoph Osterloh wrote:
> Moin,
>
> dann hatte ich das wohl etwas falsch verstanden: ich dachte, man müsse
> die AD-Wandlung erst einmal anstossen (eben durch eine AD-Wandlung)
Man muss nur am Anfang einmal das ADSC setzen, nachdem man den ADC 
initialisiert hat. Der Rest läuft (im Free Running Modus) von selbst. 
Allerdings ist es sinnvoll, nach dem Einschalten des ADC (ADEN setzen) 
eine Dummy-Wandlung durchzuführen und das Ergebnis wegzuschmeißen. Die 
erste Messung nach dem Einschalten ist i.d.R. für die Tonne.

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.