De la PIC16F877 la PIC16F18877, douăzeci de ani de evoluție a microcontrolerelor PIC

6 NOIEMBRIE 2017

Introducere
Familia de microcontrolere PIC16F877 (MCU) a fost proiectată în 1997 ca fiind unul dintre primele produse microcontroler Flash de la Microchip. A fost prezentată în nenumărate proiecte, articole, cărți și blog-uri, în multe limbi de pe glob. Douăzeci de ani mai târziu, PIC16F877 este încă în producție, iar pagina sa de produs este una dintre cele mai vizitate de pe website-ul companiei!
Aceasta se întâmplă în ciuda disponibilității câtor­va noi generații de microcontrolere (cu funcții similare) ce au fost lansate pe piață după un ciclu aproape regulat: PIC16F877A, PIC16F887, PIC16F1938 și eventual modelul PIC16F18877.

În mod cert aceasta este o declarație de apreciere pe care o fac proiectanții de sisteme de control embedded pentru programul Microchip “de uzură morală dictată de clienți”. Aceste program stabilește că orice produs ce se vinde, nu se va scoate din fabricație. Atâta vreme cât pentru un dispozitiv sunt lansate comenzi, chiar și în cantități minime, Microchip va continua să furnizeze dispozitivul clienților săi. Aceasta este o reasigurare pentru cei care au un produs în lucru și preferă să-și cheltuie timpul și resursele la dezvoltarea de lucruri noi, cu potențial de a genera profit suplimentar.

În vreme ce un produs vechi nu poate aduce avantajele cele mai recente din tehnologia inovativă, precum periferice independente de nucleu (Core Independent Peripherals), o echipă de proiectare câștigă libertatea de a gestiona ciclul de inovație, în loc să fie forțată să lucreze iar și iar la același proiect într-o buclă infinită, pentru că o componentă originală nu mai este disponibilă la furnizor.

Compatibilitate Pin-la-Pin cu generațiile mai vechi
Dacă nu știați deja despre preocuparea Microchip de a asigura compatibilitate cu generațiile anterioare de produse, atunci puteți avea o plăcută surpriză. Chiar dacă noi generații de microcontro­lere PIC sunt lansate pe piață de a lungul anilor, Microchip s-a asigurat că echipele sale de proiectare oferă compatibilitate pin-la-pin și chiar binară cu generațiile anterioare de dispozitive PIC. Extinderea eforturilor necesare pentru a garanta o astfel de strategie de migrare pe termen lung poate că nu este evidentă, dar faptul că există mai mult de 250 de modele diverse de microcontrolere PIC (numai în capsulă de 40-pini) care se potrivesc toate în exact același soclu DIP – definit în 1989 – ar trebui să vă dea de gândit. Acesta este un angajament.

Tabel comparativ al caracteristicilor de bază
În acest moment ați putea fi tentați să faceți o comparație directă între datele tehnice ale celor două extreme în timp: PIC16F877 și cea mai recentă [re]încarnare, PIC16F18877. Referitor la acest aspect, cele 660 de pagini ale datelor tehnice prelimi­nare ale ‘18877 sunt de aproape trei ori mai multe față de datele tehnice ale ‘877, iar numărul de pagini poate fi și mai mare prin adăugarea de carac­teristici complete (grafice și scheme).
Dar nimeni nu mai are timp să citească datele tehnice. Majoritatea vor parcurge rapid tabelul centralizator, cu caracteristicile prezentate la finalul primei pagini din datele tehnice.
Privind la tabelul 1, creșterea generală a tuturor tipurilor de memorie este evidentă. Similar și în cazul numărului de periferice. Memoria flash s-a mărit de 4 ori, umplând efectiv întregul spațiu adresabil de 64 KB al unei arhitecturi tipice de 8-biți. Memoria RAM a crescut de aproape 10 ori! Deoarece acest lucru nu este în acord cu Legea lui Moore, per­miteți-mi să vă reamintesc că este vorba despre dispozitive embedded, unde robustețea și consumul energetic sunt constrângeri mult mai puternice decât în cazul tipic din industria PC-urilor de tip desktop.
De asemenea, se poate observa o aparentă explozie a numărului de temporizatoare (și PWM-uri). Temporizarea este o problemă importantă în controlul embedded, unde performanțele de timp real sunt mai valoroase decât abilitatea de a procesa mari cantități de date sau decât performanțele de calcul. De fapt, după o atentă inspectare a datelor tehnice, se evidențiază faptul că noile dispozitive au un sistem de ceas intern complex, compus din nu mai puțin de 7 oscilatoare și 2 circuite PLL capabile să producă semnale de ceas precise fără utilizarea vreunei componente externe. În același timp, dispozitivele originale nu dispun de așa ceva. Noile dis­pozitive pot, de asemenea, executa programele mai rapid – aproape dublând viteza – deși, după cum vom vedea, valorile MIPS pot fi înșelătoare.

