Contur secțiune

    • În acest exemplu se folosește Timer/Counter0 în mod FastPWM. Generarea semnalului este controlată de întrarea de întreruperi INT0 (PD2).

      Cînd la intrarea Int0 se aplică un front pozitiv în subrutina de prelucrare a întreruperii se pornește Timer/Counter0 - aplicînd impulsuri de ceas de la ceasul intern cu predivizorul 1/8. Atunci cînd se aplică la intrarea Int0 frontul negativ Timerul se oprește (CS02..CS00  = 0: No Clock) și generarea semnalelor se oprește.

      Totodata Timerul/Contorul folosește întreruperea OutputCompare Match în care se face incrementarea registrului de comparare OCR0, ceia ce duce la schimbarea duratei impulsului generat.

    • Exemplu utilizare Timer/Counter în mod NORMAL. Timerul se alimenteaza cu impulsuri de ceas cu predivizorul 1/1024, și atinge valoarea maxima (255) la fiecare 10mSec. Atunci cînd timerul/contorul se supraîncarcă se apeleaza subrutina de întrerupere TimerOverflow în care noi reăncarcăm registrul contorului TCNT0 și scoatem la Portul B un contor.

      În fișierul doc gasiți modul de calcul a volorii inițiale care trebuie șcrisă în registrul TCNT și a predivizorului pentru a obține intervalul necesar.

    • În acest exemplu puteți urmari funcționarea Timerului în mod FastPWM. 

      Modificând valoarea registrului OCR (registrul de comparare) se modifică durata impulsului la ieșire.

    • În acest exemplu Timer/Counter se folosește în mod FastPWM și genereaza semnale cu durata ce se schimba periodic. 

      Valorile care se înscriu în registrul de comparare se iau dintr-un tabel înscris în memoria FLASH. 

      Valorile acestea descriu o funcție sinusoidala, dar voi puteți modifica acest tabel pentru a obține un grafic arbitrar.

    • Incarcați aici raprtul cu programul vostru.