Microcontrolerele au cunoscut multe progrese de la lansarea primului MCU ROM (Read Only Memory) acum peste 40 de ani. Microcontrolerele pe 8 biţi, în particular, s-au dezvoltat de la un simplu controler logic la un circuit inteligent complet integrat ce beneficiază şi de funcţii analogice. Privirea clasică asupra perifericelor unui microcontroler pe 8 biţi a fost una în care fiecare modul era proiectat pentru a realiza o funcţie fixă şi nimic mai mult. Cele mai recente generaţii pe 8 biţi au fost create să fie diferite de la bază, ceea ce reprezintă o schimbare de paradigmă care necesită o abordare complet nouă în proiectarea produsului final. Aceste noi microcontrolere pe 8 biţi au integrat un număr de periferice unice care pot îndeplini funcţii multiple şi sarcini după cum este nevoie. Suplimentar, aceste periferice pot fi configurate şi combinate pentru a crea noi funcţii, anterior dificil de executat şi în unele cazuri chiar imposibil de implementat. Majoritatea acestor noi periferice pot opera independent, fără supervizarea unui nucleu, reducând astfel utilizarea CPU în realizarea sarcinilor necesare. Mai mult, multe dintre periferice pot fi utilizate şi în modul SLEEP, posibilitate utilă pentru majoritatea aplicaţiilor sensibile din punct de vedere al consumului energetic.
Utilizarea perifericelor independente de nucleu
Unul dintre cele mai uzuale periferice din acest nou set este CLC (Configurable Logic Cell). Acesta este un modul foarte simplu, dar foarte puternic, care oferă funcţii logice standard — precum AND, OR, XOR, monostabil SR şi circuit bistabil J-K— pe care utilizatorul le poate configura pentru a crea porţi logice pentru condiţionarea semnalului. Semnalele de intrare şi ieşire din modulul CLC pot fi conectate la orice I/O, periferice sau registre, prin conexiune internă. Modulul poate fi utilizat ca un simplu router de semnal, ca un circuit logic de legătură sau ca un circuit inteligent de stare a maşinii pentru controlul revenirii în mod operaţional (wake-up). Microcontrolerele tradiţionale necesită un dispozitiv logic programabil (PLD) extern sau programe suplimentare pentru a obţine controlul logic dorit şi chiar şi aşa nu se oferă toată flexibilitatea CLC.
Oscilatorul controlat numeric (NCO) este un alt modul configurabil ce poate fi utilizat ca un numărător pe 20 de biţi sau ca un controler PWM cu control de frecvenţă variabilă şi înaltă rezoluţie, după cum se poate observa în figura 1. Acesta nu este un circuit uzual PWM/temporizator, în care performanţele şi funcţiile sunt aproape în opoziţie una faţă de alta.
NCO, cu rezoluţia sa mare şi controlul liniar al frecvenţei, poate ajuta la simplificarea unui algoritm de control complex utilizat în mod uzual în multe aplicaţii de surse de alimentare, precum controlul balastului electronic pentru iluminare, cu funcţionalitate de reglare a luminii, prin controlul foarte precis al curentului în circuit. O altă utilizare a NCO este de a comanda o alarmă audio de la o alarmă de fum, deoarece oferă controlul unei frecvenţe variabile, schimbând cu uşurinţă înălţimea tonului alarmei. Controlul mai fin al frecvenţei generate permite de asemenea un reglaj mai bun al tonului şi înălţimii sunetului generat, fără necesitatea unor componente analogie externe.
Chiar dacă aceste periferice integrate pot fi utilizate de sine stătător, magia se întâmplă cu adevărat atunci când mai multe module sunt combinate pentru a crea diverse funcţii. De exemplu, codarea Manchester este comun utilizată în aplicaţii de telecomunicaţii şi stocare de date. Algoritmul uzual Manchester poate solicita foarte mult firmware-ul şi necesită resurse CPU pentru a gestiona sarcina.
Prin utilizarea modulelor NCO şi CLC în tandem pentru a crea un decodor Manchester decoder, această funcţie operează în întregime în hardware cu utilizare nulă a procesorului. Un circuit de criptare Manchester poate fi proiectat utilizând numai un singur modul CLC, fără module, fără niciun bit de firmware.
Alte periferice, precum temporizatorul unghiular (AT), temporizatorul de măsurare a semnalului (SMT) şi acceleratorul matematic (MathAcc), sunt un pic mai sofisticate prin comparaţie cu modulele CLC sau NCO. AT poate fi utilizat pentru măsurarea oricăror semnale periodice – precum traductoare optice, detectoare de trecere prin zero şi senzori Hall — pentru aplicaţii de control motoare şi aplicaţii de alimentare AC, indiferent de viteza motorului sau frecvenţa semnalului. Modulul AT realizează instantaneu transformarea domeniului timp/unghi, totul în hardware şi, încă odată, fără nicio încărcare a procesorului.
Gestionarea acestei sarcini cu un microcontroler tradiţional necesita în mod tipic mai multe temporizatoare pentru a număra şi măsura unităţile de timp, iar apoi acestea trebuiau transformate în domeniul fază/unghi prin calcule matematice (prin firmware) sau prin tabele de căutare stocate în memoria program, dacă se cunoaşte perioada. Abordarea tradiţională necesită mult firmware şi resurse CPU pentru calculele matematice, precum şi constrângeri de dimensiune pentru tabelul de căutare, ceea ce poate limita numărul de valori disponibile, conducând astfel la aproximări şi imprecizii. Modulul AT poate genera automat întreruperi şi evenimente, direct pe baza valorilor fază-unghi configurate de proiectant. Suplimentar, AT are trei funcţii PWM Comparare/Captare (CCP) la dispoziţia utilizatorului.
Comparaţie implementări tradiţionale vs. implementări independente de nucleu
Un alt exemplu de combinaţie între mai multe periferice pentru a simplifica sarcina este controlul aprinderii prin descărcare capacitivă (CDI), ce se poate observa în figura 2, adesea utilizat în motoare mici cu ardere internă.
Microcontrolerul are două sarcini principale într-un sistem CDI controlat digital:
• Determinarea avansului unghiului de aprindere al bujiei, pe baza informaţiilor de la diferiţi senzori.
• Stabilirea factorului de umplere al semnalelor PWM pentru a furniza pulsurile de aprindere către convertorul DC/DC pentru generarea scânteilor.
Fără a trece prin toate detaliile de proiectare ale unui sistem de control pentru un motor cu ardere internă, implementarea unui CDI cu ajutorul unui MCU PIC16F161x, combinând AT, CLC şi câteva alte periferice, precum SMT şi MathACC, îmbunătăţeşte substanţial performanţa generală, deoarece aceste periferice gestionează eficient calculele RPM şi controlul timpilor de aprindere ale bujiei, încă odată, cu o intervenţie foarte redusă a procesorului. Pentru o analiză mai în detaliu a acestui proiect, vă rugăm să accesaţi nota de aplicaţie AN1980 trecută la bibliografie în finalul articolului.
Figura 3 oferă o comparaţie între metodele convenţionale şi cele independente de nucleu pentru proiectarea unui sistem CDI.
După cum demonstrează figura 3, metoda AT îmbunătăţeşte substanţial performanţele sistemului prin reducerea timpului de execuţie şi utilizare a CPU cu mai mult de 50%, reducând în acelaşi timp şi dimensiunea programului cu 40%.
Există un număr de modalităţi de a genera un semnal PWM, fie prin firmware, fie prin hardware; dar când vine vorba de măsurarea şi extragerea informaţiei de la un semnal PWM primit, opţiunile devin oarecum limitate. Abordarea tipică utilizează temporizatoare şi CCP-uri, cu un mare număr de cicluri CPU pentru a determina valorile pentru puls, perioadă sau factor de umplere. Este posibilă combinarea dintre modulele CLC şi NCO pentru a răspunde acestor sarcini, cu câteva rânduri suplimentare de program. În orice caz, perifericul SMT menţionat în exemplul anterior este un numărător/temporizator pe 24 de biţi cu ceas avansat şi logică poartă, care permite diferite moduri de achiziţie. Aceste moduri includ măsurarea şi stocarea automată a valorilor perioadei şi factorului de umplere, fără supervizarea nucleului sau fără calcule suplimentare. SMT este foarte folositor în orice proiect care măsoară un semnal PWM, precum în cazul controlului motoarelor.
Odată cu creşterea capabilităţilor oferite de aceste periferice avansate, una dintre îngrijorările proiectanţilor este cum să gestioneze I/O limitate şi resursele disponibile ale MCU, pentru a maximiza performanţele dispozitivului. Prea multe module şi un număr de pini insuficient a fost una dintre deficienţele care au limitat capabilităţile microcontrolerelor tradiţionale pe 8 biţi cu număr redus de pini. Odată cu adăugarea unor funcţii recente, precum selecţia pinilor pentru periferice (PPS), proiectanţii pot acum direcţiona orice semnal digital către orice pin de I/O, rapid, fără utilizarea unor componente externe. Un proiect uzual ce necesită mai multe UART-uri poate avea nevoie de un microcontroler cu număr mare de pini, cu câteva module UART, pentru a duce la îndeplinire sarcina. Cu noua generaţie de microcontrolere pe 8 biţi, această sarcină poate fi realizată cu orice microcontroler care are un singur UART şi PPS sau CLC pentru a direcţiona cu uşurinţă semnalele de comunicaţie către mai mulţi pini.
Pentru a concluziona, perifericele independente de nucleu oferă mai multă flexibilitate pentru proiectanţi, oferindu-le abilitatea de a configura şi combina câteva periferice, de a crea multiple funcţii de aplicaţii, fără a sacrifica performanţele CPU sau consumul energetic.
Aceste noi periferice hardware fac să dispară dependenţa de nucleu, şi adaugă determinism proiectului general al sistemului. Cea mai nouă generaţie de microcontrolere pe 8-biţi este de aceea considerată mult mai capabilă şi mai puternică faţă de MCU tradiţionale pe 8 biţi, şi poate adesea atinge performanţe mai ridicate decât microcontrolerele pe 32 de biţi cu abordare centrată pe software, prin executarea a numeroase funcţii cu ajutorul hardware-ului integrat, independent de nucleu.
Bibliografie:
- Core Independent Peripheral Design Center
- DS41631B – Configurable Logic Cell Tips ‘n Tricks
- AN1980 – Capacitor Discharge Ignition Using the Angular Timer
- AN1470 – Manchester Decoder Using the CLC and NCO
- AN1476 – Combining the CLC and NCO to Implement a High-Resolution PWM
- AN1779 – Sensored Single-Phase BLDC Motor Driver using PIC16F1613
- TB3129 – Signal Measurement Timer on PIC® Microcontrollers
- AN1473 – Various Solutions for Calculating a Pulse and Duty Cycle
- “This is (not) rocket Science” de Lucio Di Jasio
Autor: Jin Xu, Asia Pacific Business Development Manager, MCU8 Division, Microchip Technology Inc.
Microchip Technology | www.microchip.com