categorie: Circuiti a microcontrollore
Numero di visite: 23111
Commenti sull'articolo: 0

Microcontrollori PIC per principianti

 

Nel mercato moderno ci sono un certo numero di famiglie e serie di microcontrollori di diversi produttori, tra cui si possono distinguere AVR, STM32 e PIC. Ognuna delle famiglie ha trovato il proprio scopo. In questo articolo parlerò ai principianti dei microcontrollori PIC, vale a dire, di cosa si tratta e cosa è necessario sapere per iniziare con loro.

Microcontrollori PIC per principianti

Che cos'è un PIC

PIC è il nome di una serie di microcontrollori prodotti da Microchip Technology Inc (USA). Il nome PIC deriva dal controller dell'interfaccia periferica.

I microcontrollori PIC hanno un'architettura RISC. RISC - un insieme abbreviato di istruzioni, viene utilizzato anche nei processori per dispositivi mobili. Esistono numerosi esempi del suo utilizzo: ARM, Atmel AVR e altri.

Nel 2016, Microchip ha acquistato Atmel, un produttore di controller AVR. Pertanto, il sito Web ufficiale presenta microcontrollori della famiglia e PIC e AVR.

Microcontrollore PIC16F1xxx

famiglia

Tra i microcontrollori PIC a 8 bit, è composto da 3 famiglie che si differenziano per l'architettura (profondità di bit e set di istruzioni).

  • Linea di base (PIC10F2xx, PIC12F5xx, PIC16F5x, PIC16F5xx);

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

  • Midrange avanzato (PIC12F1xxx, PIC16F1xxx);

  • High-end o PIC18 (18Fxxxx, 18FxxJxx e 18FxxKxx).

Confronto tra famiglie di microcontrollori

Le caratteristiche sono riportate nella tabella seguente.

Caratteristiche del microcontrollore PIC

Oltre ai microcontrollori a 8 bit, Microchip produce 16 bit:

  • PIC24F;

  • DsPIC30 / 33F per l'elaborazione del segnale.

I rappresentanti della famiglia a 16 bit operano a velocità comprese tra 16 e 100 MIPS (milioni di istruzioni al secondo completate). Vale la pena notare e caratteristiche:

  • ciclo macchina - 2 cicli;

  • Risoluzione ADC - 16 bit;

  • supporta numerosi protocolli di comunicazione (UART, IrDA, SPI, I2S ™, I2C, USB, CAN, LIN e SENT), PWM e altri.

Esiste anche una famiglia di microcontrollori a 32 bit - PIC32MX, le caratteristiche principali:

  • operare ad una frequenza fino a 120 MHz;

  • Esegui fino a 150 MIPS

  • ADC: 10 bit, 1 Msps (velocità di quantizzazione), fino a 48 canali.



Con quale PIC iniziare?

I principianti dovrebbero iniziare a padroneggiare i microcontrollori PIC da una linea a 8 bit. In generale, il produttore afferma che una caratteristica di tutta la famiglia è la facile portabilità dei programmi da una famiglia all'altra e il pinout di un numero di modelli.

Uno dei microcontrollori più popolari nell'ambiente radioamatoriale è PIC16f628A. Le sue caratteristiche tecniche sono le seguenti:

  • C'è un generatore di clock incorporato. Puoi sintonizzarti per lavorare con una frequenza di 4 o 8 MHz;

  • 18 pin, di cui 16 - input / output e 2 - power;

  • Per operare a frequenze fino a 20 MHz, è possibile collegare un risonatore al quarzo, ma in questo caso non sono rimasti 16, ma 14 gambe per input / output;

  • C'è una lettera F nella marcatura, che significa che viene utilizzata la memoria FLASH con una capacità di 2048 parole;

  • Istruzioni a 14 bit, 35 pezzi;

  • 2 comparatori;

  • 4 ingressi analogici;

  • Gli ingressi PORTB hanno resistenze pull-up;

  • Due timer a 8 bit e uno a 16 bit;

  • Ciclo macchina - 4 cicli di un risonatore al quarzo o di un oscillatore interno);

  • 224 byte di RAM;

  • 128 byte di EEPROM;

  • USART - porta seriale;

  • riferimento di tensione interna;

  • alimentato da 3,3 a 5 V.

Le ragioni della sua popolarità sono il basso prezzo e la possibilità di eseguire il clock da un generatore interno.

Quale pinout di 16f628 è mostrato di seguito:

Pinout a 16f628

Il circuito interno a blocchi di questo microcontrollore è mostrato di seguito.

Struttura del microcontrollore 16f628

A cosa dovrei prestare attenzione in primo luogo nello schema?

Questo microcontrollore ha due porte PORTA e PORTB. Ciascun pin, ciascuno di essi può essere utilizzato come input e output, nonché per il collegamento di periferiche o l'attivazione di altri moduli di microcontrollore.

Considera questa parte dello schema in grande dettaglio.

Porte MK

Ad esempio, le porte RB0-RB3 - possono agire come analogiche. Se necessario, una sorgente di clock è collegata a RA6, RA7 (risonatore al quarzo). Le uscite del microcontrollore sono configurate nella modalità input / output usando il registro TRIS.

Esistono comandi per questo tipo:

TRISA = 0; // Tutti i pin della porta A sono impostati come uscite
TRISB = 0xff; // Tutti i pin della porta B sono assegnati come input
TRISA0 = 1; // Quindi un pin separato viene assegnato come input (1) o output (0)
TRISA5 = 1// qui viene assegnata la 5a uscita della porta A come input

In generale, le modalità operative, l'inclusione di un WDT (watchdog timer), la scelta della sorgente di clock del microcontrollore e così via sono configurate utilizzando registri speciali - SFR, e la memoria e i dati sono memorizzati in GFR - in parole semplici, questa è RAM statica.

Nella scheda tecnica ufficiale, alle pagine 18-21, troverete 4 banchi di memoria per registri per scopi speciali SFR e registri per uso generale GFR. La conoscenza dei registri è importante, quindi stampa e impara le pagine indicate scheda tecnica.

