Hallo,
wir verwenden einen AtMega8515 und programmieren diesen in Assembler mit dem AVRStudio. Am 0. Bit von PinD liegt unser Schalter. Er ist low-aktiv.
Das Datendirektionsregister wird gesetzt:
Dann gibt es eine Schleife:
Wir lesen also ständig den Pind ein. Solange der 0. Bit gesetzt (unser Schalter also nicht gedrückt) ist, überspringen wir den Rcall. Sobald unser Taster gedrückt wird, soll der RCall ausgeführt werden.
In der Simulation funktioniert das ganz gut. Auf dem Chip leider nicht.
Wir haben weder sonderlich viel Erfahrung, noch Lösungen für dieses Problem (in Assembler) im Internet gefunden und sind daher dankbar für jede Hilfe.
Danke im Voraus
Mit freundlichen Grüßen
Patter
EDIT: Wir haben nun das Problem selbst lösen können, indem wir die Pull-Up-Widerstände zum Beginn eingestellt haben.
wir verwenden einen AtMega8515 und programmieren diesen in Assembler mit dem AVRStudio. Am 0. Bit von PinD liegt unser Schalter. Er ist low-aktiv.
Das Datendirektionsregister wird gesetzt:
Code:
ldi tmp, 0b00000110 ;Die Pins 1 und 2 sind LEDs, daher Ausgang
out ddrd, tmp
Dann gibt es eine Schleife:
Code:
main:
in tmp, pind
sbrs pind, 0
rcall neuberechnung;delay
rjmp main
In der Simulation funktioniert das ganz gut. Auf dem Chip leider nicht.
Wir haben weder sonderlich viel Erfahrung, noch Lösungen für dieses Problem (in Assembler) im Internet gefunden und sind daher dankbar für jede Hilfe.
Danke im Voraus
Mit freundlichen Grüßen
Patter
EDIT: Wir haben nun das Problem selbst lösen können, indem wir die Pull-Up-Widerstände zum Beginn eingestellt haben.
Code:
ldi tmp, 0b00001111
out portd, tmp