kategorier: Microcontroller kredsløb
Antal visninger: 23111
Kommentarer til artiklen: 0

PIC-mikrokontrollere til begyndere

 

På det moderne marked er der et antal familier, og der kan skelnes række mikrokontrollere fra forskellige producenter, herunder AVR, STM32 og PIC. Hver af familierne har fundet sit eget omfang. I denne artikel vil jeg fortælle begyndere om PIC-mikrokontrollere, nemlig hvad det er, og hvad du har brug for at vide for at komme i gang med dem.

PIC-mikrokontrollere til begyndere

Hvad er et PIC

PIC er navnet på en række mikrokontrollere fremstillet af Microchip Technology Inc (USA). Navnet PIC kommer fra den perifere interfacekontroller.

PIC-mikrokontrollere har en RISC-arkitektur. RISC - et forkortet sæt instruktioner, bruges også i processorer til mobile enheder. Der er en række eksempler på dens anvendelse: ARM, Atmel AVR og andre.

I 2016 købte Microchip Atmel, en producent af AVR-controllere. Derfor præsenterer det officielle websted mikrokontrollere af familien og PIC og AVR.

Microcontroller PIC16F1xxx

familie

Blandt 8-bit PIC-mikrokontrollere består den af ​​3 familier, der er forskellige i arkitektur (bitdybde og instruktionssæt).

  • Baseline (PIC10F2xx, PIC12F5xx, PIC16F5x, PIC16F5xx);

  • Mellemklasse (PIC10F3xx, PIC12F6xx, PIC12F7xx, PIC16F6xx, PIC16F7xx, PIC16F8xx, PIC16F9xx);

  • Forbedret mellemklasse (PIC12F1xxx, PIC16F1xxx);

  • High-end eller PIC18 (18Fxxxx, 18FxxJxx og 18FxxKxx).

Sammenligning af mikrokontrollerfamilier

Egenskaberne er angivet i nedenstående tabel.

PIC-mikrokontrollerfunktioner

Ud over 8-bit mikrokontrollere producerer Microchip 16-bit:

  • PIC24F;

  • DsPIC30 / 33F til signalbehandling.

Repræsentanter for 16-bit-familien arbejder i hastigheder fra 16 til 100 MIPS (millioner af instruktioner pr. Sekund afsluttet). Det er værd at bemærke og funktioner:

  • maskincyklus - 2 cyklusser;

  • ADC-opløsning - 16 bit;

  • understøtter en række kommunikationsprotokoller (UART, IrDA, SPI, I2S ™, I2C, USB, CAN, LIN og SENT), PWM og mere.

Der er også en familie på 32 bit mikrokontrollere - PIC32MX, de vigtigste funktioner:

  • arbejde med en frekvens på op til 120 MHz;

  • Udfør op til 150 MIPS

  • ADC: 10-bit, 1 Msps (kvantiseringshastighed), op til 48 kanaler.



Hvad PIC at starte med?

Begyndere skal begynde at mestre PIC-mikrokontrollere fra en 8-bit linje. Generelt hævder producenten, at funktionen for hele familien er den lette overførsel af programmer fra en familie til en anden og udpolingen af ​​et antal modeller.

En af de mest populære mikrokontrollere i amatørradiomiljøet er PIC16f628A. Dens tekniske egenskaber er som følger:

  • Der er en indbygget urgenerator. Du kan stille ind på at arbejde med en frekvens på 4 eller 8 MHz;

  • 18 stifter, hvoraf 16 - input / output og 2 - power;

  • For at arbejde på frekvenser op til 20 MHz kan du tilslutte en kvartsresonator, men i dette tilfælde er der ikke 16, men 14 ben tilbage til input / output;

  • Der er et bogstav F i markeringen, hvilket betyder, at der bruges FLASH-hukommelse med en kapacitet på 2048 ord;

  • 14-bit instruktioner, 35 stykker;

  • 2 komparatorer;

  • 4 analoge indgange;

  • PORTB-indgange har pull-up-modstande;

  • To 8-bit timere og en 16-bit;

  • Maskincyklus - 4 cyklusser af en kvartsresonator eller intern oscillator);

  • 224 byte RAM;

  • 128 byte EEPROM;

  • USART - seriel port;

  • intern spænding reference;

  • drevet af 3,3 til 5 V.

Årsagerne til dens popularitet er den lave pris og muligheden for at ur fra en intern generator.

Hvilken pinout af 16f628 er vist nedenfor:

Pinout ved 16f628

Blokeringens interne kredsløb for denne mikrokontroller er vist nedenfor.

Mikrocontroller struktur 16f628

Hvad skal jeg være opmærksom på i ordningen i første omgang?

Denne mikrocontroller har to porte PORTA og PORTB. Hver pin, hver af dem kan bruges som input og output samt til at tilslutte perifere enheder eller bruge andre moduler på mikrokontrolleren.

Overvej denne del af ordningen stort set.

MK-porte

For eksempel kan porte RB0-RB3 - fungere som analoge. Om nødvendigt er en urskilde forbundet til RA6, RA7 (kvartsresonator). Mikrokontrollerens udgange konfigureres i input / output-tilstand ved hjælp af TRIS-registeret.

Der er kommandoer til denne type:

TRISA = 0; // Alle stifter i port A er indstillet som udgange
TRISB = 0xff; // Alle stifter af port B tildeles som input
TRISA0 = 1; // Så en separat pin tildeles som input (1) eller output (0)
TRISA5 = 1// her tildeles 5. udgang fra port A som input

Generelt konfigureres driftstilstande, inkludering af en WDT (watchdog-timer), valget af urekilde for mikrokontrolleren osv. Ved hjælp af specielle registre - SFR, og hukommelsen og data er gemt i GFR - med enkle ord, dette er statisk RAM.

I det officielle datablad på side 18-21 finder du 4 hukommelsesbanker til SFR-registre til specielle formål og GFR-generelle formål. Kendskab til registre er vigtig, så udskriv og lær de angivne sider fra Blad.

For nemheds skyld præsenteres disse tabeller i form af billeder nedenfor (nummereringen af ​​registre, ligesom alt inden for digital elektronik, starter fra 0, så det fjerde nummer er 3).

Specialregistre
Specialregistre
Specialregistre
Specialregistre

Hvordan tilsluttes og på hvilket sprog der skal programmeres?

For at køre denne mikrocontroller er det nok at anvende plus på Vdd og minus på Vss. Hvis du har brug for en kvartsresonator, er den tilsluttet stik 16 og 15 (OSC1 og OSC2) på PIC16f628-mikrokontrolleren, til andre controllere med et større eller mindre antal stifter - se i databladet. Men dette punkt skal angives under programmering og firmware.

Apropos bærbarhed og sammenfald af pinout - på 16f84A - det er ens og på mange andre.

Tilslutning af en kvartsresonator

Et fragment af et kredsløb med en ekstern resonator forbundet til pic16f628a:

Kredsløbsfragment med en ekstern resonator forbundet til pic16f628a

Der er to hovedsprog til programmering af PIC-mikrokontrollere - assembler og C, der er andre, f.eks. PICBasic osv. Du kan stadig fremhæve det forenklede programmeringssprog JAL (bare et andet sprog).

Nedenfor er for eksempel et program til "LED blinkende" - en slags "Hello World" til PIC-mikrokontrolleren i C.

Et eksempel på et PIC-mikrokontrollerprogram i C

I linje 1 er PIC-mikrokontrolbiblioteket tilsluttet, derefter er forsinkelsesprogrambiblioteket forbundet.

I hovedfunktionen (void) indstilles de indledende parametre i begyndelsen, ligesom vi gjorde i funktionen Void setup () - i artikler om arduino. Derefter i linjer 11-16 erklæres en uendelig mens (1) sløjfe, hvor "LED blinkende" program udføres.

I eksemplet er havnens tilstand konstant omvendt, dvs. hvis det var på "0", vil det gå til "1" og vice versa. I C for PIC er der følgende kommandostyringskommandoer:

PORTA = 0; // oversætter alle stifter i port A til et lavt niveau (log. 0)
PORTB = 0xff; // oversætter alle stifter i port B til et højt niveau (log. 1)
RB5 = 1; // Den femte pin af port B er høj

Og det ligner det samme program, men allerede på JAL-sproget oversatte jeg til russiske kommentarer fra udviklerne af indbyggede eksempler i JALedit (udviklingsmiljø).

Eksempel på JAL-program

Der er en fristelse til at vælge JAL, og det kan virke lettere for dig. Selvfølgelig kan du implementere alle projekter på det, men ud fra en fordel for dig som specialist er det et nytteløst sprog. Du vil opnå markant større resultater ved at studere syntaks og principper for programmering i C (de fleste af de aktuelt populære C-lignende sprog), eller Assembler er et lavt niveau sprog, der får dig til at forstå, hvordan enheden fungerer, og hvad der sker i programmet på et givet tidspunkt.


Sådan arbejder du

Hvis du siger ganske generaliseret at arbejde med alle mikrokontrollere, du har brug for:

1. Teksteditor.

2. Kompilatoren.

3. Programmet til download af firmware til mikrokontrolleren.

Og jeg læste endda gamle lærebøger, hvor forfatteren, der arbejdede under DOS, skrev kode, kompilerede og flashede den på forskellige måder. For alle populære operativsystemer er der nu udviklingsmiljøer, både højt specialiserede (til en bestemt familie af mikrokontrollere eller familier fra en producent) og universelle (enten indeholder alle de nødvendige værktøjer, eller de er tilsluttet som plug-ins).

I en række artikler om Arduino så vi for eksempel på Arduino IDE; i den skrev vi koden, og med dens hjælp "hældes" firmwaren i "stenen". For PIC-mikrokontrollere er der sådanne programmer som:

  • MPASM - bruges til udvikling på Assembler-sproget fra Microchip;

  • MPLAB er også Microchip IDE til PIC-controllere. Det består af mange blokke til test, kontrol, arbejde med kode og kompilering af programmer og download til mikrokontrolleren. Der er også en version af MPLAB X IDE - den har stor funktionalitet og er bygget på basis af NetBeans-platformen;

  • MikroC er et universelt miljø (ikke kun for PIK'er) til udvikling. Som navnet antyder er det "skærpet" til C-programmering, og der er også programmer som MikroBasic og MikroPascal for de tilsvarende sprog;

  • JALedit - egnet til det JAL-sprog, som vi nævnte ovenfor;

  • Og en række andre mindre kendte.

MPLAB IDE

Sådan flashes en mikrokontroller?

Der er et antal programmerere til PIC-mikronotrollere. Officielt betragtet som PICkit. Deres 4 versioner. Men du kan blinke og universal, for eksempel TL866 (det understøtter næsten alt, hvad en nybegynder radioamatør muligvis har brug for, mens det er meget billigt).

Programmerere til PIC Micronotrollers

På netværket findes der også en række forskellige programmeringscirkulationer til PIC'er, begge til at arbejde gennem COM-porten:

Programmer kredsløb

Så det er via USB (faktisk også com, kun via konverteren på IC MAX232).

Programmer kredsløb

konklusion

PIC16 mikrokontrollere er velegnede til enkle projekter, såsom simpel automatisering, voltmetre, termometre og andre små ting. Men dette betyder ikke, at du ikke kan udføre komplekse og store projekter i denne familie, jeg gav et eksempel på, hvorfor de oftest bruges. For en generel idé anbefaler jeg at se et par videoer:

I en artikel er det meningsløst at overveje emner til, hvordan man programmerer mikrokontrollere, uanset hvilken familie. Da dette er en meget stor mængde information.

Se også på elektrohomepro.com:

  • Typer og arrangement af AVR-mikrokontrollere
  • Mikrocontroller-programmering for begyndere
  • Hvad er mikrokontrollere - formål, enhed, software
  • Programmerbare mikrokontrollere i JavaScript: hvilken man skal vælge, egenskaber ...
  • Metoder til læsning og styring af Arduino I / O-porte

  •