Per comodità, queste tabelle sono presentate sotto forma di immagini (la numerazione dei registri, come ogni cosa nell'elettronica digitale, inizia da 0, quindi il quarto numero è 3).

Registri per scopi speciali
Registri per scopi speciali
Registri per scopi speciali
Registri per scopi speciali

Come connettersi e in quale lingua programmare?

Per eseguire questo microcontrollore, è sufficiente applicare più a Vdd e meno a Vss. Se hai bisogno di un risuonatore al quarzo, è collegato ai pin 16 e 15 (OSC1 e OSC2) del microcontrollore PIC16f628, per altri controller con un numero maggiore o minore di pin - guarda nella scheda tecnica. Ma questo punto deve essere indicato durante la programmazione e il firmware.

Parlando di portabilità e coincidenza del pinout - su 16f84A - è simile, e su molti altri.

Collegamento di un risonatore al quarzo

Un frammento di un circuito con un risonatore esterno collegato a pic16f628a:

Frammento di circuito con un risonatore esterno collegato a pic16f628a

Esistono due lingue principali per la programmazione dei microcontrollori PIC: assemblatore e C, ce ne sono altri, ad esempio PICBasic, ecc. Puoi comunque evidenziare il linguaggio di programmazione semplificato JAL (solo un'altra lingua).

Ad esempio, di seguito è riportato un programma per "LED lampeggiante", una sorta di "Hello World" per il microcontrollore PIC in C.

Un esempio di un programma di microcontrollore PIC in C

Nella riga 1 è collegata la libreria di microcontrollori PIC, quindi è collegata la libreria del programma di ritardo.

Nella funzione principale (nulla), i parametri iniziali sono impostati all'inizio, proprio come nella funzione Void setup () - negli articoli su arduino. Quindi, nelle righe 11-16, viene dichiarato un ciclo while (1) infinito, durante il quale viene eseguito il programma “LED lampeggiante”.

Nell'esempio, lo stato della porta è costantemente invertito, ovvero se fosse a "0", andrà a "1" e viceversa. In C per PIC ci sono i seguenti comandi di gestione dei comandi:

PORTA = 0; // traduce tutti i pin della porta A a un livello basso (log. 0)
PORTB = 0xff; // traduce tutti i pin della porta B a un livello elevato (log. 1)
RB5 = 1; // Il quinto pin della porta B è alto

E sembra lo stesso programma, ma già in lingua JAL, ho tradotto in commenti russi dagli sviluppatori di esempi integrati in JALedit (ambiente di sviluppo).

Esempio di programma JAL

C'è la tentazione di scegliere JAL e potrebbe sembrare più facile per te. Certo, puoi implementare qualsiasi progetto su di esso, ma dal punto di vista del beneficio per te come specialista, è un linguaggio inutile. Otterrai risultati significativamente maggiori studiando la sintassi e i principi della programmazione in C (la maggior parte dei linguaggi di tipo C attualmente popolari) o Assembler è un linguaggio di basso livello che ti farà capire come funziona il dispositivo e cosa succede nel programma in un determinato momento.


Come lavorare

Se si dice abbastanza generalizzato per funzionare con qualsiasi microcontrollore, è necessario:

1. Editor di testo.

2. Il compilatore.

3. Il programma per il download del firmware sul microcontrollore.

E ho anche letto vecchi libri di testo, in cui l'autore, lavorando sotto DOS, scriveva codice, lo compilava e lo eseguiva in flash con vari mezzi. Ora, per tutti i sistemi operativi più diffusi, esistono ambienti di sviluppo, entrambi altamente specializzati (per una specifica famiglia di microcontrollori o famiglie di un produttore) e universali (o contengono tutti gli strumenti necessari o sono collegati come plug-in).

Ad esempio, in una serie di articoli su Arduino, abbiamo esaminato l'IDE di Arduino, in esso abbiamo scritto il codice e con il suo aiuto "ha versato" il firmware nella "pietra". Per i microcontrollori PIC ci sono programmi come:

  • MPASM - utilizzato per lo sviluppo in linguaggio Assembler da Microchip;

  • MPLAB è anche l'IDE Microchip per i controller PIC. Consiste in molti blocchi per testare, verificare, lavorare con codice e compilare programmi e scaricarli sul microcontrollore. Esiste anche una versione di MPLAB X IDE: ha una grande funzionalità ed è costruita sulla base della piattaforma NetBeans;

  • MikroC è un ambiente universale (non solo per PIK) per lo sviluppo. Come suggerisce il nome, è "affilato" per la programmazione in C, e ci sono anche programmi come MikroBasic e MikroPascal per le lingue corrispondenti;

  • JALedit - adatto per il linguaggio JAL che abbiamo menzionato sopra;

  • E un numero di altri meno conosciuti.

IDE MPLAB

Come eseguire il flashing di un microcontrollore?

Esistono numerosi programmatori per micronotroller PIC. PICkit ufficialmente considerato. Le loro 4 versioni. Ma puoi usare flash e universal, ad esempio TL866 (supporta quasi tutto ciò di cui un radioamatore alle prime armi potrebbe aver bisogno, mentre è molto economico).

Programmatori per micronotroller PIC

Inoltre sulla rete sono presenti diversi circuiti di programmazione per PIC, entrambi per il funzionamento tramite la porta COM:

Circuito programmatore

Quindi è via USB (in effetti, anche com, solo attraverso il convertitore sull'IC MAX232).

Circuito programmatore

conclusione

I microcontrollori PIC16 sono adatti a progetti semplici, come automazione semplice, voltmetri, termometri e altre piccole cose. Ma questo non significa che non puoi fare progetti complessi e di grandi dimensioni su questa famiglia, ho dato un esempio del perché vengono utilizzati più spesso. Per un'idea generale, ti consiglio di guardare alcuni video:

In un articolo, è inutile considerare argomenti su come programmare i microcontrollori, indipendentemente dalla famiglia. Dal momento che questa è una grande quantità di informazioni.

Vedi anche su bgv.electricianexp.com:

  • Tipi e disposizione dei microcontrollori AVR
  • Programmazione del microcontrollore per principianti
  • Cosa sono i microcontrollori: scopo, dispositivo, software
  • Microcontrollori programmabili in JavaScript: quale scegliere, caratteristiche ...
  • Metodi per la lettura e la gestione delle porte I / O di Arduino

  •