kategorier: Mikrokontrollkretser
Antall visninger: 23111
Kommentarer til artikkelen: 0
PIC-mikrokontrollere for nybegynnere
I det moderne markedet er det en rekke familier og serier med mikrokontrollere fra forskjellige produsenter, blant dem kan AVR, STM32 og PIC skilles ut. Hver av familiene har funnet sitt eget omfang. I denne artikkelen vil jeg fortelle nybegynnere om PIC-mikrokontrollere, nemlig hva det er og hva du trenger å vite for å komme i gang med dem.

Hva er en PIC
PIC er navnet på en serie mikrokontrollere produsert av Microchip Technology Inc (USA). Navnet PIC kommer fra den perifere grensesnittkontrolleren.
PIC-mikrokontrollere har en RISC-arkitektur. RISC - et forkortet sett med instruksjoner, brukes også i prosessorer for mobile enheter. Det er en rekke eksempler på bruken: ARM, Atmel AVR og andre.
I 2016 kjøpte Microchip Atmel, en produsent av AVR-kontrollere. Derfor presenterer det offisielle nettstedet mikrokontrollere av familien og PIC og AVR.

familie
Blant 8-biters PIC-mikrokontrollere består den av 3 familier som er forskjellige i arkitektur (bitdybde og instruksjonssett).
-
Baseline (PIC10F2xx, PIC12F5xx, PIC16F5x, PIC16F5xx);
-
Mellomklasse (PIC10F3xx, PIC12F6xx, PIC12F7xx, PIC16F6xx, PIC16F7xx, PIC16F8xx, PIC16F9xx);
-
Forbedret mellomtoner (PIC12F1xxx, PIC16F1xxx);
-
High-end eller PIC18 (18Fxxxx, 18FxxJxx og 18FxxKxx).

Egenskapene er gitt i tabellen nedenfor.

I tillegg til 8-bit mikrokontrollere produserer Microchip 16-bit:
-
PIC24F;
-
DsPIC30 / 33F for signalbehandling.
Representanter for 16-bitersfamilien opererer i hastigheter fra 16 til 100 MIPS (millioner instruksjoner per sekund fullført). Det er verdt å merke seg og funksjoner:
-
maskinsyklus - 2 sykluser;
-
ADC-oppløsning - 16 biter;
-
støtter en rekke kommunikasjonsprotokoller (UART, IrDA, SPI, I2S ™, I2C, USB, CAN, LIN og SENT), PWM og mer.
Det er også en familie på 32-biters mikrokontrollere - PIC32MX, hovedfunksjonene:
-
operere med en frekvens på opptil 120 MHz;
-
Utfør opptil 150 MIPS
-
ADC: 10-bit, 1 Msps (kvantiseringshastighet), opptil 48 kanaler.
Hva PIC å begynne med?
Nybegynnere bør begynne å mestre PIC-mikrokontrollere fra en 8-biters linje. Generelt hevder produsenten at funksjonen til hele familien er den enkle portabiliteten til programmer fra en familie til en annen og utpolingen av en rekke modeller.
En av de mest populære mikrokontrollene i amatørradiomiljøet er PIC16f628A. De tekniske egenskapene er som følger:
-
Det er en innebygd klokkegenerator. Du kan stille inn å jobbe med en frekvens på 4 eller 8 MHz;
-
18 pinner, hvorav 16 - inngang / utgang, og 2 - strøm;
-
For å operere med frekvenser opp til 20 MHz, kan du koble til en kvartsresonator, men i dette tilfellet er det ikke 16, men 14 ben igjen for inngang / utgang;
-
Det er en bokstav F i markeringen, som betyr at FLASH-minne med en kapasitet på 2048 ord blir brukt;
-
14-bit instruksjoner, 35 stykker;
-
2 komparatorer;
-
4 analoge innganger;
-
PORTB-innganger har opptrekksmotstander;
-
To 8-biters tidtakere og en 16-biters;
-
Maskinsyklus - 4 sykluser av en kvartsresonator eller intern oscillator);
-
224 byte RAM;
-
128 byte EEPROM;
-
USART - serieport;
-
intern spenning referanse;
-
drevet av 3,3 til 5 V.
Årsakene til dens popularitet er den lave prisen og muligheten til å klokke fra en intern generator.
Hvilken utpolering av 16f628 er vist nedenfor:

Blokkeringskretsen til denne mikrokontrolleren er vist nedenfor.

Hva bør jeg ta hensyn til i ordningen i utgangspunktet?
Denne mikrokontrolleren har to porter PORTA og PORTB. Hver pinne, hver av dem kan brukes som inngang og utgang, samt til å koble til periferiutstyr eller aktivere andre mikrokontrollermoduler.
Vurder denne delen av ordningen i stort.

For eksempel kan portene RB0-RB3 - fungere som analoge. Om nødvendig er en klokkekilde koblet til RA6, RA7 (kvartsresonator). Utgangene til selve mikrokontrolleren er konfigurert i inn / ut-modus ved å bruke TRIS-registeret.
Det er kommandoer for denne typen:
TRISA = 0; // Alle pinner på port A er satt som utganger
TRISB = 0xff; // Alle pinner på port B tilordnes som innganger
TRISA0 = 1; // Så en egen stift er tilordnet som inngang (1) eller utgang (0)
TRISA5 = 1; // her tildeles den femte utgangen fra port A som inngang
Generelt sett er driftsmodusene, inkluderingen av en WDT (vakthund-timer), valget av klokkekilde til mikrokontrolleren og så videre konfigurert ved hjelp av spesielle formålregistre - SFR, og minnet og dataene er lagret i GFR - med enkle ord, dette er statisk RAM.
I det offisielle databladet, på side 18-21, vil du finne 4 minnebanker for spesialregister SFR og generelle formålsregistre GFR. Kunnskap om registre er viktig, så skriv ut og lær de indikerte sidene fra Datablad.
For enkelhets skyld presenteres disse tabellene i form av bilder nedenfor (nummereringen av registerene, som alt innen digital elektronikk, starter fra 0, så det fjerde tallet er 3).




Hvordan koble til og på hvilket språk jeg skal programmere?
For å kjøre denne mikrokontrolleren er det nok å bruke pluss på Vdd og minus på Vss. Hvis du trenger en kvartsresonator, er den koblet til pinnene 16 og 15 (OSC1 og OSC2) på PIC16f628 mikrokontroller, for andre kontrollere med et større eller mindre antall pinner - se i databladet. Men dette punktet må angis under programmering og firmware.
Apropos bærbarhet og tilfeldighet av pinout - på 16f84A - det er likt, og på mange andre.

Et fragment av en krets med en ekstern resonator koblet til pic16f628a:

Det er to hovedspråk for programmering av PIC-mikrokontrollere - assembler og C, det er andre, for eksempel PICBasic, etc. Du kan fremdeles fremheve det forenklede programmeringsspråket JAL (bare et annet språk).
Nedenfor er for eksempel et program for “LED blinkende” - en slags “Hello World” for PIC-mikrokontrolleren i C.

I linje 1 er PIC-mikrokontroller-biblioteket tilkoblet, deretter kobles forsinkelsesprogrammets bibliotek.
I hovedfunksjonen (ugyldig) settes de innledende parametrene i begynnelsen, akkurat som vi gjorde i funksjonen Void setup () - i artikler om arduino. Deretter erklæres det i linje 11-16 en uendelig mens (1) sløyfe, der "LED blinkende" programmet utføres.
I eksemplet blir havnens tilstand kontinuerlig invertert, dvs. hvis det var på "0", vil det gå til "1" og omvendt. I C for PIC er det følgende kommandostyringskommandoer:
PORTA = 0; // oversetter alle pinnene til port A til et lavt nivå (log. 0)
PORTB = 0xff; // oversetter alle pinnene til port B til et høyt nivå (logg 1)
RB5 = 1; // Den femte pinnen av port B er høy
Og det samme programmet ser slik ut, men allerede på JAL-språket oversatte jeg kommentarene fra utviklerne av innebygde eksempler i JALedit (utviklingsmiljø) til russisk.

Det er en fristelse å velge JAL, og det kan virke lettere for deg. Selvfølgelig kan du implementere alle prosjekter på det, men sett fra fordel for deg som spesialist er det et ubrukelig språk. Du vil oppnå betydelig større resultater ved å studere syntaks og prinsipper for programmering i C (de fleste av de for tiden populære C-lignende språk) eller Assembler er et språk på lavt nivå som vil få deg til å forstå hvordan enheten fungerer og hva som skjer i programmet til enhver tid.
Slik jobber du
Hvis du sier ganske generalisert å jobbe med noen mikrokontrollere du trenger:
1. Tekstredaktør.
2. Kompilatoren.
3. Programmet for nedlasting av firmware til mikrokontrolleren.
Og jeg leste til og med gamle lærebøker, der forfatteren, arbeider fra under DOS, skrev kode, kompilerte og flashet den på forskjellige måter. Nå, under alle populære operativsystemer, er det utviklingsmiljøer, både høyt spesialiserte (for en spesifikk familie av mikrokontrollere eller familier fra en produsent) og universelle (enten inneholder alle nødvendige verktøy, eller de er koblet til som plugin-moduler).
For eksempel, i en serie artikler om Arduino, så vi på Arduino IDE; i den skrev vi koden og med sin hjelp "helte" firmwaren i "steinen". For PIC-mikrokontrollere er det slike programmer som:
-
MPASM - brukt for utvikling på Assembler-språket fra Microchip;
-
MPLAB er også Microchip IDE for PIC-kontrollere. Den består av mange blokker for testing, sjekking, arbeid med kode og kompilering av programmer og nedlasting til mikrokontrolleren. Det er også en versjon av MPLAB X IDE - den har god funksjonalitet og er bygget på basis av NetBeans-plattformen;
-
MikroC er et universelt miljø (ikke bare for PIK-er) for utvikling. Som navnet tilsier, er det "skjerpet" for C-programmering, og det er også programmer som MikroBasic og MikroPascal for de tilsvarende språkene.;
-
JALedit - egnet for JAL-språket som vi nevnte ovenfor;
-
Og en rekke andre mindre kjente.

Hvordan blinke en mikrokontroller?
Det finnes et antall programmerere for PIC-mikronotrollere. Offisielt vurdert PICkit. Deres 4 versjoner. Men du kan blinke og universal, for eksempel TL866 (den støtter nesten alt som en nybegynner radioamatør kan trenge, mens den er veldig billig).

Også på nettverket er det en rekke forskjellige programmererkretser for PIC-er, begge for å jobbe gjennom COM-porten:

Så det er via USB (faktisk også com, bare gjennom omformeren på IC MAX232).

konklusjon
PIC16 mikrokontrollere er egnet for enkle prosjekter, for eksempel enkel automatisering, voltmetre, termometre og andre små ting. Men dette betyr ikke at du ikke kan gjøre kompliserte og store prosjekter på denne familien, jeg ga et eksempel på hvorfor de oftest brukes. For en generell idé, anbefaler jeg at du ser på noen få videoer:
I en artikkel er det meningsløst å vurdere temaer for hvordan man programmerer mikrokontrollere, uansett hvilken familie. Siden dette er en veldig stor mengde informasjon.
Se også på elektrohomepro.com
: