// === Nicht unterbrechbare ISR für timer2 =================================== */ // Routine zählt hoch im Takt 20 kHz = 50 µs. Der Zählerwert wird von den ISR für // EXT_INT0 und -INT1 ausgelesen ISR(TIMER2_COMPA_vect) // // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { // Izeit_1 --; // ###>>> Izeit_1 ist aktuell int16_t ==>> // Izeit_1 bleibt bis 32000 in der int16-Grenze tupUM0 ++; // Tupsicounter für Umdrehungsmessung(en) tmrE0 ++; // Encodertimer hochtickern tmrE1 ++; // Encodertimer hochtickern //RCzeit1 ++; // Tupsicounter uint16_t für RC-5-Decoding if ( Izeit_1 ) // Interrupt-Timer = 1 ... 20 000 ... (1 sec blink) { } // WENN Izeit_1 =|= Null => wahr => Anweisung ausgeführen else // Izeit_1 = Null = unwahr, daher "else" ausführen { // Eine Sekunde ist voll => Izeit_1 = Izthrznt; // ansonsten: Rückstellen auf Zeithorizont ToggleBit (PgLED, L1g); // gnLED toggeln HEARTBEAT <<####, aktuell PC1 Isecundn ++; // Sekundenzähler hochtackern, max 9 Std } // Ende if (Izeit_1 ) if (tmrE0 > 2000) // Grenzwert für Stillstand // ... usf
Lesezeichen