Zitat Zitat von Gareth
... Wo man sich z.B. nur darauf beschränkt einen Timer anzuschmeißen oder damit eine ISR anzusteuern ...
Schade, für den 2313 hab ich so etwas grad nicht rumliegen. Aber die hier läuft auf mega168/20 MHz. Initialisierung des Timerinterrupts, in der ISR wird nur hochgezählt bis auf 1 Sekunde - und der Port PC5 jede Sekunde getoggelt.
Ich hoffe, dass mein C(äh) verständlich ist.

Code:
// =================================================================================
// ===   Initialisierung fuer Timer2 mega168 / 20 MHz   ======================
void TC2TMR_init(void)          // Init Tmr/Cntr 2, 8-Bit auf 20 kHz = 50 µs
{      
    TCCR2A |= (1<<WGM21);       // Timer im CTC-Mode, Top=OCR2A   doc S 157
    TCCR2B |= (1<<CS21);        // Prescaler 1/8 / Clock <- CPU   doc S 158
    OCR2A = 124;                // Preset 124 für 50µs bei 20Mhz  
    TIMSK2 |= (1<<OCIE2A);      // Tmr/Cntr2 CompareA interrupt enabled
}     
// =================================================================================
// =================================================================================
       
       
// =================================================================================
// ===  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 und den Werten Iz_yseci zugewiesen ......
ISR(TIMER2_COMPA_vect)          // Vektor 7
{
  if (Izeit_1 < Izthrznt)       //Interrupt-Timer = 1 ... 20 000 ... (1 sec blink)
  {
    Izeit_1 ++;                 //  ###>>> Izeit_1 ist aktuell int16_t ==>>
                                //  Izeit_1 bleibt bis 32000 in der int16-Grenze
  }                             //
  else
  {                                        
    PORTC ^=  (1<<PC5);         // LED auf Port PC5/I2C/SCL toggeln
    Izeit_1 = 1;                // ansonsten: Rückstellen auf Eins
  }                             // Ende if (Izeit_1 < Izthrznt)
 return;
}                              
// =================================================================================
Nachtrag: die Bezüge auf die Dokumentation sind etwas alt . . .