Problem bei der Verwendung eines Tasters

Gast #2236670
Lesenswert?
• ▲
▼
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:
1
ldi tmp, 0b00000110 ;Die Pins 1 und 2 sind LEDs, daher Ausgang
2
out ddrd, tmp

Dann gibt es eine Schleife:
1
main:
2
  in tmp, pind
3
  sbrs pind, 0
4
  rcall neuberechnung;delay  
5
rjmp main
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 im Internet gefunden und sind daher dankbar für jede Hilfe.

Danke im Voraus
Mit freundlichen Grüßen
Johannes
Gast #2236703
Lesenswert?
• ▲
▼
Das Fehlverhalten sieht so aus, dass das Sprungziel des RCalls ständig 
ausgeführt wird.
Das Prellen des Tasters kann man vernachlässigen, weil im eigentlichen 
Programm auf den Knopfdruck eine Wartepause folgt. Der Tasterdruck 
stellt also nur den eigentlichen Beginn des Programms dar (Bis zum 
Knopfdruck passiert nichts Nennenswertes).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren