Hallo Leute,

bin ein absoluter Anfänger, mit 2 Wöchiger Atmel Erfahrung!!!!

Also jetzt zum Thema...
Ich versuche schon seid Tagen einen Poti-Wert (0-5V) über den ADC Eingang des ATMega 16 Controlers auszulesen und auf eine 16x2 LCD-Anzeige dar zu stellen. Sobald ich das Poti verändere soll sich auch die Anzeige ändern.

Später soll ein eingelesenes Signal an PA0 mit dem Potiwert an PA1 verrechnet werden und über I2C an einen DAC-Baustein gesendet werden. Der dann das veränderte Signal darstellt bzw. neu generiert. Das LCD soll die Eingangs- und Ausgangspegel darstellen. Soviel zur Theorie

!!! Leider scheitert es schon an dem Auslesen eines popligen Potis *seufts*


Code:
main: ;Hauptprogramm---------------------------------------------------------
	;Stack-Pointer an die letzte SRAM Addresse
	ldi temp, LOW(RAMEND) ;LOW-Byte der obersten RAM-Adresse
	out SPL, temp
	ldi temp, HIGH(RAMEND) ;HIGH-Byte der obersten RAM-Adresse
	out SPH, temp

	rcall ports_init ;Funktioniert
	rcall lcd_init ;Funktioniert
	rcall adc_init ;Funktioniert nicht!!!

Schleife:;ADC einlesen----------------------------------------------------------
	in lowByte, ADCL ;immer zuerst low byte lesen
	in highByte, ADCH ;danach das mittlerweile gesperrte high byte

        sbi ADCSR, ADIF ;logisch "1" löscht ADIF 

	push temp ;temp auf dem Stack sichern

	swap temp ;High-Nibble löschen
	andi temp, 0x0F	;High- und Low-Nibble vertauschen
	rcall hex2ascii
	rcall lcd_datenausgabe ;ASCII Zeichen an LCD Sub
	pop temp ;temp vom Stack holen

	andi temp, 0x0F	;High-Nibble löschen
	rcall hex2ascii
	rcall lcd_datenausgabe ;ASCII Zeichen an LCD Sub

rjmp Schleife	;Endlosschleife, Programmende



;ADC initialisieren "Free Run Modus"
;------------------------------------------------------------------------------------
adc_init:
	;ADEN (ADC Enable) = 1
	;ADSC (ADC Start Conversion) = 1
	;ADFR (ADC Free Run Select) = 1
	ldi temp, ((1<<ADEN)|(1<<ADSC)|(1<<ADFR))+7
	out ADCSR, temp

	ldi temp, 1
	out ADMUX, temp	;Spannungsmessung an PA0 (Kanal1)
ret


;ADC -> Umwandlung in ASCII
;-----------------------------------------------------------------------------------
hex2ascii:
	cpi temp, 10
	brsh ha1
	subi temp, -48
ret

ha1:
	subi temp, -55
ret
[/code]