categorii: Circuite de micro-controler
Număr de vizualizări: 23111
Comentarii la articol: 0

Microcontrolere PIC pentru începători

 

Pe piața modernă există o serie de familii și serii de microcontrolere de la diferiți producători, printre care se pot distinge AVR, STM32 și PIC. Fiecare dintre familii și-a găsit propriul scop. În acest articol vă voi spune începătorilor despre microcontrolerele PIC și anume, ce este și ce trebuie să știți pentru a începe cu ele.

Microcontrolere PIC pentru începători

Ce este un PIC

PIC este numele unei serii de microcontrolere fabricate de Microchip Technology Inc (SUA). Numele PIC provine de la Controlerul interfaței periferice.

Microcontrolerele PIC au o arhitectură RISC. RISC - un set prescurtat de instrucțiuni, este de asemenea utilizat în procesoare pentru dispozitive mobile. Există o serie de exemple de utilizare a acestuia: ARM, Atmel AVR și altele.

În 2016, Microchip a cumpărat Atmel, un producător de controlere AVR. Prin urmare, site-ul oficial prezintă microcontrolerele familiei și PIC și AVR.

Microcontroller PIC16F1xxx

familie

Printre micro-controlerele PIC pe 8 biți, este format din 3 familii care diferă în arhitectură (adâncimea de biți și setul de instrucțiuni).

  • Linie de bază (PIC10F2xx, PIC12F5xx, PIC16F5x, PIC16F5xx);

  • Gamă medie (PIC10F3xx, PIC12F6xx, PIC12F7xx, PIC16F6xx, PIC16F7xx, PIC16F8xx, PIC16F9xx);

  • Gama medie îmbunătățită (PIC12F1xxx, PIC16F1xxx);

  • High-end sau PIC18 (18Fxxxx, 18FxxJxx și 18FxxKxx).

Comparația familiilor de microcontrolatori

Caracteristicile sunt prezentate în tabelul de mai jos.

Caracteristici PIC Microcontroller

Pe lângă microcontrolerele pe 8 biți, Microchip produce 16 biți:

  • PIC24F;

  • DsPIC30 / 33F pentru procesarea semnalului.

Reprezentanții familiei de 16 biți operează cu viteze de la 16 la 100 MIPS (milioane de instrucțiuni pe secundă completate). Este demn de remarcat și caracteristici:

  • ciclul mașinii - 2 cicluri;

  • Rezoluție ADC - 16 biți;

  • acceptă o serie de protocoale de comunicare (UART, IrDA, SPI, I2S ™, I2C, USB, CAN, LIN și SENT), PWM și altele.

Există, de asemenea, o familie de microcontrolere pe 32 de biți - PIC32MX, principalele caracteristici:

  • funcționează cu o frecvență de până la 120 MHz;

  • Efectuați până la 150 de MIPS

  • ADC: 10 biți, 1 Msps (viteză de cuantificare), până la 48 de canale.



Cu ce ​​PIC să începeți?

Începătorii ar trebui să înceapă să stăpânească microcontrolerele PIC de la o linie pe 8 biți. În general, producătorul susține că caracteristica întregii familii este portabilitatea ușoară a programelor dintr-o familie în alta și identificarea mai multor modele.

Unul dintre cele mai populare microcontrolere din mediul radio amator este PIC16f628A. Caracteristicile sale tehnice sunt următoarele:

  • Există un generator de ceas încorporat. Puteți regla lucrul cu o frecvență de 4 sau 8 MHz;

  • 18 pini, dintre care 16 - intrare / ieșire și 2 - putere;

  • Pentru a funcționa la frecvențe de până la 20 MHz, puteți conecta un rezonator de cuarț, dar în acest caz nu au rămas 16, ci au rămas 14 picioare pentru intrare / ieșire;

  • Există o literă F în marcaj, ceea ce înseamnă că se folosește memoria FLASH cu o capacitate de 2048 de cuvinte;

  • Instrucțiuni pe 14 biți, 35 bucăți;

  • 2 comparatori;

  • 4 intrări analogice;

  • Intrările PORTB au rezistențe de tragere;

  • Două cronometre de 8 biți și una de 16 biți;

  • Ciclul mașinii - 4 cicluri ale unui rezonator de cuarț sau a unui oscilator intern);

  • 224 octeți de RAM;

  • 128 octeți de EEPROM;

  • USART - port serial;

  • referință tensiune internă;

  • alimentat de 3,3 până la 5 V.

