kategorier: Mikrokontrollkretsar
Antal visningar: 23111
Kommentarer till artikeln: 0

PIC-mikrokontroller för nybörjare

 

På den moderna marknaden finns det ett antal familjer och serier av mikrokontroller från olika tillverkare, varav AVR, STM32 och PIC kan särskiljas. Varje familj har hittat sitt eget räckvidd. I den här artikeln kommer jag att berätta för nybörjare om PIC-mikrokontroller, nämligen vad det är och vad du behöver veta för att komma igång med dem.

PIC-mikrokontroller för nybörjare

Vad är en PIC

PIC är namnet på en serie mikrokontroller tillverkade av Microchip Technology Inc (USA). Namnet PIC kommer från Peripheral Interface Controller.

PIC-mikrokontroller har en RISC-arkitektur. RISC - en förkortad uppsättning instruktioner, används också i processorer för mobila enheter. Det finns ett antal exempel på dess användning: ARM, Atmel AVR och andra.

2016 köpte Microchip Atmel, en tillverkare av AVR-kontroller. Därför presenterar den officiella webbplatsen mikrokontroller för familjen och PIC och AVR.

Mikrokontroller PIC16F1xxx

familj

Bland de 8-bitars PIC-mikrokontrollerna består den av 3 familjer som skiljer sig i arkitektur (bitdjup och instruktionsuppsättning).

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

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

  • Förbättrad mellanklass (PIC12F1xxx, PIC16F1xxx);

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

Jämförelse av mikrokontrollfamiljer

Egenskaperna anges i tabellen nedan.

PIC-funktioner för mikrokontroller

Förutom 8-bitars mikrokontroller producerar Microchip 16-bitars:

  • PIC24F;

  • DsPIC30 / 33F för signalbehandling.

Representanter för 16-bitarsfamiljen arbetar med hastigheter från 16 till 100 MIPS (miljoner instruktioner per sekund slutförda). Det är värt att notera och funktioner:

  • maskincykel - 2 cykler;

  • ADC-upplösning - 16 bitar;

  • stödjer ett antal kommunikationsprotokoll (UART, IrDA, SPI, I2S ™, I2C, USB, CAN, LIN och SENT), PWM och mer.

Det finns också en familj av 32-bitars mikrokontroller - PIC32MX, huvudfunktionerna:

  • arbeta med en frekvens på upp till 120 MHz;

  • Utför upp till 150 MIPS

  • ADC: 10-bitars, 1 Msps (kvantiseringshastighet), upp till 48 kanaler.



Vad PIC att börja med?

Nybörjare bör börja behärska PIC-mikrokontroller från en 8-bitars linje. I allmänhet hävdar tillverkaren att funktionen för hela familjen är den enkla portabiliteten för program från en familj till en annan och utspänningen av ett antal modeller.

En av de mest populära mikrokontrollerna i amatörradiomiljön är PIC16f628A. Dess tekniska egenskaper är följande:

  • Det finns en inbyggd klockgenerator. Du kan ställa in för att arbeta med en frekvens på 4 eller 8 MHz;

  • 18 stift, varav 16 - ingång / utgång, och 2 - effekt;

  • För att arbeta med frekvenser upp till 20 MHz kan du ansluta en kvartsresonator, men i detta fall finns det inte 16 utan 14 ben kvar för ingång / utgång;

  • Det finns en bokstav F i markeringen, vilket innebär att FLASH-minne med en kapacitet på 2048 ord används;

  • 14-bitars instruktioner, 35 delar;

  • 2 komparatorer;

  • 4 analoga ingångar;

  • PORTB-ingångar har uppdragningsmotstånd;

  • Två 8-bitars tidtagare och en 16-bitars;

  • Maskincykel - 4 cykler av en kvartsresonator eller intern oscillator);

  • 224 byte RAM;

  • 128 byte EEPROM;

  • USART - serieport;

  • intern spänningsreferens;

  • drivs av 3,3 till 5 V.

Anledningarna till dess popularitet är det låga priset och möjligheten att klocka från en intern generator.

Vilken utspänning av 16f628 visas nedan:

Pinout vid 16f628

Den interna blockkretsen för denna mikrokontroller visas nedan.

Mikrokontrollerstruktur 16f628

Vad ska jag i första hand uppmärksamma på systemet?

Denna mikrokontroller har två portar PORTA och PORTB. Varje stift, var och en av dem kan användas som ingång och utgång, samt för att ansluta kringutrustning eller aktivera andra mikrokontrollermoduler.

Betrakta denna del av schemat i detalj.

MK-hamnar

Till exempel kan portarna RB0-RB3 - fungera som analoga. Vid behov är en klockkälla ansluten till RA6, RA7 (kvartsresonator). Mikrokontrollerns utgångar konfigureras i ingångs- / utgångsläget med hjälp av TRIS-registret.

Det finns kommandon för denna typ:

TRISA = 0; // Alla stift på port A ställs in som utgångar
TRISB = 0xff; // Alla stift på port B tilldelas som ingångar
TRISA0 = 1; // Så en separat stift tilldelas som ingång (1) eller utgång (0)
TRISA5 = 1// här tilldelas den femte utgången från port A som ingång

I allmänhet konfigureras driftsätten, införandet av en WDT (vakthundtimer), valet av klockkälla för mikrokontrollern och så vidare med specialregister - SFR, och minnet och data lagras i GFR - med enkla ord, detta är statisk RAM.

I det officiella databladet, på sidorna 18-21, hittar du fyra minnesbanker för SFR och register för allmänna ändamål GFR. Kunskap om register är viktig, så skriv ut och lär dig de angivna sidorna från Datablad.

För enkelhets skull presenteras dessa tabeller i form av bilder nedan (numrering av register, som allt inom digital elektronik, börjar från 0, så det fjärde numret är 3).

Särskilda ändamål
Särskilda ändamål
Särskilda ändamål
Särskilda ändamål

Hur ansluter jag och på vilket språk jag ska programmera?

För att köra denna mikrokontroller räcker det att applicera plus på Vdd och minus på Vss. Om du behöver en kvartsresonator är den ansluten till stift 16 och 15 (OSC1 och OSC2) på mikrokontrollen PIC16f628, för andra styrenheter med ett större eller mindre antal stift - titta i databladet. Men denna punkt måste anges under programmering och firmware.

På tal om portabilitet och sammanfall av pinout - på 16f84A - är det liknande, och på många andra.

Anslutning av en kvartsresonator

Ett fragment av en krets med en extern resonator ansluten till pic16f628a:

Kretsfragment med en extern resonator ansluten till pic16f628a

Det finns två huvudspråk för programmering av PIC-mikrokontroller - assembler och C, det finns andra, till exempel PICBasic, etc. Du kan fortfarande markera det förenklade programmeringsspråket JAL (bara ett annat språk).

Nedan är till exempel ett program för "LED blinkande" - ett slags "Hello World" för PIC-mikrokontrollern i C.

Ett exempel på ett PIC-mikrokontrollerprogram i C

I rad 1 är PIC-mikrokontrollerbiblioteket anslutet, sedan är fördröjningsprogrambiblioteket anslutet.

I huvudfunktionen (void) ställs de inledande parametrarna i början, precis som vi gjorde i funktionen Void setup () - i artiklar om arduino. Sedan, i raderna 11-16, deklareras en oändlig medan (1) slinga, under vilken "LED blinkar" -programmet körs.

I exemplet är portens tillstånd ständigt inverterat, dvs. om det var på "0", kommer det att gå till "1" och vice versa. I C för PIC finns följande kommandostyrningskommandon:

PORTA = 0; // översätter alla stift i port A till en låg nivå (log. 0)
PORTB = 0xff; // översätter alla stift i port B till en hög nivå (log. 1)
RB5 = 1; // Den femte stiftet av port B är hög

Och det ser ut som samma program, men redan på JAL-språket översatte jag till ryska kommentarer från utvecklarna av inbyggda exempel i JALedit (utvecklingsmiljö).

Exempel på JAL-program

Det finns en frestelse att välja JAL, och det kan verka lättare för dig. Naturligtvis kan alla projekt implementeras på det, men med tanke på nyttan för dig som specialist är det ett meningslöst språk. Du kommer att uppnå betydligt större resultat genom att studera syntaxen och principerna för programmering i C (de flesta av de för närvarande populära C-liknande språken) eller Assembler är ett lågnivåspråk som får dig att förstå hur enheten fungerar och vad som händer i programmet vid en viss tidpunkt.


Hur man arbetar

Om du säger ganska generaliserat att arbeta med alla mikrokontroller behöver du:

1. Textredigerare.

2. Kompilatorn.

3. Programmet för nedladdning av firmware till mikrokontrollern.

Och jag läste till och med gamla läroböcker, där författaren, som arbetade under DOS, skrev kod, kompilerade och blinkade den på olika sätt. Under alla populära operativsystem finns nu utvecklingsmiljöer, både högt specialiserade (för en specifik familj av mikrokontroller eller familjer från en tillverkare) och universal (antingen innehåller alla nödvändiga verktyg, eller så är de anslutna som plug-ins).

I en serie artiklar om Arduino såg vi till exempel på Arduino IDE: i den skrev vi koden och med sin hjälp "hällde" firmware in i "stenen". För PIC-mikrokontroller finns det sådana program som:

  • MPASM - används för utveckling på Assembler-språket från Microchip;

  • MPLAB är också Microchip IDE för PIC-kontroller. Det består av många block för att testa, kontrollera, arbeta med kod och sammanställa program och ladda ner till mikrokontrollern. Det finns också en version av MPLAB X IDE - den har fantastisk funktionalitet och är byggd på basis av NetBeans-plattformen;

  • MikroC är en universell miljö (inte bara för PIK) för utveckling. Som namnet antyder är det "skärpt" för C-programmering, och det finns också program som MikroBasic och MikroPascal för motsvarande språk.;

  • JALedit - passar för JAL-språket som vi nämnde ovan;

  • Och ett antal andra mindre kända.

MPLAB IDE

Hur man blinkar en mikrokontroller?

Det finns ett antal programmerare för PIC-mikronotroller. Officiellt betraktad PICkit. Deras fyra versioner. Men du kan blixt och universal, till exempel TL866 (den stöder nästan allt som en nybörjare radioamatör kan behöva, medan det är väldigt billigt).

Programmerare för PIC Micronotrollers

I nätverket finns det också ett antal olika programmerarkretsar för PIC: er, båda för att arbeta genom COM-porten:

Programmerarkrets

Så det är via USB (faktiskt också com, bara genom omvandlaren på IC MAX232).

Programmerarkrets

slutsats

PIC16 mikrokontroller är lämpliga för enkla projekt, till exempel enkel automatisering, voltmetrar, termometrar och andra små saker. Men detta betyder inte att du inte kan göra komplexa och stora projekt i den här familjen, jag gav ett exempel på varför de oftast används. För en allmän idé rekommenderar jag att du tittar på några videor:

I en artikel är det meningslöst att överväga ämnen om hur man programmerar mikrokontroller, oavsett vilken familj. Eftersom detta är en mycket stor mängd information.

Se även på elektrohomepro.com:

  • Typer och arrangemang av AVR-mikrokontroller
  • Mikrokontrollerprogrammering för nybörjare
  • Vad är mikrokontroller - ändamål, enhet, programvara
  • Programmerbara mikrokontroller i JavaScript: vilken man ska välja, egenskaper ...
  • Metoder för att läsa och hantera Arduino I / O-portar

  •