#define F_CPU 8000000UL #define T0_INTERRUPTS_PRO_SEKUNDE 100000 // Initialisiert die Timer-Register void InitTimer() { // globale Variable initialisieren g_zaehler10ms_xdu8 = 0; TCCR0A = (TRUE << WGM01); TCCR0B = (TRUE << CS00); // TCCR1 = (1< 8) << xeiDatenBit_gdu8); tmpDaten = FALSE; } } } // wird von INT0 aufgerufen. Funktion ist noch nicht ganz vollständig static void BeginnDatenLesen(void) { static tUI8 zfnAufrufZaehler_ldu8 = FALSE; tUI16 tmpdatenwort_ldu16; if(zfnAufrufZaehler_ldu8 < zeeMaxTaktZaehler_GDU8) { // starte Zähler ftiDatenZaehlerAktiv_gdu8 = TRUE; // berechne Index seiDatenPufferIndex_gdu8 = zfnAufrufZaehler_ldu8 >> 3; // Datenposition speichern xeiDatenBit_gdu8 = zfnAufrufZaehler_ldu8 & 0x07; // Aufrufzähler inkrementieren zfnAufrufZaehler_ldu8++; } if(zfnAufrufZaehler_ldu8 == 18) { zfnAufrufZaehler_ldu8 = FALSE; xeiDatenBit_gdu8 = FALSE; } } // Timer1 ISR(TIMER1_COMPA_vect) { static tUI8 ztiInterruptZaehler100us_ldu8 = FALSE; /* 100us- Task */ if(++ztiInterruptZaehler100us_ldu8 == T1_INTERRUPTS_PRO_1MS) { // Zähler zurücksetzen ztiInterruptZaehler100us_ldu8 = FALSE; // 1ms - Task /* hier passiert noch nix */ } }