Teda teď fakt nevím, co vlastně chceš 50Hz není 60kHz - to jsi o řád jinde…
Výpočet máš pro 50 Hz, osciloskop ukazuje 44,279 kHz - opět o řád jinde.
To mi nějak nesedí.
Řešení je velice jednoduché, ale chci, abys mě přesvědčil, že je to Tvoje práce a není to domácí úkol. S domácím úkolem pomohu (pomůžeme), ale když to za Tebe tady vyřešíme, tak se nic nenaučíš. Jakmile tady vidíme snahu o řešení nebo alespoň se něco naučit pomůžeme (případně i řešení dodáme).
Řešní mám jednoduché (jednodušší a přesnější, než to Tvoje), i když se mi pořád moc nechce věřit, že to není domácí úkol.
Jinak z kmitočtu 14745600 neuděláš 60000 Hz (alespoň ne přesně). Musí to být dělitelný.
12000000/60000=200 => tohle lze.
14745600/60000=245,76 => tohle nepůjde => 14745600/246=59 941,46341 Hz
12000000/40000=300 => tohle lze.
14745600/40000=368,64 => tohle nepůjde => 14745600/367=40 178,746594 Hz
Tady je to řešení - samozřejmě pro krystal 12 MHz:
[code]#define F_CPU 12000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
ISR(TIMER0_COMP_vect)
{
PORTB ^= (1<<PB0);
}
int main(void)
{
DDRB = (1<<PB0);
OCR0 = 99;// 60 kHz
//OCR0 = 149;//40 kHz
TCCR0 = (1<<WGM01)|(1<<CS00);
TIMSK = (1<<OCIE0);
sei();
for(;;)
{
}
}[/code]