Suport pentru limbaj C
Creșterea puternică a utilizării limbajului de programare C în dezvoltarea de aplicații embedded poate fi cu siguranță blamată pentru unele creșteri ale cerințelor de memorie. Pentru a se adapta schimbărilor cerințelor din ultimul deceniu, arhitectura PIC s-a schimbat și ea. Odată cu seria PIC16F1, nucleului PIC i-au fost adăugate noi instrucțiuni cu singurul scop de a crește densitatea de program. Ele se adresează necesității pentru un suport mai bun al indicatoarelor și cantităților mai mari de memorie RAM.
Și mai notabil este faptul că schema de conectare a RAM-ului, pentru care PIC este faimos, la îndemână pentru programare foarte compactă în limbaj de asamblare, a fost legată în pereche cu o adresare liniară a memoriei mai prietenoasă pentru compilare. Se poate observa că mecanismul de conec­tare vechi este încă disponibil și continuă să garan­teze compatibilitate cu aplicațiile mai vechi în limbaj de asamblare.
Mai mult, noua schemă de adresare liniară unifică spațiul de memorie de date și de program al PIC16F1. Acest lucru permite definirea în memoria flash a unor tabele de date mari, matrice RAM de dimensiune nelimitată și indicatoare generice.
Interesant este că aceste schimbări majore de arhitectură au trecut neobservate pentru majoritatea dezvoltatorilor PIC în limbaj C, ceea ce până la urmă s-a și intenționat. Acesta este deci unul dintre motivele pentru care valoarea MIPS a vechiului microcontroler ‘877 nu mai poate fi comparată direct cu valoarea MIPS a noilor nuclee din tabelul 1.

Schimbări în managementul întreruperilor
Celălalt element arhitectural care a cunoscut o îmbunătățire semnificativă este sistemul de mana­gement al întreruperilor. În vreme ce mai noul nucleu PIC16F1 menține designul de întrerupere original de tip single-vector, au fost adăugate 4 registre umbră pentru a simplifica salvarea și restabilirea contextului de întrerupere. Listarea 1 prezintă un prolog/epilog uzual pentru PIC16.
Prologul și epilogul pentru întreruperea standard necesitau până la 56 de cicluri de ceas. Cu noul mecanism de registru umbră al PIC16F1, nevoia pentru cele două secvențe este complet eliminată, iar costul unei întreruperi se reduce la cele patru cicluri de bază necesare pentru legarea CPU. Rezultatul este o creștere considerabilă a răspunsului microcontrolerului sau a performanțelor sale de timp real cu un ordin de mărime.

Flexibilitate
O observație atentă legată de finalul tabelului 1 revelează un alt detaliu interesant: numărul de I/O de uz general disponibil pentru cele două dispozitive este diferit în ciuda clamatei compatibilități pin-la-pin. Ea arată că noul dispozitiv multiplexează mai mult cu trei pini, anterior rezervați unui oscilator de cuarț și unui semnal de reinițializare extern, care sunt acum disponibili opțional ca I/O de uz general.

Dar numai un studiu mai aprofundat al datelor tehnice va dezvălui adevărata pepită de aur: TOATE intrările/ieșirile perifericelor digitale sunt acum multiplexate pe fiecare pin al dispozitivului! Această caracteristică este cunoscută criptic ca selecție a pinului periferic PPS (Peripheral Pin Select) și oferă un salt de flexibilitate pentru dispozitivele PIC16F18877 și câteva familii similare PIC16F1.
Similar, noul modul ADC al dispozitivelor PIC16F1 este acum cuplat cu un multiplexor de intrare analogic [foarte] mare, care face ca până la 35 dintre pini să fie disponibili pentru posibile intrări analogice.
Acest lucru înseamnă efectiv că fiecare semnal analogic și/sau digital direcționat către / de la microcontroler poate fi acum rutat optim pe PCB pentru a putea controla zgomotul, pentru a crește robustețea, pentru a simplifica layout-ul și posibil pentru a reduce numărul de straturi și treceri între acestea, ajutând în cele din urmă la reducerea costurilor.

Figura 1: Comparație între PIC16F877 și cea mai nouă [re]încarnare a sa, PIC16F18877.

Periferice independente de nucleu
Din păcate simpla analiză a tabelului 1, linie cu linie, nu va revela niciodată adevărata schimbare ce poate fi găsită în cele mai recente generații de dispozitive PIC16F1. Aceasta este prezența peri­fericelor independente de nucleu, sau mai pe scurt CIP (Core Independent Peripherals).
Mai presus de caracteristicile individuale ale peri­fericelor: SMT, HLT, CWG, NCO, CLC … − despre care putem (și am și făcut-o) scrie cărți întregi și noi date tehnice care aduc un plus de aproape 400 de pagini − este filozofia de proiectare din spatele lor. Noile periferice sunt diferite pentru că ele sunt proiectate să fie direct interconectate unele cu celelalte și să realizeze funcții autonome, independent de nucleu.
CIP-urile sunt destinate să ofere asistență hardware pentru ca microcontrolerul să evite blocarea sistemului datorită încărcării procesorului. Atunci când perifericele independente de nucleu sunt conectate unele cu altele pentru a realiza o funcție, întreruperile nu sunt doar executate mai rapid, ci mai degrabă sunt complet îndepărtate din aplicație.
Rezultatul este un proiect mai echilibrat, unde eficiența hardware-ului configurabil și paralelismul sunt adaptate prin flexibilitatea software-ului. Suplimentar, există periferice independente de nucleu (neprezentate în figură) care sunt disponibile pe alte microcontrolere PIC, permițând proiectanților să aleagă soluția cea mai potrivită necesităților.