Motivele popularității sale sunt prețul redus și capacitatea de a ceas de la un generator intern.

Ce pinout din 16f628 este prezentat mai jos:

Pinout la 16f628

Circuitul intern bloc al acestui microcontroler este prezentat mai jos.

Structura microcontrolerului 16f628

La ce ar trebui să fiu atent în schema în primul rând?

Acest microcontroler are două porturi PORTA și PORTB. Fiecare pin, fiecare dintre ele poate fi utilizat ca intrare și ieșire, precum și pentru conectarea periferice sau activarea altor module ale microcontrolerului.

Luați în considerare această parte a schemei în detaliu.

Porturi MK

De exemplu, porturile RB0-RB3 - pot acționa ca analog. Dacă este necesar, o sursă de ceas este conectată la RA6, RA7 (rezonator de cuarț). Pinii microcontrolerului înșiși sunt configurați în modul de intrare / ieșire folosind registrul TRIS.

Există comenzi pentru acest tip:

TRISA = 0; // Toți pini ai portului A sunt setați ca ieșiri
TRISB = 0xff; // Toți pini ai portului B sunt repartizați ca intrări
TRISA0 = 1; // Deci un pin separat este atribuit ca intrare (1) sau ieșire (0)
TRISA5 = 1// aici a 5-a ieșire a portului A este atribuită ca intrare

În general, modurile de operare, includerea unui WDT (cronometru de veghe), alegerea sursei de ceas a microcontrolerului și așa mai departe sunt configurate folosind registre speciale - SFR, iar memoria și datele sunt stocate în GFR - în cuvinte simple, aceasta este memorie RAM statică.

În fișa oficială, la paginile 18-21 veți găsi 4 bănci de memorie pentru registrele de scopuri speciale SFR și registrele de uz general GFR. Cunoașterea registrelor este importantă, așadar tipăriți și învățați paginile indicate Foaie de date.

Pentru comoditate, aceste tabele sunt prezentate sub forma imaginilor de mai jos (numerotarea registrelor, ca orice în electronica digitală, începe de la 0, deci al patrulea număr este 3).

Registre cu scop special
Registre cu scop special
Registre cu scop special
Registre cu scop special

Cum să vă conectați și în ce limbă să programați?

Pentru a rula acest microcontroler, este suficient să aplicați plus la Vdd și minus la Vss. Dacă aveți nevoie de un rezonator de cuarț, atunci este conectat la pinii 16 și 15 (OSC1 și OSC2) al microcontrolerului PIC16f628, pentru alte controlere cu un număr mai mare sau mai mic de pini - căutați în fișa tehnică. Dar acest punct trebuie indicat în timpul programării și firmware-ului.

Vorbind despre portabilitatea și coincidența pinotului - pe 16f84A - este similară și pe multe altele.

Racordarea unui rezonator de cuarț

Un fragment dintr-un circuit cu rezonator extern conectat la pic16f628a:

Fragment de circuit cu rezonator extern conectat la pic16f628a

Există două limbaje principale pentru programarea microcontrolerelor PIC - asamblator și C, există altele, de exemplu PICBasic etc. Puteți evidenția în continuare limbajul de programare simplificat JAL (doar un alt limbaj).

De exemplu, mai jos este un program pentru „LED-ul intermitent” - un fel de „Hello World” pentru microcontrolerul PIC din C.

Un exemplu de program de microcontroler PIC în C

În linia 1, biblioteca de microcontrolere PIC este conectată, apoi biblioteca de programe de întârziere este conectată.

În funcția principală (void), parametrii inițiali sunt stabiliți la început, la fel cum am făcut în funcția Void setup () - în articole despre arduino. Apoi, în liniile 11-16, este declarată o buclă infinită în timp ce (1), în timpul căreia este executat programul „LED clipește”.

În exemplu, starea portului este inversată în mod constant, adică. dacă a fost la „0”, atunci va trece la „1” și invers. În C pentru PIC există următoarele comenzi de gestionare a comenzilor:

