www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC Ergebnis als 8 BIT Zahl auf LEDs ausgeben


Autor: Andy11 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Ergebnisse einer ADC Wandlung landen beim Atmega 16 in den Registern
ADCH und ADCL.

http://www.mikrocontroller.net/articles/AVR-Tutorial:_ADC

im Tutorial steht unter "Die Ergebnisregister ADCL und ADCH" bei ADLAR = 
1 (2te Möglichkeit), dass man das Ergebnis als 8 Bit Zahl interpretieren 
kann.

Dazu mein Programm:
 
;**********************************Header**************************************
;Projektname:
;Name des Erstellers:
;Zuletzt aktualisiert:
;
;*****************************Initialisierungen********************************
.include "m16def.inc" ;Definitionsdatei des Mega16

;Stackpointer-init***********
  ldi r16, High(Ramend)
  out SPH, r16

  ldi r16, Low(Ramend)
  out SPL, r16

;ADC-init***********
  ldi r16, 0x24    ;Externe Referenz, Ergebnis linksbündig, Kanal 4
  out ADMUX, r16    ;Ausgabe

  ldi r16, 0x81    
  out ADCSRA, r16

;*****************Deklarierete Funktionen und
Subroutinen**********************

;*************************Variablendeklarationen*******************************

;*****************************Ein-Ausgänge*************************************
  ser r16      ;Setze Registerinhalt auf 255 (ldi r16, 255)
  out DDRB, r16   ;Portb als Ausgabeport

;*****************************Hauptprogramm************************************

Hauptprogramm:
  sbi ADCSRA, ADSC   ;Starte ADC  
  in r16, ADCH    ;Lade Ergebnis in r16
  neg r16        ;Drehe 0ler und 1ser um (für STK500)
  out PORTB, r16    ;Gebe Ergebnis an PORTB aus
jmp Hauptprogramm



wenn ich jedoch am Potentiometer drehe, der an PinA4 hängt tut sich nur 
manchmal was oder halt garnichts

ist der Fehler in der Software?
Ich benutze das STK 500

Autor: AVRuser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

>Hauptprogramm:
>  sbi ADCSRA, ADSC   ;Starte ADC
>> ... (da fehlt was!)
>  in r16, ADCH    ;Lade Ergebnis in r16
>  neg r16        ;Drehe 0ler und 1ser um (für STK500)
>  out PORTB, r16    ;Gebe Ergebnis an PORTB aus
>jmp Hauptprogramm

So kann das nicht gehen. Man muss nach Start der Wandlung schon warten, 
bis sie fertig ist. (Genaueres siehe Datenblatt des Controllers unter 
ADC.)

Autor: AVRuser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag: Im genannten ADC-Tutorial steht es richtig ...

Autor: Andy11 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
cool danke

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.