Ok, ich versuchs mal. Ohne Garantie, der Code ist nicht getestet.
Als Compiler benutze ich avr-gcc.
Zunächst mal kurz die Berechnung für's OC-Register:
f=3,6864 MHz -> Ein Takt dauert 1/f = 271,27ns
100µs/271ns = 368,64 -> Anzahl der Taktzyklen in 100µs
368 = 0x170
Code:
//Register setzen
//Mode = CTC (Clear Timer on Compare)
TCCR1B = 0x04;
//Output-Compare Register einstellen.
OCCR1AH = 0x01;
OCCR1AL = 0x70;
//Output Compare Match - Interrupt einschalten
TIMSK = 0x10;
//Timer starten mir clock-Devider = 1
TCCR1B |= 0x01;
//Interrupts global freigeben
sei();
while (1)
{ //do nothing
}
//Interrupt-Routine
//Wird alle 100µs aufgerufen
signal (SIG_OUTPUT_COMPARE1A)
{
//Hier kommt rein, was auch immer Du alle 100µs machen willst
}
askazo
Lesezeichen