Forum: Mikrocontroller und Digitale Elektronik Interupt auf 6 Tasten?


von Claude B. (claude44)


Lesenswert?

Guten Tage,

Als Anfänger, möchte ich mit ein Mega 8515 6 Tasten abfragen über 
Interrupt. ich habe aber nur INT0 und INT1 gibt es trik um dieser 
probleme zu lösen?

Ich möchte ein Uhr aufbauen wo ich die Datum und Zeiten einstellen kann. 
Ich programiere in ASM mit STK 500 und AtmelStudio 8

Danke für die Antworten
Claude

von Stefan (Gast)


Lesenswert?

Indem du sie entkoppelst mit Dioden.

von Wolfgang (Gast)


Lesenswert?

Claude B. schrieb:
> ich habe aber nur INT0 und INT1 gibt es trik um dieser
> probleme zu lösen?

Ja, gibt es, z.B. indem du einen Timer Interrupt benutzt und bei jedem 
Interrupt einmal auf die Tasten guckst. Dann kannst du dich gleich mit 
dem Thema Entprellung vertraut machen.

von Claude B. (claude44)


Lesenswert?

Vielen dank wolfgang
Ich wollte das noch nicht machen, aber ich doch woll.
Nochmal vielen danke
Claude

von Andreas (Gast)


Lesenswert?

Stefan schrieb:
> Indem du sie entkoppelst mit Dioden.

Ich habe ein ähnliches Problem. Könntest du das mit den Dioden etwas 
näher erläutern?

von vasuch (Gast)


Lesenswert?

Andreas schrieb:
> Stefan schrieb:
>> Indem du sie entkoppelst mit Dioden.
>
> Ich habe ein ähnliches Problem. Könntest du das mit den Dioden etwas
> näher erläutern?

Ich heiße nicht Stefan aber vielleicht meint er:

Jeden Taster auf der einen Seite mit GND verbinden.
Die andere Seite der Taster mit verschiedenen Eingängen am Mega 
verbinden, vorzugsweise den Pins eines Ports. Pullups nicht vergessen.
Dann noch von jedem dieser Eingänge eine Diode auf zB INT0 schalten.
Jetzt kann jeder Taster einen INT0 auslösen ohne einen anderen Portpin 
zu beeinflussen.
In der ISR kann dann der Portpin des auslösenden Tasters gesucht werden.

Vorteilhafter ist aber sicher die Pollingmethode aus dem Artikel 
"Entprellung".

von Andreas (Gast)


Lesenswert?

vasuch schrieb:
> Jeden Taster auf der einen Seite mit GND verbinden.
> Die andere Seite der Taster mit verschiedenen Eingängen am Mega
> verbinden, vorzugsweise den Pins eines Ports. Pullups nicht vergessen.
> Dann noch von jedem dieser Eingänge eine Diode auf zB INT0 schalten.
> Jetzt kann jeder Taster einen INT0 auslösen ohne einen anderen Portpin
> zu beeinflussen.

Vielen Dank. Jetzt habe ich es kapiert!

von H.Joachim S. (crazyhorse)


Lesenswert?

Ja, ist schon 1000mal erklärt worden, dass Tasten nichts am Interrupt zu 
suchen haben (einzige Ausnahme: wecken eines schlafenden Prozessors)

Die Abfrage im Polling kostet so gut wie nichts, minimale Rechenzeit, 
minimaler Programmspeicher.

von Claude B. (claude44)


Lesenswert?

ist schon richtig, kein Tasten in Interrupt, aber so werden ertmal für 
Anfänger erklärt wie ein Interrupt funtioniert, und Erlich gesagtich 
kann mit ein dioden matrix (das ist doch ein) noch nicht anfangen, wenn 
nicht ein bisschen mehr erklärung rauskomm wie kanne ich erkennen daß 
das ist die Taste 1 und nicht die 5 die gerade gedrückt wurde?
Claude

von H.Joachim S. (crazyhorse)


Lesenswert?

Im einfachsten Fall: jede Taste an einen eigenen (beliebigen) Pin, alle 
zusammen über Dioden dann an einen weiteren interruptfähigen Pin. Jede 
Taste löst also den gemeinsamen Int aus, und in der zugehörigen ISR kann 
man dann abklappern, welche Taste es nun war.
Alternativ gibts noch bei vielen AVRs pinchange-Interrupts. Aber auch da 
muss man nachschauen, welcher Pin es nun genau war (Interrupts sind in 
Gruppen zusammengefasst).
Aber: lass es sein.

von Mein grosses V. (vorbild)


Lesenswert?

Claude B. schrieb:
> ist schon richtig, kein Tasten in Interrupt, aber so werden ertmal für
> Anfänger erklärt wie ein Interrupt funtioniert

Die grundsätzliche Funktion eines Interrupts lernst du mit einem Timer 
genauso gut kennen. Mit dem Vorteil, daß du damit bei Tastenabfrage und 
Entprellung gleich auf dem richtigen Weg bist.

von Claude B. (claude44)


Lesenswert?

H.Joachim S. schrieb:
> Im einfachsten Fall: jede Taste an einen eigenen (beliebigen) Pin, alle
> zusammen über Dioden dann an einen weiteren interruptfähigen Pin. Jede
> Taste löst also den gemeinsamen Int aus, und in der zugehörigen ISR kann
> man dann abklappern, welche Taste es nun war.
> Alternativ gibts noch bei vielen AVRs pinchange-Interrupts. Aber auch da
> muss man nachschauen, welcher Pin es nun genau war (Interrupts sind in
> Gruppen zusammengefasst).
> Aber: lass es sein.

Danke Joachim, ich verstehe schon besser, das bedeutet auch dass ich 
nicht mit die Tasten der STK arbeiten kann, aber das ist nicht relevent
Claude

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.