PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ADC, wie lese ich ihn aus?



Claus
27.01.2004, 18:06
Hi,

Ich brauche mal die Hilfe eines AVR-Nutzers.

Ich versuche einen ADC anzusprechen, wobei ich ein Prog aus dem I-Netz nutze. Eigentlich sollte es einfach sein, aber irgendwo harkt es.
Ich bekomme keinen Wert der ADC-Wandlung auf den LEDS von Port D angezeigt.Immer sind alle an, egal ob ich auf Masse lege oder irgendeine Spannung z.b. 0.5V anlege. Die LEDs sind gegen 5V gelegt. Anbei das Ass-Prog,achja ein ATmega8L ist es.

Kjion
27.01.2004, 18:23
.include "m8def.inc"

.org 0x0000

rjmp reset

reset:
ldi r16, low(RAMEND)
out SPL, r16
ldi r16, high(RAMEND)
out SPH, r16

ldi r16, 0xFF
out DDRD, r16
ldi r16, 0b00100000
out ADMUX, r16
ldi r16, 0b11000101
out ADCSR, r16

ldi r16, 0b11110000
out PORTD, r16

loop:
sbis ADCSRA, ADIF
rjmp loop

in r16, ADCH

out PORTD, r16

ldi r16, 0b00100000
out ADMUX, r16
sbi ADCSRA, ADSC

rjmp loop

probiers mal damit ( mal ohne Interrupts ) ... allerdings keine Gewähr das es stimmt....

MfG Kjion

Florian
28.01.2004, 11:37
Hey Claus!
Kannste mir den Code mal schicken (email oder hier in deiesem Thread), wenn das ganze funktioniert?
Ich beschäftige mich nämlich auch gerade damit und verstehe da das net ganz!


Wie muss ich denn dann den Code für den AT90S4433 umändern?

Danke!

Claus
28.01.2004, 16:50
Hi,

danke fuer die Hilfe.

Es laeuft nun, sowohl single als auch free-run Modus mit Interrupt. Mein Fehler lag in dem nicht angeschlossenen Pin AVref. Nach setzen der Bits fuer AVcc ging alles super.

Anbei 2 demos fuer die beiden Modi.

p.s. alles in einer Datei.
ich gebe die Daten der Wandlung an den Port D (adc0-adc7) und Port B
(adc8-adc9) aus. Messkanal ist 0. Die Leds sind mit 1k gegen 5V gelegt.