PORTA = 0; // traduce toți pini ai portului A la un nivel scăzut (log. 0)
PORTB = 0xff; // traduce toți pinii portului B la un nivel înalt (log. 1)
RB5 = 1; // Al cincilea pin al portului B este ridicat

Și același program arată așa, dar deja în limba JAL, am tradus în rusă comentariile de la dezvoltatorii de exemple încorporate în JALedit (mediu de dezvoltare).

Proba de program JAL

Există o ispită de a alege JAL și vi se poate părea mai ușor. Desigur, puteți implementa orice proiecte pe aceasta, dar din punct de vedere al beneficiului pentru dvs. ca specialist, este un limbaj inutil. Veți obține rezultate semnificativ mai mari, studiind sintaxa și principiile programării în C (majoritatea limbajelor C-cele mai populare în prezent) sau Assembler este un limbaj de nivel scăzut care vă va face să înțelegeți cum funcționează dispozitivul și ce se întâmplă în program la un moment dat.


Cum să lucrezi

Dacă spuneți că este destul de generalizat pentru a lucra cu orice microcontrolere aveți nevoie:

1. Editor de text.

2. compilatorul.

3. Programul pentru descărcarea firmware-ului pe microcontroler.

Și chiar am citit manuale vechi, în care autorul, care lucra de sub DOS, a scris cod, l-a compilat și l-a aprins folosind diverse mijloace. Acum, pentru toate sistemele de operare populare, există medii de dezvoltare, atât specializate (pentru o familie specifică de microcontrolere sau familii de la un singur producător), cât și universale (fie conțin toate instrumentele necesare, fie sunt conectate ca plug-in-uri).

De exemplu, într-o serie de articole despre Arduino, ne-am uitat la IDE Arduino, în el, am scris codul și cu ajutorul său „turnăm” firmware-ul în „piatră”. Pentru microcontrolerele PIC există programe precum:

  • MPASM - utilizat pentru dezvoltarea în limbajul Assembler de la Microchip;

  • MPLAB este, de asemenea, Microchip IDE pentru controlerele PIC. Este format din mai multe blocuri pentru testarea, verificarea, lucrul cu codul și compilarea programelor și descărcarea la microcontroler. Există, de asemenea, o versiune a MPLAB X IDE - are o funcționalitate excelentă și este construită pe baza platformei NetBeans;

  • MikroC este un mediu universal (nu numai pentru PIK) pentru dezvoltare. După cum sugerează și numele, este „ascuțit” pentru programarea C și există, de asemenea, programe precum MikroBasic și MikroPascal pentru limbile corespunzătoare;

  • JALedit - potrivit pentru limbajul JAL menționat mai sus;

  • Și o serie de alte mai puțin cunoscute.

ID MPLAB

Cum să flash un microcontroller?

Există o serie de programatoare pentru micronotrolere PIC. Considerat oficial PICkit. Cele 4 versiuni ale acestora. Puteți blitz și universal, de exemplu, TL866 (acceptă aproape tot ce ar putea avea nevoie de un radioamator începător, în timp ce este foarte ieftin).

Programatoare pentru Micronotrolle PIC

De asemenea, în rețea există o serie de circuite de programare diferite pentru PIC, atât pentru lucrul prin portul COM:

Circuitul programatorului

Deci este prin USB (de fapt, de asemenea, com, numai prin convertorul de pe IC MAX232).

Circuitul programatorului

concluzie

Microcontrolerele PIC16 sunt potrivite pentru proiecte simple, precum automatizare simplă, voltmetre, termometre și alte lucruri mici. Dar acest lucru nu înseamnă că nu puteți face proiecte complexe și mari pentru această familie, am dat un exemplu despre motivul pentru care acestea sunt cel mai des utilizate. Pentru o idee generală, vă recomand să vizionați câteva videoclipuri:

Într-un articol, nu are rost să luăm în considerare subiecte despre cum să programăm microcontrolerele, indiferent de familie. Întrucât aceasta este o cantitate foarte mare de informații.

Consultați și la i.electricianexp.com:

  • Tipuri și aranjament de microcontrolere AVR
  • Programarea microcontrollerului pentru începători
  • Ce sunt microcontrolerele - scop, dispozitiv, software
  • Microcontrolere programabile în JavaScript: care dintre ele să aleagă, caracteristici ...
  • Metode de citire și gestionare a porturilor I / O Arduino

  •