[C] Generátor pilového průběhu - D/A převodník na AT89S52

Znamená to od 0 Hz až po 5 THz? Při nízkých kmitočtech budeš mít schodišťový průběh, zatímco při vysokých se ti uplatní časová konstanta C4*R6 takže průběh už nebude pila, ale cosi mezi pilou a sinem. Mimochodem dioda D2 je nakreslana obráceně.

Pokud nechceš prozradit k čemu to má být, měl bys přesněji specifikovat požadavky na výsledný průběh, jako např. procentuálná odchylku od ideální pily, chvění hran (jitter) z toho vyplývjící fázový šum, stabilitu frekvence a amplitudy a hlavě frekvenční rozsah.
U MCU zejména u řady x51 je obtížné ba nemožné zajistit přesné časování výstupních operací (zápis do portu se může náhodně zpozďovat o několik us v důsledku přerušení) a proto se používá latch (např. 574) pro přesné předávání dat do DA, aby se eliminoval fázový šum. Pro řízení latche je nutné mít hw děličku, která současně řídí tok dat do DAC. x51 tím nedisponuje na rozdíl od AVR.
Pokud jitter řádově několika us nevadí, nemá smysl komlikovat HW. Nicméně to znamená dělat časovaou analýzu všech přerušení právě pro odhad jitteru nebo napsat program bez přerušení jen pro generování pily, ale pak mi není jasné , jak se ten program bude řídit.