
Zitat von
Ceos
Mein Hintergedanke hier ist die effizienz, wenn alle Vektoren auf die gleiche Methode zeigen sparst du dir eine Runde Stack Push/Pop und den MEthodenaufruf der handleISR(uint8_t src) was bei gaaaanz schnellen applikationen bedeutsam sein kann
Tatsächlich gehts bei mir nicht um "Leben oder Tot" im us-Takt. Bei Geschwindigkeiten denke ich auf ms-Niveau.
Mir geht es vielmehr darum, einen sicheren einfachen Code zu schreiben, den ich nach einer Monats-Pause immer noch verstehe.

Zitat von
Ceos
bei ARM controllern gibt es meistens nicht genug vektoren für alle interrupts und dort werden i.d.R. die vektoren zusammengefast und nur ein handler aufgerufen, in welchem du dann über die interrupt flag register die quelle ausfindig machen muss
Der ATtiny84 ist bei seiner Interruptvielfalt äußerst überschaubar.
Vielleicht ist die folgenden Routine auch völlig ok und kein bischen zu aufgebläht?
Code:
ISR (PCINT0_vect) // Interrupt, ABFRAGE, aus Bank0, wird ausgelöst
{
if ((PINA & (1<<PINA2)) != 0) // Taster "Reset" =1
{
// hier kommt eine Entprellung rein
ResetTaste_on();
}
if ((PINA & (1<<PINA2)) == 0) // Taster "Reset" =0
{
// hier kommt eine Entprellung rein
ResetTaste_off();
}
if ((PINA & (1<PINA3)) != 0)
//usw.
//bis alle 4 Taster/Kontakte nach einem Interrupt auf hi/low abgefragt sind
}
Lesezeichen