Robustețe
O porțiune semnificativă a noilor module hardware găsite în PIC16F18877 este dedicată creșterii robusteței microcontrolerului. Circuitul tradițional de securitate (watchdog) este înlocuit printr-un sistem de ferestre cu o selecție bogată de opțiuni de scalare. Circuitul de reinițializare la căderea de tensiune (BOR) are câteva praguri, moduri de joasă putere, iar un circuit dedicat CRC SCAN poate fi utilizat pentru a monitoriza constant, în fundal, integritatea conținutului memoriei − fără impact asupra performanței MCU.

Joasă putere
În vreme ce menține abilitatea de a opera la 5V și de a comanda la curenți continui ridicați pe I/O (până la 50mA), caracteristicile electrice ale dispozitivului PIC16F18877 ne spun despre ce pute­re activă mai joasă este vorba (aproximativ cu un fac­tor de 4) atunci când operează pe întreg domeniul de tensiune (1.8V – 5.5V). Caracteristica consumului de curent pasiv (stand-by) este și mai impresionantă, promițând o reducere de aproape două ordine de mărime (100x).
Încă odată, numai o analiză detaliată a datelor tehnice ale dispozitivului vor scoate în evidență noi capitole despre caracteristici care extind abili­tatea de a controla puterea într-un mod mult mai fin, oferind multe moduri intermediare (inclusiv idle și doze). De asemenea, un nou set de registre (PMD-uri) adaugă abilitatea de a controla consumul energetic pentru fiecare periferic individual, pentru a atinge cel mai ridicat nivel de flexibilitate.

Este vorba despre unelte
Dar toate cele de mai sus ar putea fi în cele din urmă irelevante în lumea proiectelor moderne în care costul de proiectare este dominat de timpul până la lansarea pe piață, unde ciclurile de proiectare sunt continue, iar fiecare aplicație este conectată!
Cea mai importantă caracteristică a noului dispozi­tiv PIC16F18877 poate fi considerată disponibilitatea de unelte de dezvoltare rapide pentru automatizarea și accelerarea generării de cod cu ordine de mărime peste cele posibile până acum.
Cea mai recentă generație de microcontrolere PIC este suportată de MPLAB® Code Configurator (sau MCC). Aceasta este o unealtă care poate accelera procesul incomod de inițializare a fiecărui periferic al dispozitivului de la ore la minute și în unele cazuri se poate elimina în totalitate necesitatea de a citi datele tehnice (sau cel puțin o bună parte din timpul necesar).
Mai mult, este disponibil un lanț complet de unelte bazate pe cloud, MPLAB Xpress, ce face ca evalua­rea și faza de prototipare a unui proiect să fie la fel de simplă și rapidă ca deschiderea unui browser și încărcarea unei pagini de web. A dispărut necesitatea de a descărca un mediu de dezvoltare integrat (IDE) și un compilator, ceea ce adăuga sute de megabyte. A dispărut și timpul necesar pentru instalarea uneltelor și pentru menținerea lor configurate și actualizate. Oricine poate evalua un nou model de microcontroler prin deschiderea, particu­larizarea și construirea unui proiect de exemplu în câteva minute față de ore.

Aveți grijă să nu pierdeți!
Angajamentul făcut de Microchip de a nu opri din fabricație produsele atâta vreme cât ele sunt încă cerute, oferă proiectanților abilitatea de a prelua controlul ciclului inovativ. Fiecare dezvoltator are puterea de a decide dacă și când să revizuiască un proiect existent sau pur și simplu să îl mențină așa cum este și să se concentreze în schimb pe crearea de noi produse care să aducă noi oportunități de afaceri / profit. Dar atunci când este lansat un nou proiect, este important să se înțeleagă că, prin selectarea aceluiași model de microcontroler cunoscut și de încredere, s-ar putea pierde o mulțime de noi funcții și posibilități.
Consecvența peste ani a companiei și angajamentul obsesiv de compatibilitate [cu produsele mai vechi] poate conduce la credința că arhitectura microcontrolerelor PIC nu s-a schimbat mult în ultimele decenii, dar acest lucru este departe de a fi adevărat. Perifericele independente de nucleu au luat locul vechii paradigme de control integrat, iar noile unelte de generare de cod și de cloud pot îmbunătăți substanțial eficiența procesului de proiectare.
Următoarea dată când aveți oportunitatea de a selecta un microcontroler pentru o nouă aplicație, asigurați-vă câteva minute pentru a verifica cele mai recente* familii de microcontrolere PIC, căci altfel în mod sigur veți pierde!

(*Sugestie: Numărul componentei este mai bine să înceapă cu PIC16F1 urmat de patru cifre!)

Autor: Lucio di Jasio

Microchip Technology |  www.microchip.com
Sigla-Microchip

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *