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]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







Zitieren

Lesezeichen