Cică articolele despre PIC16F84 aduc vizitatori pe site. Aşadar Ciprian mi-a dat voie să scriu un articol despre cît de depăşit este acest microcontroller şi cît de nostalgici sîntem dacă îl mai folosim.
Aşa cum văd lucrurile, prima generaţie de amatori embedded-işti a fost MMN-80. Nu este un microcontroller de sine stătător, dar a avut mulţi fani în Romînia, fiind de producţie autohtonă, uşor de implementat şi de programat. Apoi a urmat un val cu PIC16F84, pe la sfîrşitul anilor ’90. Şi astăzi mai găsim pe internet sute de proiecte cu PIC16F84, încă se vînd în Romînia la preţuri de 25-30 de lei bucata. Şi totuşi se cumpără, şi se fac proiecţele cu el. Două cuvinte am de spus:
ESTE DEPĂŞIT!!
PIC16F84 a intrat în producţie în 1993. Alte chestii care au apărut în 1993 au fost procesorul Pentium 1 (fără MMX), Doom 1 (Those were the days!…) şi Dacia cu faruri pătrate. Toate-s acum învechite.
PIC16F84 a venit la vremea lui cu nişte chestii noi, precum programarea prin ICSP, prin care se pot face programatoare seriale simple. Practic era nevoie de alimentări, o tensiune mare (12V) pentru scrierea ROM-ului, şi doar două linii de semnal, una de date şi una de ceas.
EEPROM-ul integrat este o nouă inovaţie care permite salvarea permanentă a datelor. Memoria de program era de 1K (sau 2K la cele cu extensia A), memoria de date, 68 de baiţi, pinii de i/e sînt în număr de 13. La o capsulă de 18 pini.
Din lipsă de UART şi CCP, protocolul RS232 şi PWM-ul se poate genera doar ţinînd ocupat procesorul, prin emulare software. Nici vorbă de conversie analog-numerică, sau referinţă de tensiune. Setul de 35 de instrucţiuni s-a păstrat, deci softurile antice pentru 16F84 pot fi portate pe ceva mai nou.
Din 1993, Microchip nu frecat menta, şi şi-a diversificat producţia de microcontrollere bazate pe core-ul de 16 biţi. 16F88A seste o variantă mai nouă, dar cu ADC intern. O variantă mai ieftină este PIC16F716. Ambele Compatibile la pini.
Puţin mai nou este şi 16F628, tot cu 2K memorie program, dar cu 3 timere, comparator, referinţă de tensiune, Capture/Compare/PWM , USART, oscilator intern şi funcţie de Brown Out Detect.. De asemenea programarea unui PIC16F628 este mai simplă, deoarece nu necesită decît tensiunea de 5V de programare, în contrast cu 16F84, care are nevoie de tensiune înaltă de 12V. Funcţia se numeşte Low Voltage Programming. Altă chestie faină este că toţi pinii în afară de alimentare, pot fi folosiţi ca intrare/ieşire. Deci 16pini. Setul de instrucţiuni este acelaşi, pentru cei cărora le place să clămpăne asm. Din aceeaşi familie mai găsim 16F648, 16F627.
De asemenea preţul acestora este aproape jumătate cît preţul unui PIC16F84. Deci de ce să lucrăm cu ceva vechi, scump şi spartan cînd avem alternative mai ieftine?
Pentru cine vrea să înveţe programarea PIC-urilor pe 16F84, îi recomand mai bine să aleagă picuri de genul 16F688 sau 16F684. Intrate pe piaţă în 2003, încă se fabrică şi se găsesc la preţuri de 8-10 lei bucata. Se pot programa cu orice programator, nu necesită tensiune înaltă, şi au cam toată gama de periferice. Împreună cu plăcuţa de dezvoltare PICKIT1, devin o unealtă excepţională pentru a face primii paşi în microcontroller.
Aşadar, deşi o componentă interesantă la vremea ei, PIC16F84 este acum la fel ca PL500 şi i80386. Adică istorie.
Ai mare dreptate in ce spui, dar poate faptul ca e asa de simplu fara prea multe caracteristici il face asa de utilizat. Nu uita orice sistem cu cat e mai simplu, cu atat e mai fiabil.
Dacă ne gîndim aşa, şi Willys Jeep este simplu şi fără caracteristici. La fel ca PIC16F84, NU SE MAI FABRICĂ de ani buni. De-asta preţul la 16F84 continuă să crească, pe cînd preţul pentru orice alt microcontroller aflat în producţie scade.
PIC16F84 a fost (si inca mai este) un bun punct de plecare in invatarea programarii cu MCU produse de Microchip. A fost un bun compromis relativ la complexitatea cipului (si a perifericelor), pret si disponibilitate. Programele de baza si de inceput (aprinderea unui LED, folosirea memoriei EEPROM interne, utilizarea timer-elor) se puteau invata foarte bine cu 16F84. A nu se uita sentimentul initial de covarsitoare neliniste, atunci cand citim prima data documentatia stufoasa a unui nou dispozitiv! Multi sunt debusolati si tentati sa renunte atunci cand vad teoria pe care o au de parcurs…
Daca PIC 16F84 nu se mai fabrica de ani buni nu prea inteleg cum pretul sau continua sa creasca?!?
Păi e un mecanism simplu. Preţul este rezultatul cererii şi ofertei. Dacă un bun există din abundenţă, el este foarte ieftin. Dacă este rar, este scump, ajungîndu-se la o piaţă de tip oligopol. Deoarece nu se mai fabrică, numărul de PIC16F84 disponibile este în continuă scădere, în timp ce cererea rămîne constantă. De aceea preţul lui creşte. Similar cu maşinile Limited Edition, a căror valoare creşte în timp.
89C51 nu a fost produsul lui Atmel. Familia de microcontrollere a fost initial produsa de catre Intel si apoi de catre Philips. Apoi producerea familiei a fost licentiata catre o multime de mari producatori. A afirma ca “PIC16F84 a venit la vremea lui cu nişte chestii noi, precum programarea prin ICSP, prin care se pot face programatoare seriale simple. Practic era nevoie de alimentări, o tensiune mare (12V) pentru scrierea ROM-ului, şi doar două linii de semnal, una de date şi una de ceas. Atmel nu avea aşa ceva atunci.” este o gugumanie. Atmel s-a apucat sa produca microcontrollere relativ tarziu (cam dupa 1996 sau chiar 1997) iar familia proprie a fost AVR. Programarea in-situ a fost proiectata de la bun inceput (vezi semnalele MOSI si MISO prezente pe interfata de programare). Eu nu mi-as permite sa fac asemenea afirmatii savante, asa cum isi permite sa faca autorul acestui articol, cu atat mai mult cu cat se afla in totala necunostinta de cauza! Cumva se re-aplica vorba veche a lui Ion Heliade Radulescu: “Scrieti baieti, numai scrieti!”
Într-adevăr, a fost o aberaţie ce-am zis. 80xx clar e serie de Intel. Am modificat. Mulţumesc pentru corecţie, orice intervenţie e binevenită.
Nu este nici o problema (“greseala recunoscuta este pe de-a intregul iertata”). Am intervenit insa (poate prea dur) pentru ca cei care sunt tineri si incepatori pot fi indusi in eroare de lucruri care nu sunt spuse limpede si exact.
Sal. Am si eu o intrebare referitor la PIC 16F84, pe care l-am folosit la proiectul,, Laser lissajous,,.Eu nestiind sa fac programul acestui pic , ma gandesc la pic-urile acestea noi daca programul meu din PIC16F84 este compatibil cu unul din aceste pic-uri echivalente. Sau trebuie modificat si programul ptr aceste pic-uri echivalente? Astept raspuns. ms anticipat
Fiecare microcontroler are avantajele si dezavantajele sale. A scrie cu majuscule ca ESTE DEPĂȘIT!! îneamnă să fii PROST!