Forum: Mikrocontroller und Digitale Elektronik Problem bei der Verwendung eines Tasters


von Jo (Gast)


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

von alex (Gast)


Lesenswert?

Ich weis ja nicht wie das Fehlverhalten aussieht, aber mach dich mal zum 
Thema "Prellen von Tastern" schlau.

von Jürgen W. (juergen_w) Benutzerseite


Lesenswert?

Pullupwiderstand noch einschalten
ldi tmp, 0b00000001
out portd, tmp

Grüsse

von Jo (Gast)


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).

von Jürgen W. (juergen_w) Benutzerseite


Lesenswert?

... und es muss heissen

  sbrs tmp, 0


oder

  sbis pind, 0

von Jo (Gast)


Lesenswert?

Wir haben nun den Pull-Up-Widerstand eingestellt und nun funktioniert 
der Chip wie gewünscht.

Vielen Dank.

von Lehrmann M. (ubimbo)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.