Hallo,
jetzt steht die Schaltung, und der Analog Comparator erfüllt seine
Funktion zu fast 100%, aber leider nur fast. Ich möchte jetzt keine
Schaltung als Grafik schicken, da sie zu simpel ist. An AIN1 liegt via
Teiler eine Spannung von ca. 1V. An AIN0 ist eine LDR angeschlossen. An
PortB0
ist eine weiße Led und an PortB7 eine rote Led. Wenn es hell ist,
befindet sich die Spannung am LDR unter der des Teilers und es leuchtet
die rote Led. Wird es dunkel, so wird die Schwelle überschritten und die
weiße Led leuchtet. So weit okay.
Folgender Codeausschnitt aus dem AC Interrupt sollte doch eigentlich
funktionieren (Übrigens ist AC auf toggeln eingestellt)
...
com schalter
cpi schalter, 0xFF ; hell
brne pc+3
ldi copy, 0b11111110
out PortB, copy
tst schalter ; dunkel
brne pc+3
ldi copy, 0b01111111
out PortB, copy
...
Eine frühere Version war, dass ich einfach den Portzustand mit com
negierte. Dies hatte aber zur Folge, das irgendwas statisch wurde, und
der LDR nicht mehr reagiert hat, wahrscheinlich hatte ich damit auch die
Pull-Ups deaktiviert, wer weiß.
Mit dem obigen Code passiert aber folgendes: Wenn Zustand = hell -> rote
Led leuchtet. Ändert sich der Zustand auf dunkel, leuchtet die weiße
ganz kurz auf, dann leuchtet im dunklen die rote und im hellen die weiße
Led. Da ich noch neu in der Thematik bin, vermute ich das die LDR am AC
Eingang prellt, liege ich da richtig? Jedenfalls hat ein 10nF von AIN0
auf Masse das Problem erheblich verbessert. Trotzdem passiert es selten,
dass eine Zustandsänderung nicht sofort erkennt wird, vor allem wenn ich
ganz schnell von hell nach dunkel oder umgekehrt verfahre.
Meine Fragen:
- Muss ich den Analog Comparator entprellen, bzw., eine Hysterese
einbauen?
- Später soll eigentlich nur das Bit ACO ausgelesen werden, erübrigt
sich dann das Problem?
- Können mögliche Störlichtquellen den Sensor verwirren, wie z.B. die
weiße Led (eigentlich ne dumme Frage)?
Gruß und Danke
Thomas