Természetesen avr
Következő időzítő mód T0 - a CTC mód (Clear időzítő összehasonlítása), vagy „a véletlen törlés”. Az időzítő ebben az üzemmódban a következő.
Ha inicializálni az időzítő tisztázzuk a számláló regisztrálja TCNT0 és összehasonlító regiszter OCR0 terhelés számát. Ezután állítsa be a kívánt STS mód és előosztóval.
Az időzítő elindul. Minden órajel, regiszter, értéke eggyel nő. Amikor a számláló regiszter értéke megegyezik az összehasonlító regiszter állítsa OCF0 flag regiszter, törlődik, és a gróf folytatódik a nullától. Ha a megszakítás véletlenül bekapcsolt, miután a zászló OCF0 feldolgozása elkezdődik rutin. Az összehasonlító regiszter ugyanakkor nem történik semmi, ez nem fogja megváltoztatni az értékét. Az alábbi táblázat ismerteti a munka T0 időzítő CTC módban.

Egy gyakorlati példa. Szükséges, hogy létrehoz egy négyszöghullám frekvenciája 70 kHz pin PB1. Mikrokontroller ATmega16, az órajel 16 MHz.
A legegyszerűbb módja annak, hogy létrehoz egy négyszögjel, hogy fordítsa az állam a termelés a mikrokontroller megszakítani az időmérőt.
Meander megváltoztatja állapotát kétszer az időszakban. Az első kapcsolók 1, akkor visszaáll 0. Így, hogy létrehoz egy jelet a frekvencia 70 kHz, szükséges, hogy okozhat egy megszakítás még kétszer, vagyis frekvenciája 140 kHz.
Mi kiszámítja a szükséges megszakítási időszak.
T = 1 / F = 1/140000 = 7,143 ms
Mi az órajel a timer úgy, hogy mérhető intervallum 7,143 ezredmásodperc? Ha az egyik időzítő volt
0,1 ezredmásodperc, ez illik. 71 órát, így kapunk 7,1 mikroszekundum.
Úgy döntünk előosztóval. Van öt választható 1, 8, 64, 256, 1024. Az 1 megkapjuk órajel periódussal 0,0625 ms.
Tt0 = 1 / (Fcpu / k) = 1 / (16000000/1) = 0,0625 ms
Egy ilyen időszak alkotó intervallum 7,143 ms szükségünk 7143 / 0,0625 = 114 ciklus. Ezért megfelelő arányban. És pontossága jó és bites számláló regiszter hiányzik.
114 - számos intézkedést, hogy kell számolni időzítő T0. Összehasonlításképpen, az azonos regisztrálnia kell letölteni egy intézkedés kevesebb, azaz 113 számla után kezdődik a nulla ciklust.
Mint látható, a CTC mód értékének kiszámításához az összehasonlító regiszter még könnyebb, mint a Normál mód:
-kiszámítja az időszak egy ciklusidőzítő Tt0 = k / Fcpu,
- kiszámítja a szükséges órajelek száma egy előre meghatározott intervallumban, n = t / szim- bólumot - 1
Pontosságának értékelése a vett jel, akkor lehet, hogy nem a fordított műveletet.
F = 1 / ((OCR0 + 1) * Tt0) = 1 / ((OCR0 + 1) * (1 / (Fcpu / k)) = Fcpu / ((OCR0 + 1) * k)
F = 16000000/114 = 140351 Hz
Minden kódot a problémát fog kinézni. (A kód van megadva IAR`a. Más fordítóprogramok módosítani kell a header fájlokat és megszakítás kezelő).
OC0 terminál kezelése STS mód, ahogy a normál üzemmódra. Következtetés OC0 megváltoztatja az állam a véletlen értékeinek számláló regiszter és hasonlítsa össze regisztráljon. Ellenőrző opciók vannak beállítva bitek COM01 és COM00 TCCR0 nyilvántartásba.

Figyelembe véve a fenti program segítségével meg lehet változtatni, hogy létrehoz egy négyszöghullám pin OC0. Ebben az esetben a megszakítást nem lehet használni.
Ezzel automatikusan visszaáll számláló regiszter STS üzemmód időzítő pontosan mért időintervallumban. Az egyetlen fogás - egyes mikrokontroller, időzítők, számlálók T0 nincs ilyen rendszer.
