Generátor obdélníku 60kHz

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]