Analoge Ports auslesen

Gast #1337170
Lesenswert?
• ▲
▼
Hallo,
ich arbeite mit einenm Atmega8 und programmiere in Assembler. Es gelingt 
mir einen Analogport ( Port C Wandler0 ) zu lesen, aber ich weiß nicht 
wie ich am elegantesten mehrere Anlaogwerte von Wandler 1,2+3 
hintereinander lesen kann. Ein Beispiel wäre hilfreich.
Danke
#1337179
Lesenswert?
• ▲
▼
Norbert schrieb:
> Hallo,
> ich arbeite mit einenm Atmega8 und programmiere in Assembler. Es gelingt
> mir einen Analogport ( Port C Wandler0 ) zu lesen,

Nenne das Teil bitte in Zukunft ADC
Konkret möchtest du die ADC0, ADC1, ADC2 auslesen.


> aber ich weiß nicht
> wie ich am elegantesten

Kümmere dich erst mal darum, dass du überhaupt den jeweiligen ADC 
auslesen kannst. Eleganz kommt dann später.

Du musst in ADMUX den jeweils gewünschten Kanal einstellen.
Siehe zb hier
http://www.mikrocontroller.net/articles/AVR-Tutorial:_ADC#ADMUX

Danach aktivierst du den ADC so wie du es auch bei deinem ersten 
erfolgreichen Kanal gemacht hast, wartest auf das Ergebnis und holst dir 
aus dem ADCH/ADCL Register den Messwert ab. Alles wie gehabt. Der 
einzige Unterschied zwischen den einzelnen Anschlüssen ist nur die 
Kanalnummer in ADMUX
#1337204
Lesenswert?
• ▲
▼
Norbert schrieb:
> Hallo,
> ok ich nenne die Ports in Zukunft ADC!
> Soweit so gut, wann weiß ich denn zu welchem Zeitpunkt die Wandlung
> fertig ist?

Studiere das Beispiel auf der verlinkten Tutorialseite.

Auszug:
1
sample_adc:
2
    sbi     ADCSRA, ADSC        ; den ADC starten
3
 
4
wait_adc:
5
    sbic    ADCSRA, ADSC        ; wenn der ADC fertig ist, wird dieses Bit gelöscht
6
    rjmp    wait_adc
7
 
8
; ADC einlesen:
9
 
10
    in      adlow, ADCL         ; immer zuerst LOW Byte lesen
11
    in      adhigh, ADCH        ; danach das mittlerweile gesperrte High Byte

Als Assemblerprogrammierer kommst du nicht umhin, auch mal anderen Code 
ein paar Stunden lang zu studieren. Die Tutorialsbeispiele sind 
hoffentlich soweit gut genug mit Kommentaren versehen, dass man im Code 
nachvollziehen kann was abgeht.
Gast #1337219
Lesenswert?
• ▲
▼
Hallo,
ich denke nun komme ich klar. Es ist immer hilfreich wenn man ein 
Beispiel hat. Ich wusste z.B. nicht dass das ADCSRA Register auch 
Bitweise gelesen und geschrieben werden kann. Ich komme aus der SPS-Welt 
und da ist einfach alles etwas einfacher zudem bin ich das zyklische 
programmieren gewohnt und komme normaler weise nicht auf die Idee eine 
Schleife zu bilden die erst dann verlassen wird wenn das Ereignis wahr 
oder flasch ist. In der Automatisierungstechnik geht das nicht da die 
dort verwendeten CPUs um mehrere Potenzen langsamer sind.
Nochmals vielen Dank.
Ich finde dieses Portal echt super!!
Persönliche Seite #1337692
Lesenswert?
• ▲
▼
>In der Automatisierungstechnik geht das nicht da die
>dort verwendeten CPUs um mehrere Potenzen langsamer sind.

Das ist einfach falsch bzw. nicht mehr richtig...

Heutige SPS haben locker die Power eines Mega8. Spätestens eine 
Software-SPS kann wenn gewünscht/möglich auf die Power von n PC-x86 
Kernen zugreifen

Das warten in Schleifen kann dort nicht machen weil dein System dann 
nicht mehr echtzeitfähig ist.
Eine SPS muss in festen Zeitabständen (dem Zyklus), Eingänge lesen und 
Ausgänge schreiben.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.