Hallo, allerseits!
Ich hab eine Frage zu einem altbekannten Problem: Spannung messen mit dem Atmega8...
Ich weiß, das wurde schon oft durchgekaut und ich habe mich heute schon den ganzen Tag durch alle möglichen Internetseiten, insbesondere der Roboternetz- und Mikrocontroller.net- Suche gewühlt, aber nichts passendes gefunden...
Bislang habe ich immer nur mit der C-Control zu tun gehabt und möchte mich nun auch mit den AVRs befassen...
Um mir den Einstieg zu erleichtern, hab ich auf mikrocontroller.net erfolgreich das Tutorial durchgearbeitet (allerdings mit einem Atmega8-16PC) und möchte jetzt den Teil mit dem AD-Wandler ein wenig vertiefen.
Dazu sollen Spannungen von 0 bis 5 Volt gemessen und über UART ausgegeben werden.
Probeweise habe ich mir folgenden Code zusammen gewurschtelt, welcher sich im Nachhinein aber als völliger Quatsch herausstellt hat...![]()
Abfragen möchte ich nach Möglichkeit PD0 und den gemessenen Wert in ein Register speichern, um ihn nachher an ein LCD oder über die serielle Schnittstelle (UART) auszugeben...Code:.include "m8def.inc" .def temp = r16 .equ CLOCK = 4000000 .equ BAUD = 9600 .equ UBRRVAL = CLOCK/(BAUD*16)-1 ; Stackpointer initialisieren ldi temp, LOW(RAMEND) out SPL, temp ldi temp, HIGH(RAMEND) out SPH, temp ; Baudrate einstellen ldi temp, LOW(UBRRVAL) out UBRRL, temp ldi temp, HIGH(UBRRVAL) out UBRRH, temp ; Frame-Format: 8 Bit ldi temp, (1<<URSEL)|(3<<UCSZ0) out UCSRC, temp sbi UCSRB,TXEN ; TX aktivieren ldi r16, 0x00 out DDRD, r16 ;Port D durch Ausgabe von 0x00 ins ;Richtungsregister DDRD als Eingang konfigurieren loop: in r16, PIND ;an Port D anliegende Werte (Taster) nach r16 einlesen rcall serout ;Unterprogramm aufrufen ldi temp, 10 rcall serout ldi temp, 13 rcall serout rjmp loop serout: sbis UCSRA,UDRE ; Warten bis UDR für das nächste ; Byte bereit ist rjmp serout out UDR, temp ret ; zurück zum Hauptprogramm
Reicht es einfach, AREF an 5V zu legen oder muss ich Softwareseitig noch etwas einstellen?
Was muss ich machen, damit mein Code doch noch funktioniert.
Bei Assembler möchte ich auch gerne bleiben, da es mich irgendwie juckt, auch damit programmieren zu können...
Ich weiß, dass ich viel verlange, da das Thema ADC ja schon sehr oft besprochen wurde, aber ich komme immer noch mit der einfachen AD-Port-Abfrage der C-Control durcheinander...
Mit freundlichen Grüßen,
Philipp Wehner







Zitieren

Lesezeichen