Hallo werte User,
als ich im ATmega 328 den analogen Komparator verwenden wollte, bin ich auf eine folgende Unstimmigkeit gestoßen, die ich mir bislang nicht erklären kann.
Funktion:
Im Programm-Schnipsel unten wird die interne Bandgap auf Komparator-Eingang AIN0 geschaltet, an AIN1 liegt ein Sägezahn von 0 bis 2V. Der Komparator-Ausgang (ACO) wird an PortD.5 ausgegeben. Das funktioniert !!. PortD.5 wechselt, sobald die Sägezahnspannung die interne Bandgap-Spannung überschreitet.
keine Funktion:
Wenn ich allerdings PortD.1 als Ausgang definiere, verbleibt dieser (ACO=High) im Ruhezustand. Diese Änderung ist unten im Programm auskommentiert.
Was habe ich übersehen? Oder woran kann es liegen?
Zugegeben, der PortD.1 ist der UART-TX-Port, jedoch soll man diesen auch als Generic-Port verwenden können.
Edit: Beim Senden von "Hallo" via print wechselt der Portd.1.
Alles anzeigen
als ich im ATmega 328 den analogen Komparator verwenden wollte, bin ich auf eine folgende Unstimmigkeit gestoßen, die ich mir bislang nicht erklären kann.
Funktion:
Im Programm-Schnipsel unten wird die interne Bandgap auf Komparator-Eingang AIN0 geschaltet, an AIN1 liegt ein Sägezahn von 0 bis 2V. Der Komparator-Ausgang (ACO) wird an PortD.5 ausgegeben. Das funktioniert !!. PortD.5 wechselt, sobald die Sägezahnspannung die interne Bandgap-Spannung überschreitet.
keine Funktion:
Wenn ich allerdings PortD.1 als Ausgang definiere, verbleibt dieser (ACO=High) im Ruhezustand. Diese Änderung ist unten im Programm auskommentiert.
Was habe ich übersehen? Oder woran kann es liegen?
Zugegeben, der PortD.1 ist der UART-TX-Port, jedoch soll man diesen auch als Generic-Port verwenden können.
Edit: Beim Senden von "Hallo" via print wechselt der Portd.1.
BASCOM-Quellcode
- '(
- Analog Komaparator
- ')
- $regfile = "m328pdef.dat"
- $crystal = 16000000 '
- $baud = 19200
- $hwstack = 64
- $swstack = 64
- $framesize = 64
- Ddrd = &B00100000 'Portd.5 als Ausgang
- 'Ddrd = &B00000010 'Portd.1 als Ausgang
- Acsr = &B01000000
- Waitus 70
- Do
- Portd.5 = Acsr.aco 'funktioniert
- 'Portd.1 = Acsr.aco 'funktioniert nicht !! Warum
- Loop
- End
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Ulrich ()