-
        

Ergebnis 1 bis 7 von 7

Thema: hex Werte H und L des ADC auslesen

  1. #1

    hex Werte H und L des ADC auslesen

    Anzeige

    Hallo Leute ich AVR Anfänger wole etwas lernen. Im mikrocontroller.net konnte mir leider keiner helfen.

    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.
    http://www.mikrocontroller.net/topic/325865#new
    habe schon fast alles ausprobiert. eigentlich alles.

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Hallo

    "Admux = &B01100000 'Bits7+6=01: Aref ist intern verbunden
    ? 'Bit5=1: LeftAdjust, nur 8 Bit in ADCH „WAS muss ich hier..."

    Bit 5 (ADLAR) muss 0 sein. Dann wird das Ergebniss der Wandlung in den Bits 0 bis 9 gespeichert. Beschreibung von Bit5 im Datenblatt:

    • Bit 5 – ADLAR: ADC Left Adjust Result
    The ADLAR bit affects the presentation of the ADC conversion result in the ADC Data
    Register. Write one to ADLAR to left adjust the result. Otherwise, the result is right
    adjusted. Changing the ADLAR bit will affect the ADC Data Register immediately,
    regardless of any ongoing conversions. For a complete description of this bit, see “The
    ADC Data Register – ADCL and ADCH” on page 208.


    Aber möglicherweise habe ich deine Frage falsch verstanden:

    "Aber ich bekomme immer nur eine zweistellige hex raus."

    Mehr kann auch in ADCH nicht drinstehen. Die drei Hexstellen sind auf ADCH und ADCL verteilt. Eine Hexziffer representiert genau 4 Bits, auch ein Nibble genannt. Die Bits 0-3 sind das Lownibble, Bits 4-7 das Highnibble. Beide zusammen bilden das Byte welches jeweils in ADCH und ADCL gespeichert werden kann. ADCH und ADCL zusammen bilden dann die 16 Bits in die das Ergebniss der Wandlung gespeichert wird. Mit ADLAR = 0 wird das Ergebniss rechtsbündig in die Bits 0-9 in ADC (=ADCH und ADCL zusammen) kopiert, bei ADLAR = 1 in die Bits 6 bis 15 von ADC:

    Code:
    1111 11
    5432 1098 7654 3210
    HHHH HHHH LLLL LLLL  | ADC
    
    xxxx xx98 7654 3210  | ADLAR = 0
    9876 5432 10xx xxxx  | ADLAR = 1

    Gruß

    mic
    Geändert von radbruch (01.03.2014 um 17:47 Uhr) Grund: Rechtschreibung

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Vielen Dank das du dich um mein Problem kümmerst.

    Ich benutze AVR terminal über Podi 5V und Taster hex o. bin werte auslesen.
    Ich bekomme aus dem ADCH FF = 255 das ist ok, aber ich möchte doch
    h 3FF = 1023 bei 10 Bit. Wie komme ich an den (register) wo die 16 Bit drinnen sind.
    Wenn ich Ergebnis = 256 * ADCH
    Ergebnis = Ergebnis + ADCL bekomme ich auch nur FF raus ich müsste doch dann auf 3FF = 1023 kommen das bekomme ich nicht hin.

    Mir geht es im moment nicht um die Spannung nur um die 3FF o. Dez 1023

    Ich weis das erst h byte dann l byte gespeischert werden wie bekomme ich die zur einer zahl. Kann es sein das das AVR terminal das nicht schafft.
    Und könnte ich es über den BASECOM Simulator anzeigen?
    Noch mal vielen Dank . Irgendwie bin ich am ende.

    Auf der Seite ist es gut erklärt
    http://www.avr-modelleisenbahn.de/co...is-atmega8.htm
    Nachdem eine Wandlung abgeschlossen ist (ADIF ist High), kann das Ergebnis der Wandlung in den ADC Result Registern ADCL und ADCH abgeholt werden. „aber wie?“

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Hallo

    An die 10 Bit kommst du, wenn du eine 16-Bit Variable (vom Typ Word) mit dem Ergebniss der Wandlung (mit ADLAR=0 ) lädst:

    Code:
    Dim Adcwert16bit As Word
    
    Adcwert16bit = Adc
    
    'oder
    
    Adcwert16bit = Adch * 256
    Adcwert16bit = Adcwert16bit + Adcl
    [Edit]
    Wenn Udr das Senderegister des USART ist funktioniert es nicht, weil Udr nur 8 Bit breit ist. In diesem Fall unterschlägt man dann die niederwertigen Bits im Ergebniss, schiebt alles nach links und sendet nur ADCH mit den 8 hochwertigen Bits. Dann hat man allerdings nur einen 8BIT-ADC. Kleinster Schritt mit 10 Bit ist 5V/1024 ca. 5mV, bei 8Bit das vierfache eben (ca. 20mV). Die Formel muss du dann natürlich auch anpassen:

    Vin = Vref*ADC/255

    Gruß

    mic
    Geändert von radbruch (01.03.2014 um 16:11 Uhr)

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    48
    Beiträge
    1.254
    auch ein Nipple genannt.
    http://thefunniestpictures.com/wp-co...pple-Twist.jpg

    Vermutlich meintest du Nibble, sorry, ich konnte mich nicht beherrschen

    Gruß, Michael

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Vermutlich meintest du Nibble, sorry, ich konnte mich nicht beherrschen
    Upps, ja, meinte ich

    Danke für den Hinweis.

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  7. #7
    Jetzt habe ich es begriffen! Vielen vielen Dank!!! Liebe grüße aus Marburg/Lahn jürg

Ähnliche Themen

  1. Werte speichern und später über RS232 auslesen?
    Von TobiasBlome im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 11.06.2007, 20:31
  2. Spannung mit ADC messen und Werte mit USART im Hyperterminal
    Von karthago im Forum C - Programmierung (GCC u.a.)
    Antworten: 14
    Letzter Beitrag: 01.02.2007, 18:27
  3. Sensoren auslesen und Werte an Servos weitergeben
    Von semicolon im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 05.07.2006, 14:53
  4. ADC auslesen und den Wert auf LCD anzeigen.
    Von MischaMV im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 13.04.2006, 00:09
  5. adc konfigurieren und auslesen
    Von lionking im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 10.04.2006, 13:55

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •