Przy użyciu timera2 i trybu CTC chciałem uzyskać przebieg prostokątny o częstotliwości 10Hz. Czy dobrze dobrałem wartość OCR2, aby uzyskać taką częstotliwość?
#include <avr/io.h>
#include <avr/interrupt.h>
volatile uint16_t i;
int main(void)
{
DDRD |= (1<<PD7);
PORTD |= (1<<PD7);
TCCR2= (1 << WGM21) | (1 << CS21) | (1 << CS22)| (1 << CS20);
OCR2 = 98;// 100000/1024 = 97,65625
TIMSK = (1 << OCIE2);
sei();
while(1)
{
i++;
}
}
ISR(TIMER2_OVF_vect)
{
OCR2 = 98;
if(PORTD) PORTD <<=1;
else PORTD = 1;
}