Forum: Mikrocontroller und Digitale Elektronik die hex Werte H und L des ADC auslesen


von Jürg W. (wudy189)


Lesenswert?

Hallo Leute ich AVR Anfänger will etwas lernen.

Ich möchte die hex Werte H und L  des ADC auslesen komme nicht weiter.

Habe es geschafft laut Roland Walter Buch  die H Bits auf Tastendruck 
auszulesen.

Aber ich bekomme immer nur eine zweistellige hex raus.
Ich wollte 10 Byte. Eine dreistellige hex.

Hier mein Listing  für Basecom

$Regfile="m8def.dat"   'ATmega8-Deklarationen
$Crystal=3686400       'Quarz: 3,6864 MHz
$baud = 9600           'Baudrate zum PC: 9600 Baud
Declare Sub Keypressed
Portd.5 = 1
DDRC =&B00000000       'PC7...PC0=0: PortC-Pins auf Eingang
Admux = &B01100000     'Bits7+6=01: Aref ist intern verbunden
     ? 'Bit5=1: LeftAdjust, nur 8 Bit in ADCH „WAS muss ich hier 
ändern???“
                            'Bits3...0=0000: Pin ADC0 wählen
ADCSRA=&B11100010           'Bit7=1:AdcOn,Bit6=1:Start,Bit5=1:Frei
                            'Bits2+1+0=010: AdcClock=AvrClock/4
 Do
  Debounce Pind.5 , 0 , Keypressed , Sub
Loop
End
Sub Keypressed
    Udr = Adch
  End Sub
  End

Schon  mal  vielen Dank. Ich hoffe ich mache  mich  hier nicht 
lächerlich!

von Rudolph (Gast)


Lesenswert?

Jürg Wodarka schrieb:
> ? 'Bit5=1: LeftAdjust, nur 8 Bit in ADCH „WAS muss ich hier
> ändern???“

Hrm, das Bit nicht setzen?
Und mal das Datenblatt im Kapitel ADC öffnen.

von Jürg W. (wudy189)


Lesenswert?

Das habe ich schon probiert.Habe auch schon (alles) gelesen was es zum 
ADC gibt. Habe aber nichts gefunden was mich weiter bringt.

von Ulrich (Gast)


Lesenswert?

Die 10 Bits des AD Ergebnis verteilen sich auf die 2 Register ADCL und 
ADCH. Zum Auslesen muss man erst ADCH und dann ADCL auslesen - viele 
Compiler können auch schon gleich beide Register als ein pseudo 16 Bit 
register ansprechen etwa als adc oder adcw.

Wenn das BIT LeftAdjust gestetzt ist, sind 8 Bits in ADCH und 2 in ADCL, 
sonst ist es anders herum.

von Jürg W. (wudy189)


Lesenswert?

ja das ist mir bekannt. aber ich kann nur ADCH oder ADHL auslesen. ich 
verstehe aber nicht wie ich die High und Low zusammen bekomme das ich 
eine dreistellige hex bekomme.

von Karl H. (kbuchegg)


Lesenswert?

Jürg Wodarka schrieb:
> ja das ist mir bekannt. aber ich kann nur ADCH oder ADHL auslesen. ich
> verstehe aber nicht wie ich die High und Low zusammen bekomme das ich
> eine dreistellige hex bekomme.


Ergebnis = 256 * ADCH
Ergebnis = Ergebnis + ADCL


In BASCOM gibt es sicher auch noch andere Möglichkeiten um die High-Bits 
um 8 Stellen nach links zu verschieben.

Aber warum benutzt du eigentlich nicht BASCOM-typisch ganz einfach die 
vorgefertigte Funktion getadc?
http://avrhelp.mcselec.com/index.html?getadc.htm

: Bearbeitet durch User
von Jürg W. (wudy189)


Lesenswert?

ich komm verrückt!!
mit den zeilen bekomme ich auch nur zweistellige hex.

     Ergebnis = 256 * Adch
Ergebnis = Ergebnis + ADCL

mit getadc bekomme ich auch nichts hin.

vieleicht solte ich anfangen zu stricken :-)

von Jürg W. (wudy189)


Lesenswert?

Hallo kbuchegg, war doch ok!!!

    Ergebnis = 256 * Adch
Ergebnis = Ergebnis + ADCL

AVRTerminal sendet halt nur 8 Bit.

Also dann vielen Dank!

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
Noch kein Account? Hier anmelden.