// Timer 1 für ATmega 328. #define F_CPU 3686400 #include #include //-------------------------------------------------------------------- // INT1_vect - INT1 Interrupt an Eingang PORTD3 bei steigender Flanke //-------------------------------------------------------------------- ISR(INT1_vect) { // Hier Interruptbehandlung } //-------------------------------------------------------------------- // TIMER1_COMPA_vect - Timer1 Interrupt bei Vergleichswert A // aktuelle Einstellung: 0.2 Hz 5000 ms //-------------------------------------------------------------------- ISR(TIMER1_COMPA_vect) { // Hier Interruptbehandlung } //------------------------------------------------------------------------ // Initialisierungen //------------------------------------------------------------------------ void init() { // Ports initialisieren cbi(DDRD,3); // PORTD3 auf Eingang ohne PullUp EIMSK|=0b00000010; // INT1 Interrupt an Eingang PORTD3 bei steigender Flanke EICRA|=0b00000100; EICRA|=0b00001000; //--- Timer 1 initialisieren --- TCCR1B=0x05; // Teiler 1/1024 TCCR1B|=0x02; // Modus: Zählen bis Vergleichswert OCR1A=18000; // Vergleichswert speichern TIMSK1=0x02; // Interrupt bei Vergleichswert A //--- Interrupts erlauben --- sei(); } ///////////////////////////////////////////////////////////////////////////// // Main-Funktion ///////////////////////////////////////////////////////////////////////////// main() { init(); // Initialisierungen while (true) // Mainloop-Begin { //... } // Mainloop-Ende } //---------------------------------------------------------------------------