cronometre PWM (Lecture), platforma de conținut

cronometre PWM (Curs)

Este evident că avem nevoie de un contor de externe, care ar fi bifate, indiferent de procesor, iar procesorul poate, în orice moment pentru a vedea ce este natikalo. Sau la contorul dat evenimentul de depășire sau underflow - pavilion ridicat sau întrerupere a generat. Un procesor acesta și procesul se va vedea. Și acest contor nu are nici unul - este cronometre periferice. AVR poate fi de mai multe piese cu adâncime de biți diferite. În ATMEGA16 trei, patru în ATmega128. Mai mult decât atât, timer-ul poate fi un contor simplu, timer-ul este unul dintre cele mai versatile (în ceea ce privește funcțiile alternative) periferice.

Ei știu cum cronometre

· Luați în considerare o rată diferită, timp de numărare

· Citește impulsuri de intrare extern (counter mode)

· Lucrul la un cuarț extern la 32768 Hz

· Generarea de mai multe tipuri de semnal PWM

· Pentru a emite o întrerupere (de o jumătate de duzină de evenimente diferite) și steaguri

O sursă de ceas căpușe

Timer / Counter (în continuare TC) sau a spus impulsuri de ceas de la generatorul de ceas intern sau de la intrarea contorului. Dacă configurat AT își va asuma, fie din față (gradient de la 0-1) sau din spate muchii (gradient de 1-0), care vin la intrările. Principalul lucru pe care frecvența pulsului de intrare nu depășește ceasul CPU, altfel nu ar avea timp pentru a procesa impulsurile.

În plus, unele cronometre pot funcționa în modul asincron. Aceasta este, vehiculul nu este considerat impulsuri de ceas CPU, iar impulsurile proprii generator de operare de la un singur cuarț. Pentru a face acest lucru, vehiculul are o intrare separată, care poate fi agățată rezonator de cuarț. De ce este necesar? Cel puțin, în scopul de a organiza ceas de timp real. le atârnate pe un cuarț ceas 32768 Hz și poate indica timpul - pentru a avea loc a doua 128 overflow (dacă vehiculul - un opt cifre). Deci, un preaplin este de 1/128 secunde. Și întrerupe timp de procesare depășirea timer-ului nu este oprit, de asemenea, ea continuă să numere.

În cazul în care cronometrul contează impulsurile de ceas sau interne sale, ei încă mai pot fi trecut prin prescaler. Aceasta este, înainte de a intra numărării înregistra frecvența pulsului va fi divizat. Ponderea poate fi de 8, 32, 64, 128, 256, 1024. Deci, dacă atârnă pe ceas de cuarț vehiculului și să treacă prin prescaler 128, timer-ul va conta la o rată de o dată pe secundă. De asemenea, este convenabil de a folosi un prescaler atunci când obține doar o gamă mare, iar singura sursă de cont - este generatorul de ceas CPU, și ia în considerare aceste megahertzi dificil, dar dacă săriți printr-o prescaler, atunci totul este mai ușor. Cu toate acestea, în cazul în care vehiculul de lansare cu prescaler, prima contorul bifă în registru nu va neapărat prin numărul necesar de impulsuri.

Depinde de starea prescaler, și dintr-o dată, la momentul includerii deja numărate aproape la valoarea specificată? Deci, se va bifa imediat. Prescalar rulează tot timpul, indiferent dacă timer-ul este activat sau nu. Prin urmare, prescaler poate și trebuie să fie resetat. Ar trebui, de asemenea, să ia în considerare faptul că prescaler este una pentru toate contoarele, asa ca in scadere, este necesar să se ia în considerare ceea ce cealaltă întârziere knock-timer înainte de următoarea capusa.

De exemplu, un prim cronometru funcționează pe retragerea 1:64, iar al doilea pe pinul 1 de 1024 prescaler. Al doilea este aproape dotikalo în prescaler la 1024, iar acum pe cale de a fi o capusa cronometru, dar apoi te-ai dus și au aruncat de pe prescaler pentru a porni primul cronometrul la zero. Ce se întâmplă? Al doilea separator aruncă apoi la 0 (prescaler unic, registrul avut unul), și un al doilea cronometru să aștepte încă 1024 de cicluri pentru a obține același impuls! Și dacă nu putea suporta prescaler în ciclul, în beneficiul primului timer-ul, mai mult de o dată ciclul de 1024, al doilea timer-ul nu tiknet. Pentru a reseta prescaler este suficient pentru a scrie biți în registrul PSR10 SFIOR. PSR10 bit este resetat automat la ciclul următor.

Întregul proiect de lege se acumulează în numărarea TCNTh înregistrare în cazul în care în loc de x numărul de timer-ul. Acesta poate fi atât de 8- și 16-biți, caz în care este format din două registre și TCNTxH TCNTxL - bytes de înaltă și joasă, respectiv.

Mai mult decât atât, există o captură. Și totul decât - cronometrează independent de procesor, astfel încât să putem pune primul un octet, acesta va începe să fie luate în considerare, atunci al doilea, și pentru a începe numărarea luând deja în considerare al doilea octet. Cronometrul dispozitiv exact, astfel transport maritim de numărare registre, în același timp, este necesar! Dar cum? Și inginerii de Atmel rezolvat problema, pur și simplu: Scrierea pentru a înregistra senior (TCNTxH) fiind mai întâi în TEMP registru. Acest registru este pur și simplu un serviciu, și nu putem în nici un fel.

Ce va termina cu? Trimite un mesaj pentru TEMP de mare octet registru (la noi, oricum TCNTxH), iar apoi scrie octetul inferior. În acest moment, real TCNTxH a intrat valoarea înregistrată anterior. Aceasta este de doi octeți, de înaltă și joasă, sunt înregistrate în același timp! Nu se poate schimba ordinea! Se pare ca acest lucru: