categorieën: Microcontroller-circuits
Aantal keer bekeken: 23111
Reacties op het artikel: 0

PIC-microcontrollers voor beginners

 

In de moderne markt zijn er een aantal families en series van microcontrollers van verschillende fabrikanten, waaronder AVR, STM32 en PIC. Elk van de families heeft zijn eigen toepassingsgebied gevonden. In dit artikel vertel ik beginners over PIC-microcontrollers, namelijk wat het is en wat u moet weten om ermee aan de slag te gaan.

PIC-microcontrollers voor beginners

Wat is een PIC

PIC is de naam van een reeks microcontrollers vervaardigd door Microchip Technology Inc (VS). De naam PIC komt van de Peripheral Interface Controller.

PIC-microcontrollers hebben een RISC-architectuur. RISC - een verkorte set instructies, wordt ook gebruikt in processors voor mobiele apparaten. Er zijn een aantal voorbeelden van het gebruik ervan: ARM, Atmel AVR en anderen.

In 2016 kocht Microchip Atmel, een fabrikant van AVR-controllers. Daarom presenteert de officiële website microcontrollers van de familie en PIC en AVR.

Microcontroller PIC16F1xxx

familie

Onder de 8-bit PIC-microcontrollers bestaat het uit 3 families die verschillen in architectuur (bitdiepte en instructieset).

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

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

  • Verbeterd middenbereik (PIC12F1xxx, PIC16F1xxx);

  • High-end of PIC18 (18Fxxxx, 18FxxJxx en 18FxxKxx).

Vergelijking van microcontroller-families

De kenmerken worden in de onderstaande tabel gegeven.

PIC Microcontroller-functies

Naast 8-bit microcontrollers produceert Microchip 16-bit:

  • PIC24F;

  • DsPIC30 / 33F voor signaalverwerking.

Vertegenwoordigers van de 16-bits familie werken met snelheden van 16 tot 100 MIPS (miljoenen instructies per seconde voltooid). Het is het vermelden waard en beschikt over:

  • machinecyclus - 2 cycli;

  • ADC-resolutie - 16 bits;

  • ondersteunen een aantal communicatieprotocollen (UART, IrDA, SPI, I2S ™, I2C, USB, CAN, LIN en SENT), PWM en meer.

Er is ook een familie van 32-bits microcontrollers - PIC32MX, de belangrijkste kenmerken:

  • werken met een frequentie tot 120 MHz;

  • Voer maximaal 150 MIPS uit

  • ADC: 10-bit, 1 Msps (kwantisatiesnelheid), tot 48 kanalen.



Met welke PIC om te beginnen?

Beginners moeten beginnen met het beheersen van PIC-microcontrollers vanaf een 8-bit lijn. Over het algemeen beweert de fabrikant dat het kenmerk van de hele familie de gemakkelijke draagbaarheid van programma's van de ene familie naar de andere is en de pinout van een aantal modellen.

Een van de populairste microcontrollers in de amateurradioomgeving is PIC16f628A. De technische kenmerken zijn als volgt:

  • Er is een ingebouwde klokgenerator. U kunt afstemmen om te werken met een frequentie van 4 of 8 MHz;

  • 18 pins, waarvan 16 - input / output, en 2 - power;

  • Om te werken bij frequenties tot 20 MHz, kunt u een kwartsresonator aansluiten, maar in dit geval zijn er geen 16, maar 14 poten over voor invoer / uitvoer;

  • Er staat een letter F in de markering, wat betekent dat FLASH-geheugen met een capaciteit van 2048 woorden wordt gebruikt;

  • 14-bit instructies, 35 stuks;

  • 2 vergelijkers;

  • 4 analoge ingangen;

  • PORTB-ingangen hebben pull-up weerstanden;

  • Twee 8-bit timers en één 16-bit;

  • Machinecyclus - 4 cycli van een kwartsresonator of interne oscillator);

  • 224 bytes RAM;

  • 128 bytes EEPROM;

  • USART - seriële poort;

  • interne spanningsreferentie;

  • aangedreven door 3,3 tot 5 V.

De redenen voor zijn populariteit zijn de lage prijs en de mogelijkheid om te klokken vanaf een interne generator.

Welke pinout van 16f628 wordt hieronder weergegeven:

Pinout op 16f628

De interne blokschakelingen van deze microcontroller worden hieronder getoond.

Microcontroller structuur 16f628

Waar moet ik in de eerste plaats op letten in het schema?

Deze microcontroller heeft twee poorten PORTA en PORTB. Elke pin, elk van hen kan worden gebruikt als invoer en uitvoer, evenals voor het aansluiten van randapparatuur of het activeren van andere microcontroller-modules.

Beschouw dit deel van de regeling in het algemeen.

MK-poorten

De poorten RB0-RB3 kunnen bijvoorbeeld als analoog werken. Indien nodig wordt een klokbron aangesloten op RA6, RA7 (kwartsresonator). De uitgangen van de microcontroller zelf worden geconfigureerd in de input / output-modus met behulp van het TRIS-register.

Er zijn opdrachten voor dit type:

TRISA = 0; // Alle pinnen van poort A worden ingesteld als uitgangen
TRISB = 0xff; // Alle pinnen van poort B worden toegewezen als ingangen
TRISA0 = 1; // Dus een aparte pin wordt toegewezen als input (1) of output (0)
TRISA5 = 1// hier wordt de 5e uitgang van poort A toegewezen als ingang

Over het algemeen worden de bedrijfsmodi, de opname van een WDT (watchdog-timer), de keuze van de klokbron van de microcontroller enzovoort geconfigureerd met behulp van registers voor speciale doeleinden - SFR, en het geheugen en de gegevens worden opgeslagen in GFR - in eenvoudige woorden, dit is statisch RAM.

In de officiële Datasheet, op pagina's 18-21 vindt u 4 geheugenbanken voor speciale registers SFR en algemene registers GFR. Kennis van registers is belangrijk, dus print en leer de aangegeven pagina's van datasheet.

Voor het gemak worden deze tabellen gepresenteerd in de vorm van onderstaande afbeeldingen (de nummering van de registers, zoals alles in digitale elektronica, begint vanaf 0, dus het vierde nummer is 3).

Registers voor speciale doeleinden
Registers voor speciale doeleinden
Registers voor speciale doeleinden
Registers voor speciale doeleinden

Hoe verbinding maken en in welke taal te programmeren?

Om deze microcontroller uit te voeren, is het voldoende om plus toe te passen op Vdd en min op Vss. Als u een kwartsresonator nodig hebt, is deze verbonden met pennen 16 en 15 (OSC1 en OSC2) van de PIC16f628 microcontroller, voor andere controllers met een groter of kleiner aantal pennen - kijk in datasheet. Maar dit punt moet worden aangegeven tijdens het programmeren en de firmware.

Over draagbaarheid en toeval van de pinout gesproken - op 16f84A - het is vergelijkbaar, en op vele anderen.

Aansluiting van een kwartsresonator

Een fragment van een circuit met een externe resonator verbonden met pic16f628a:

Circuitfragment met een externe resonator verbonden met pic16f628a

Er zijn twee hoofdtalen voor het programmeren van PIC-microcontrollers - assembler en C, er zijn andere, bijvoorbeeld PICBasic, etc. U kunt nog steeds de vereenvoudigde programmeertaal JAL markeren (gewoon een andere taal).

Hieronder ziet u bijvoorbeeld een programma voor 'LED-knipperlicht' - een soort 'Hallo wereld' voor de PIC-microcontroller in C.

Een voorbeeld van een PIC-microcontroller-programma in C

In regel 1 is de PIC-microcontrollerbibliotheek verbonden en vervolgens is de vertragingsprogrammabibliotheek verbonden.

In de hoofdfunctie (void) worden de beginparameters aan het begin ingesteld, net zoals in de functie Void setup () - in artikelen over Arduino. Vervolgens wordt in regels 11-16 een oneindige while (1) lus gedeclareerd, waarin het programma "LED knippert" wordt uitgevoerd.

In het voorbeeld wordt de toestand van de poort constant omgekeerd, d.w.z. als het op "0" was, dan gaat het naar "1" en vice versa. In C voor PIC zijn de volgende opdrachtbeheeropdrachten:

PORTA = 0; // vertaalt alle pinnen van poort A naar een laag niveau (log. 0)
PORTB = 0xff; // vertaalt alle pinnen van poort B naar een hoog niveau (log. 1)
RB5 = 1; // De vijfde pin van poort B is hoog

En het lijkt op hetzelfde programma, maar al in de JAL-taal vertaalde ik in Russische opmerkingen van de ontwikkelaars van ingebouwde voorbeelden in JALedit (ontwikkelomgeving).

Voorbeeld JAL-programma

Er is een verleiding om voor JAL te kiezen, en het lijkt misschien eenvoudiger voor je. Natuurlijk kunt u er projecten op uitvoeren, maar vanuit het oogpunt van voordeel voor u als specialist is het een nutteloze taal. U zult aanzienlijk betere resultaten behalen door de syntaxis en programmeerprincipes in C te bestuderen (de meeste talen die momenteel populair zijn, zijn C-achtig) of in Assembler - dit is een taal op laag niveau waardoor u het principe van het apparaat begrijpt en wat er op een bepaald moment in het programma gebeurt.


Hoe te werken

Als je vrij algemeen zegt dat je moet werken met microcontrollers die je nodig hebt:

1. Teksteditor.

2. De compiler.

3. Het programma voor het downloaden van firmware naar de microcontroller.

En ik las zelfs oude schoolboeken, waar de auteur, werkend vanuit DOS, code schreef, compileerde en flashde op verschillende manieren. Nu zijn er voor alle populaire besturingssystemen ontwikkelomgevingen, zowel zeer gespecialiseerd (voor een specifieke familie van microcontrollers of families van één fabrikant) als universeel (bevatten alle benodigde tools of zijn verbonden als plug-ins).

In een reeks artikelen over Arduino hebben we bijvoorbeeld gekeken naar de Arduino IDE; hierin hebben we de code geschreven en met de hulp de firmware in de 'steen' gegoten. Voor PIC-microcontrollers zijn er programma's zoals:

  • MPASM - gebruikt voor ontwikkeling in de Assembler-taal van Microchip;

  • MPLAB is ook de Microchip IDE voor PIC-controllers. Het bestaat uit vele blokken voor testen, controleren, werken met code en compileren van programma's en downloaden naar de microcontroller. Er is ook een versie van MPLAB X IDE - deze beschikt over geweldige functionaliteit en is gebouwd op basis van het NetBeans-platform;

  • MikroC is een universele omgeving (niet alleen voor PIK's) voor ontwikkeling. Zoals de naam al aangeeft, is deze "aangescherpt" voor C-programmering, en er zijn ook programma's zoals MikroBasic en MikroPascal voor de overeenkomstige talen;

  • JALedit - geschikt voor de JAL-taal die we hierboven hebben genoemd;

  • En een aantal andere minder bekende.

MPLAB IDE

Hoe een microcontroller te flashen?

Er zijn een aantal programmeurs voor PIC micronotrollers. Officieel beschouwd als PICkit. Hun 4 versies. Maar je kunt bijvoorbeeld flitsen en universeel gebruiken, TL866 (het ondersteunt bijna alles wat een beginnende radioamateur nodig heeft, terwijl het erg goedkoop is).

Programmeurs voor PIC Micronotrollers

Ook op het netwerk zijn er een aantal verschillende programmeercircuits voor PIC's, beide voor het werken via de COM-poort:

Programmeercircuit

Het is dus via USB (eigenlijk ook alleen via de converter op de IC MAX232).

Programmeercircuit

conclusie

PIC16-microcontrollers zijn geschikt voor eenvoudige projecten, zoals eenvoudige automatisering, voltmeters, thermometers en andere kleine dingen. Maar dit betekent niet dat je geen complexe en grote projecten op deze familie kunt doen, ik gaf een voorbeeld waarom ze het meest worden gebruikt. Voor een algemeen idee raad ik aan een paar video's te bekijken:

In één artikel is het zinloos om onderwerpen te bespreken over hoe microcontrollers te programmeren, ongeacht welke familie. Omdat dit een zeer grote hoeveelheid informatie is.

Zie ook op i.electricianexp.com:

  • Typen en opstelling van AVR-microcontrollers
  • Microcontroller-programmering voor beginners
  • Wat zijn microcontrollers - doel, apparaat, software
  • Programmeerbare microcontrollers in JavaScript: welke te kiezen, kenmerken ...
  • Methoden voor het lezen en beheren van Arduino I / O-poorten

  •