-
-
Erfahrener Benutzer
Robotik Einstein
Haupsache es geht mal.
Den C und den R solltest du eigentlich nicht brauchen...
Zu deinem Code:
- Falls du GCC optimieren lässt, wird er die Warteschleife komplett in die Tonne kloppen, weil sie nix macht. Also zB ein k = PORTB oder ein _NOP(); (gibts mit #include <avr/ina90.h>)
- Die 2.Warteschleife ist zu viel, so wartest du 2x.
- Die Warteschleife besser ans Ende der Interrupt-Routine, vor das GIFR=...
- Falls während der Routine der Taster flackert, wird ja wieder das INTF1 Flag gesetzt, das du versuchst zurück zu setzen. Das geht, indem man eine 1 hin schreibt (keine 0):
GIFR = _BV(INTF1); // reset INT1 Flag - INT1 so initialisieren, daß er flankengetriggert ist, also nur bei Änderung anspricht; nicht levelgetriggert, sonst landest du auch dauernd im Interrupt solange der Taster noch gedrückt ist.
Falls dein Prog sonst nix maches soll, ist's ok. Aber wenn sonst noch Zeug zu erledigen ist, muss dir klar sein, daß zu ziemlich lange im Interrupt rumschnarchst...
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen