mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC - keine reaktion?


Autor: Sencer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HI,
ich danke allen, die mir geholfen haben.
Ich habe mir nochmal das Datenblatt angeguckt. Ich denke ich verstehe
jetzt sehr gut, wie das ganze Teil funktioniert.
Aber leider kriege ich von dem ADC keinen Wert. Weiss jemand, warum das
nicht funktioniert?
Ich habe den ADC so eingestellt das er im Freilaufenden MODUS arbeitet
und der Teilungsfaktor beträgt 8. (1MHz / 8 = 125kHz)
Ich habe einfach nur zum Test an PortB 8 LEDs angeschlossen und an PIN
20(ADC0) einen Potenziometer mit 100kOhm das an +5V und Masse
angeschlossen ist.
Mein Assembler-CODE sieht so aus:

.include "tn26def.inc"

LDI r16, 0b11111111
OUT DDRB, r16

LDI r16, 0b00000000
OUT ADMUX, r16

LDI r16, 0b11100011
OUT ADCSR, r16

LOOP:

IN r16, ADCL
IN r17, ADCH

ADD r16, r17

OUT PORTB, r16

RJMP LOOP

Habe ich was vergessen?

Sencer.

Autor: Thomas Burkhardt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

was soll eigentlich die Addition von r16 und r17 bewirken?

Autor: Sencer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das habe ich einfach nur zur Sicherheit in den CODE geschrieben, damit
die LEDs auch wirklich was anzeigen.

Autor: Thomas Burkhardt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
komische Sicherheit, du addierst da zwei 8 Bit Register, von denen eines
aber eigentlich eine höhere Wertigkeit hat. Das ergibt einfach recht
wenig Sinn...

Autor: Sencer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, sollte wieso nur ein Test-Code sein. ADCL beinhaltet 8 bits und
das andere Register 2 bits.
Was ist den nun mein fehler oder was habe ich vergessen?

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Mach mal alles am ADC0 weg und probier mal folgendes:
Von +5V zum ADC0 (Pin 20) einen Widerstand mit 10K.
Das Poti machst Du vom ADC0 zur Masse.
Je höher der Widerstand am Poti je höher der ADC-Wert.

Den Code probierst Du mal wie folgt:

.include "tn26def.inc"

LDI r16, 0b11111111
OUT DDRB, r16

LDI r16, 0b00100000       ;ADLAR-Bit setzen.
OUT ADMUX, r16

LDI r16, 0b11100011
OUT ADCSR, r16

LOOP:

IN r16, ADCH              ;ADC-Bits 2 - 9 sind jetzt in R16

COM r16                   ;Dadurch leuchtet eine LED wenn ein ADC-Bit 1
ist.

OUT PORTB, r16

RJMP LOOP

Durch das setzten von ADLAR auf 1 sind die ADC-Bits 2 - 9 in ADCH und 0
und 1 in ADCL an den Bit-Nr. 6 und 7 (left adjusted).

Gruß
Andi

Autor: Sencer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke sehr,
werde ich gleich mal ausprobieren.

Autor: Sencer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es funktioniert tadellos.
Mit meinem CODE hätte es bestimmt auch funktioniert, ich habe einfach
nur vergessen, das Bit7 an PORTB gleichzeitig der RESER PIN ist. Das
wurde über die LED auf Masse gelegt. MASSE = Programmier MODUS.
Anfänger fehler...
Naja, jetzt geht es.
Danke für deine Hilfe.

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.