Interrupts mit AT2560 für Tastendruck

Gast #2701240
Lesenswert?

Schönen guten Abend,
ich bin gerade dabei, die Überprüfung auf einen Tastendruck nicht in 
einer while Schleife permantent abzufragen, sondern über Interrupts. 
Folgenden Code möchte ich umschreiben:
1
main(void)
2
{ 
3
while(1)
4
{
5
if(  (PINK&0b01000000)==0){    
6
 PORTB=0b00000111;
7
}else{
8
 PORTB=0b00000110;
9
}
10
}}
damit der Tastendruck in Form von einem Interrupt abgefragt wird.
Was löst denn ein Itnerrupt aus? Ein Zustandswechsel an Ports, die auf 
Eingang geschaltet sind?
Dann könnte doch folgender Code benutzt werden ?
1
main(void)
2
{ 
3
sei();
4
}
5

6

7
ISR(Vectorname)
8
{
9
if(  (PINK&0b01000000)==0){    
10
 PORTB=0b00000111;
11
}else{
12
 PORTB=0b00000110;
13
}
14
}
würde das funktionieren?
Was ist der Vektorname beim AT2560 ? Ich verstehe die Anleitung im 
Tutorial nicht die zu ermitteln.

Schönen Dank!

jo
Gast #2701266
Lesenswert?

...die Alternative wäre, die Tastendruck in einer Endlosschleife 
abzufragen. Wenn ich dann aber andere Dinge ind er Zwischenzeit mache 
(z.B. einen Ball über das LCD wandern lasse etc) kann ich in der Zeit 
keinen Tastendruck abfragen. D.h. dadurch entsteht eine gewisse 
parallele Verarbeitung? Wie kann sowas sonst erreicht werden
Gast #2701272
Lesenswert?

Nun, lies Dir erstmal die Posts hier durch die Du beim Stichwort 
Interrupt und Tasten findest. Viele hatten den selben Grund wie Du, 
Tasten über Interrupts abzufragen.

Du wirst Dich vielleicht wundern, warum ich nicht direkt darauf 
antworte. Aber das wird einfach seit Jahren jede Woche mindestens 
zweimal gefragt.
Das Thema wird erschöpfend behandelt worden sein.

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