Genau, Timer-Interrupt.
a) (Irgendeinen) Timer auf Interrupt im CTC-modus initialisieren. So nach dem Muster (hier für den mega168, in C, weil ich kein Basic mache):
und dann - z.B. auf Tastendruck, den Vorteiler auf einen entsprechenden Wert setzten und den Preset OCRnx:Code:TCCR0A |= (1<<WGM01); // Timer im CTC-Mode, Top=OCRA (doc S104) TCCR0B |= (1<<CS01); // Prescaler 1/8 / Clock <- CPU (doc S106) OCR0A = 125; // Preset 125 für 50µs bei 20Mhz TIMSK0 |= (1<<OCIE0A); // Tmr/Cntr0 CompareA interrupt enabled
Dann kommt am entsprechenden Pin Deine gewünschte Frequenz (wenns richtig initialisiert ist). Und Du kannst das mit OCIEnx auch bei Bedarf aus- und wieder einschalten.Code:OCR0A = 125; // Preset 125 für 50µs bei 20Mhz TIMSK0 |= (1<<OCIE0A); // Tmr/Cntr0 CompareA interrupt enabled
Viel Erfolg,







Zitieren

Lesezeichen