-
-
Probleme mit Interrupts
Hallo,
wie muss ich generell einen Taster an einem Interrupteingang anschließen? Kann ich über die Pull-up Widerstände des ATMegas die Pins auf high ziehen und dann über einen Taster auf Ground? Kann ich hier die fallende Flanke nehmen? Oder was wäre den besser? Brauche ich auch eine externe Beschaltung??
Kann es sein, dass ein Befehlssatz in einer Interruptschleife nur eine gewisse Zeit dauern darf? Kann man in einer Interruptschleife auf alle Variablen zugreifen?
ich hoffe ihr könnt mir weiterhelfen.
mfg
-
Erfahrener Benutzer
Roboter Genie
Du kannst den Taster sicherlich so anschliessen. Beim Drücken kommt dann die fallende Flanke, beim Loslassen die steigende. Wie du das machst hängt meistens davon ab, wie man die äußere Schaltung am einfachsten hinbekommt.
Im Interrupt ist es immer gut, so schnell wie möglich fertig zu sein, weil der µC so lange auf nichts anderes reagiert. Aber wenn er nichts anderes machen muss, kannst du auch für immer da drin bleiben.
Auf welche Variablen du zugreifen kannst, hängt wohl mal von der verwendeten Programmiersprache ab. Bascom z.B. ist da sehr freizügig, weil alle Variablen automatisch global sind, wenn sie nicht explizit in einer Sub oder Funktion als LOCAL dimensioniert wurden. In C ist das etwas anders, aber das können die Experten sicherlich besser erklären.
Gruß Rolf
-
vielen dank für die Antwort.
Brauche ich als externe Beschaltung irgendwelche Widerstände, Kondensatoren, ... ?
Ja, ich verwende Bascom. Wieso ist es zum Beispiel nicht möglich einen Port (LED am Ausgang) über einen Interrupt zu togglen?? Es funktioniert bei mir nicht!!! Wie könnte ich den den Taster entprellen? Schaltung?
mfg
-
Erfahrener Benutzer
Roboter Genie
Nein, nur für die Taster brauchst du nichts an externen Bauelementen.
Zum Entprellen schau mal in der Help unter DEBOUNCE. Das kannst du auch software-mäßig machen.
Der Interrupt kann sicherlich den Ausgang toggeln.
Poste mal den Code, dann kann man sehen, was falsch ist. Und gib ein paar Details zu der Beschaltung der LED und woher der Interrupt kommt.
Gruß
Rolf
-
On Int0 Taste_rot
On Int1 Taste_gruen
Enable Interrupts
Enable Int1
Enable Int0
Config Int0 = Falling
Config Int1 = Falling
----
Taste_rot:
Toggle Portd.5
Return
ich schalte mit dem Ausgang nur eine LED, aber es funktioniert nicht. Man kann die LED nur einschalten, aber nicht mehr ausschalten.
Wie funkt. das mit dem DEBOUNCE? muss ich das in eine schleife tun?
-
kann mir bitte wer die "debounce" Funktion erklären?
-
Neuer Benutzer
Öfters hier
Ist in der Hilfe perfekt beschrieben.
MfG
-
stimmt der Code so:
Config Debounce = 30
Debounce Pind.2 , 0 , Taste_gruen
Debounce Pind.3 , 0 , Taste_rot
es funktioniert nicht!! Muss ich das in eine While Schleife schreiben?
-
funktioniert die "debounce" Funktion auch bei interrupts?
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen