Calendarul și fuzzy-biți - robotica amatori, imprimante 3d si CNC

Timing și fuzzy biți

Ai reușit să te LED intermitent pe ATmega dvs. 168 (ATmega 8) - Felicitări! Aceasta este o realizare importantă pentru un început. Acum e timpul să-l facă să clipească mai repede.

Iată principalele metode de a specifica un semnal de ceas:

RC extern - lanț - este folosit în principal pentru programele care nu sunt critice pentru viteza de execuție. Circuitul format dintr-un rezistor și un condensator, rechizitoriul / descărcarea este utilizat ca semnal de sincronizare. Cea mai simplă opțiune nu este recomandată.

Rețeaua RC intern - ceasul cel mai economic. microcontrolere moderne, cum ar fi ATmega168, puteți cere pur și simplu pentru a genera un semnal de ceas de la sine. Acest lucru se va folosi cip CPU rețea RC built-in. Din păcate, un astfel de semnal de ceas nu este foarte stabil.

Ceas extern cuarț rezonator - a devenit standardul de facto pentru cronometrarea microcontroler. Conectarea unui cristal de cuarț (un cristal pentru simplitate) la bornele corespunzătoare ale rula microcontroler MCU la o anumită frecvență - cuarț frecvență.

ceas extern, rezonator ceramic - cavitatea ușor mai ieftin decât cristal, dar este mai puțin precisă.

Rețeaua RC intern -

persoane inteligente lucrează în Atmel! Ei au pus în ATmega168 implicit utilizați oscilator intern la 1 MHz. Microcontroler ATmega168 (familia microcontroler AVR și, în general) poate executa o instrucțiune pe ciclu. Acest lucru înseamnă că, la un moment dat, atunci când generatorul completează un ciclu, o instrucțiune este executată (deși există instrucțiuni care au nevoie de mai mult de un ciclu de ceas pentru a executa). Deoarece folosim un ATmega168 conventionale, lansam un LED intermitent cu o frecvență de 1 MHz sau 1MIPS (milioane de instrucțiuni pe secundă). Ai citit corect - un milion de acțiuni pe secundă. Este într-adevăr impresionant. Care este atunci problema de a limita utilizarea ceasului intern? O problemă în semnalul deviere sunt +/- 5 procente și posibil oscilator intern să funcționeze la o frecvență maximă de 8 MHz. Abaterea de 5 procente înseamnă că ATmega168 dvs. poate executa 1,000,000 * 1.05 = 1.050.000 instrucțiuni pe secundă, în timp ce vecinul său ATmega168 poate produce 1.000.000 * 0,95 = 950000 instrucțiuni pe secundă. Acest lucru poate părea o mică diferență, dar pentru electronica digitale moderne mult. Doar ATmega168 are o frecvență maximă de funcționare la 20MHz, în timp ce oscilator intern poate genera un maxim de 8. Deci, dacă doriți să utilizați întregul potențial al microcontrolerului, trebuie să utilizați un ceas extern.

cuarț ceas extern rezonator -

Aceasta este una dintre cele mai frecvente surse de semnal de ceas.

Calendarul și fuzzy-biți - robotica amatori, imprimante 3d si CNC

cristale de cuarț sunt disponibile în diferite clădiri și frecvențe diferite. Cel mai frecvent cuarț la 20MHz, 16MHz, 10 MHz și 4 MHz 8Mgts. De asemenea, cuarț disponibile de tip frecvențe 14.7456MGts 9.216MGts și 32,768kGts. Aceste frecvențe sunt multipli de frecvențele necesare pentru comunicarea serială și timpul de calcul. De exemplu, dacă doriți să furnizeze o rată de schimb consistent de 9600 biți pe secundă, 9.216MGts împarte la 960 și 9600. Doar obține nici un număr întreg, la care a fost posibil să se împartă fără 16MHz rest pentru a obține 9600, astfel încât schimbul de serie pentru 9.216MGts de cuarț va o calitate mult mai mare, iar la 16MHz va duce întotdeauna la un anumit număr de erori.

În interior, o cavitate de metal conține o mică bucată de cuarț. Quartz are o anumită cantitate de precizie și vibrează la o anumită frecvență. oscilator intern ATmega o abatere de +/- 5%. În același timp, rata de cristal se măsoară în +/- 20 ppm. Acest lucru înseamnă că frecvența cu o eroare de „părți“ într-un milion. Astfel, de exemplu, cuarț 16MHz +/- 320Gts cantitate deviere. Acest procent este de +/- 0,002%. Crystal este de 2,5 mii. Ori o precizie mai mare decât ceasul intern.

Rezonator ceramic extern -

Conform caracteristicilor sale ocupă o poziție intermediară între oscilatorul RC intern și rezonatoare cu cuarț

Calendarul și fuzzy-biți - robotica amatori, imprimante 3d si CNC

rezonator ceramic este un element ceramic de design special, oferind oscilații cu o anumită frecvență. Din păcate, acest proces este dificil de a oferi cu mare precizie. Rezonatoare ceramice sunt, de obicei +/- 0.5% eroare. Astfel, ele sunt de 10 ori mai oscilatoare interne mai precise, dar pierd încă rezonatoare cristale.

Rezonatoare ceramice sunt mai ieftine de cuarț, de obicei, au frecvențe de operare mai mici. Rezonatoare ceramice sunt încălzite suficient, deoarece acestea au o carcasă de protecție, care se află în interiorul elementului 3 pinovgo. Carcasa poate fi făcută în dimensiuni foarte mici, care economisește spațiu pe PCB.

Însumând totale unii ar putea spune că, pentru anumite aplicații, generatorul de ceas intern este suficient. Dar dacă încercați să organizeze comunicarea serială, eroarea de 5% este prea multe (valori valide sunt% abatere de 1-2 este pentru comunicare serială). Eu folosesc cristale de cuarț, în cele mai multe dintre proiectele sale. Dar atunci când doriți să faceți un dispozitiv foarte compact - folosind rezonatoare ceramice. Orice dispozitiv funcționează cu semnale digitale de înaltă frecvență necesită utilizarea rezonatoare de cuarț de înaltă precizie. Fiecare oscilator poate modifica caracteristicile lungul timpului (acest proces se numește îmbătrânire) și fiecare generator schimbă caracteristicile cu temperatura.

După cum sa menționat mai sus ATmega168 configurate furnizat ceasul intern la 1MHz. Dar putem face să funcționeze mai bine, ceea ce îl pe cristal extern rezonator 16 MHz.

Ce va trebui să plătească atunci când începe ATmega168 la frecvență înaltă? Mai ales la frecvențe înalte nu se poate folosi o tensiune joasă (cum ar fi 3.3V sau 2.8V). La microcontroler 20MHz va consuma mai multă putere decât 1MHz. Toți acești factori ar trebui să fie luate în considerare la dezvoltarea propriilor sisteme.

Cât de repede poți rula un controler?

ATmega168 viteză maximă - 20MHz sau 20MIPS! Se pare foarte repede.

Ia cuarț pe 16MHz și de a găsi PB6 și PB7 pini.

Conectați pini cuarț pini controler și fiecare masă prin condensator 22 pF.

Schema este gata, acum trebuie să spunem controller pe care-l folosește un ceas extern.

A fost una dintre cele mai complicate probleme cu controlerele AVR. Fuzzy - biți reprezintă configurația microcontroler de nivel scăzut. La instalarea sau eliminarea de biți, puteți schimba complet modul controler. Timp de mulți ani am fost un susținător al microcontrolere PIC. Configurarea PIC a fost simplu. Trebuie doar să le executați prin programul de aplicație Windows sau în codul C. Avry diferă în multe feluri, și puteți aduce cu ușurință în jos controlerul, dacă nu va înțelege de programare Fuzzy-biți.

Doi octeți de configurare ale ATmega168 sunt numite „Fuzzy-biți“. Dacă nu aveți - descărcați fișa tehnică pe ATmega168 (376 pagini) și salvați-l pe desktop. Dacă nu ați citit un astfel de document, nu vă faceți griji. Nu aveți nevoie pentru a afla toate 376 de pagini, trebuie doar să știe cum să găsească informațiile de care aveți nevoie de foaie de date, dar nu este destul de ușor.

Să încercăm să găsim Fouzi - biți. Noi cap la secțiunea „sursa de ceas“ (Asigurați-vă că panoul lateral este deschis și puteți vedea toate secțiunile foaie de date). Acesta descrie o serie de setări pentru sursele de ceas ATmega168. Să începem cu configurația oscilator intern cu 1 MHz la 8 MHz.

Page 34 (secțiunea 8.6) „În mod implicit, oscilatorul RC intern oferă aproximativ 8 MHz. În funcție de tensiune și temperatură, această frecvență poate fi reglată cu o precizie suficientă de către utilizator. Dispozitivul vine cu un pic CKDIV8 programat. Pentru mai multe detalii, a se vedea „frecvența prescaler“ la pagina 37 "

Deci, pentru a porni ceasul intern va avea nevoie pentru a schimba CKDIV8 de difuzie -bit

Aici vom vedea de ce ATmega168 pot fi folosite direct din cutie. Atmel oferă controler configurat pentru 8MHz intern RC oscilator și setat la prescaler controlerul de frecvență 8. totală a obține 1MHz de frecvență. Tot ce avem nevoie este de a schimba un pic și elimina CKDIV8 diviziune de frecvență.

Junior bytes implicit fuzzy. 0b.0110.0010

Noua valoare Fusi bytes. 0b.1110.0010

Folosind aceste noi valori Fuzzy-biți, ATmega168 ar trebui să înceapă de la oscilator intern 8MHz pe și ar trebui să vedem că LED-ul clipește de 8 ori mai rapid.

Rulați microcontroler pe frecvența de 16MHz

Va trebui să cristal de 16MHz cuplate la liniile de ceas, așa cum se arată în schema de mai sus. Revenirea la „sursa de ceas“, documente de secțiune și setările și să învețe pentru a conecta un rezonator ceas extern. Te voi ajuta. Acestea ar trebui să arate astfel:

Când programați aceste setări, ATmega168 este de a trece la un rezonator ceas 16MHz extern și dioda va clipi de două ori mai rapid. Dacă nu, verificați de două ori capacitatea pe Xtal linie și cuarț ceas. ATmega168 are o viteză maximă de 20 MHz (20MIPS). Încercați să overclock cuarț dvs. microcontroler la 30 sau 40 MHz. Poate chiar toate vor lucra, dar nu vei dori să dezvolte un sistem real, la frecvențe mai mari de caietul de sarcini.

Pe baza surselor externe