Questo sito utilizza cookie, anche di terze parti, per migliorare la tua esperienza e offrire servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina o cliccando qualunque suo elemento acconsenti all’uso dei cookie. Se vuoi saperne di più o negare il consenso a tutti o ad alcuni cookie vai alla sezioneCookie Policy

Pic microcontrollers - Rudimenti di programmazione

Ultimo aggiornamento: 31/07/2015

microchipLasciando da parte sterili tecnicismi, un microcontrollore puo' essere considerato la naturale evoluzione di un microprocessore. Al contrario di quest'ultimo, che necessita di una vasta circuiteria esterna per poter svolgere le proprie attivita', il microcontrollore è un integrato creato per poter operare anche da solo o con limitata circuiteria esterna.  Racchiude in se', infatti, tutto il necessario per poter svolgere il lavoro per cui sono è stato realizzato. 

Sul mercato vi sono decine di produttori e centinaia, forse migliaia, microcontrollori diversi che vanno incontro a tutte le necessita'. Al giorno d'oggi, infatti, si trovano microcontrollori virtualmente in ogni apparato elettronico od in macchinari controllati elettronicamente.  La ragione per la quale ha avuto un incredibile sviluppo negli anni  è che si tratta di componenti  creati per risolvere problemi di natura 'logica' di controllo.

Talvolta la scelta del giusto microcontrollore non è cosa facile; ve ne sono sul mercato moltissimi (forse anche troppi) che si differenziano per funzioni svolte, moduli integrati, numero di pins, frequenze di lavoro, packages ecc.ecc.

Alcune case produttrici, per questo motivo, forniscono sui rispettivi siti  selettori di microcontrollore che consentono di individuare rapidamente quello che risponde alle necessita' del momento (si vedano in proposito i siti della Microchip o della STM). La situazione dovrebbe essere ovvia: se si deve usare un microcontrollore per una attivita' minima, accendere e spegnere un paio di led ad esempio, anche il piu' semplice micro con 6-8 pin potrà  essere utilizzato mentre se quegli stessi led dovranno accendersi in presenza di un particolare valore analogico in ingresso ecco che vi sara' la necessita' di scegliere un microcontrollore dotato di almeno un modulo convertitore analogico-digitale; utilizzare un LCD richiedera' un microcontrollore con un numero di porte I/O sufficienti al pilotaggio del display.

C'e' un punto importante da considerare riguardo proprio la scelta del produttore. Vi sono molti di questi che creano micro molto interessanti da programmare ma in qualche caso  l'ambiente di sviluppo ha un suo costo che non si giustifica per una attivita'  ludico-hobbistica.

Microcontrollori si possono programmare con i piu' comuni linguaggi di programmazione, opportunamente modificati per poter operare con microcontrollori: assembler, pascal, basic, c,  ed altri subsets anche freeware ma un buon sistema di sviluppo ha un suo prezzo, talvolta anche alto. Quelli della Microchip, ad esempio, sono molto utilizzati anche per questo motivo. Sono facilmente reperibili ed i loro ambienti di sviluppo e programmazione, talvolta anche freeware (assembler, jal, c), hanno un prezzo ragionevole (mikroc, mikrobasic, picbasic etc.). Spesso sara' possibile effettuare downloads di versioni 'demo' limitate solo dalla lunghezza del programma realizzabile.

     

 

 pic 12f675   A titolo di esempio a fianco vi è l'immagine funzionale di un comune microcontrollore: il 12F675. Si tratta di un dispositivo ad 8 pin che è caratterizzato dalla presenza di:
  • 4 convertitori analogico/digitale con risoluzione a 10bit;
  • 6 piedini di I/O generici;
  • 1 comparatore analogico;
  • oscillatore interno;
  • interrupt al variare dello stato di un pin;
  • watchdog timer;
  • 1K words di memoria flash;
  • resistori di pull up programmabili;
  • 64bytes di Sram e 128bytes  di EEprom;
    ... tutto questo in un dispositivo di soli 8 piedini che puo' essere programmato e riprogrammato migliaia di volte. Interessante no?

 

I moduli/funzioni svolte da ogni pin possono essere rapidamente sintetizzate nella tabella che segue:

VDD-VSS Si tratta dei pin di alimentazione. Solitamente la tensione di alimentazione di un picmicro varia tra i 2 ed i 5.5 Volt ma è importante leggere il datasheet di ogni picmicro per averne conferma.

CLKIN/CLKOUT

OSC1/OSC2

Pins utilizzati per connettere un quarzo o un oscillatore o un circuito rc (resistenza+condensatore) per fornire la frequenza di lavoro del microcontrollore. E' possibile operare anche attraverso un oscillatore interno che deve essere abilitato in fase di programmazione (INTOSC). Il datasheet confermera' la gamma di frequenze di lavoro , generalmente 4-20mhz o piu' (4 in questo caso)

GP0....GP5 Nel caso di piccoli integrati i piedini generici vengono indicati con i nomi  GP0 ... GP5. Sono piedini che possono essere impiegati come input o come output in base al registro di direzione:  se il bit di TRISIO è settato ad '1' la porta svolgerà la funzione di input, se '0' la porta verra' settata come output. Il registro a 6 bit puo' settare ogni pin come input o output con l'eccezione di GP3 che puo' essere un piedino di solo input.
 INT Ogni piedino GPI/O puo' essere anche configurato come 'interrupt pin' sulla base del settaggio dell'apposito registro. Ogni qualvolta ilo stato del piedino cambiera' di valore verra' eseguita una funzione od una 'sveglia' da uno stato di riposo.
CIN+/CIN- Questi piedini fanno riferimento al modulo comparatore interno al microcontrollore e sono multiplexati con i pin GP0 e GP1.
ICSPDAT/ICSPCLK Sono piedini utilizzati per la programmazione 'in-circuit' del picmicro (insieme al piedino MCLR ed a quelli di alimentazione)
T0CK1/T1CK1 Si tratta di moduli con funzioni di timer o  di clock. Solitamente vengono utilizzati per generare un interrupt allorquando il contatore interno raggiunge il valore '0'. Il timer 0 è basato su 8 bit mentre il timer1 su 16
VREF It is used for an internally generated voltage reference value for the comparators input
MCLR-VPP Allo stato '0' resetta il picmicro e riavvia il programma memorizzato. E' usato anche in fase di programmazione del chip come ingresso  (VPP)


Naturalmente i moduli collegati ai pins non possono svolgere tutte le funzioni allo stesso tempo, ogni funzione/modulo andranno settati attraverso lo specifico registro di controllo. Modificando il valore di tali registri verranno abilitati o disabilitati  i moduli e quindi sara' possibile decidere cosa far svolgere ad un ben determinato pin.

Abbiamo visto uno dei piu' semplici miccrocontrollori sul mercato ma il mercato offre una ampia gamma di microcontroller molto piu' sofisticati, con molti piedini, dotati di numerosi moduli, molti pin di output/input, comparatori, convertitori analogico/digitali, uart ecc.ecc.

16F628  

Ecco un esempio di un picmicro molto popolare, il 16F628.  In questo caso le porte di I/O vengono denominate RA ed RB.

Senza considerare il vantaggio di un maggior numero di pins vi sono alcune differenze rispetto al precedente in quanto pur essendo presenti convertitori a/d, int, comparatori ecc. abbiamo anche un pao di pins relativi ad una UART interna per la comunicazione seriale con il mondo esterno o con altri microcontrollori.

 

CCP

Capture, Compare, PWM è un modulo strettamente legato ai timers interni al microcontrollore

  • capture: cattura il valore del timer1 in caso di un particolare evento du un determinato pin
  • compare: paragona il valore del timer1 con un valore caricato in un apposito registro
  • PWM: genera un segnale modulato in ampiezza a livello hardware. Tale segnale puo' essere impostato sia per frequenza (entro determinati limiti) che per duty cicle.

PGC-PGD Piedini utilizzati per la programmazione 'in-circuit', senza rimuovere l'integrato dallo stampato per intenderci; situazione molto comoda per evitare stacchi e riattacchi dell'integrato stesso a salvaguardia dei piedini

 
Oggigiorno i microcontrollori hanno raggiunto un elevato grado di sviluppo al punto da dividerli in vere e proprie famiglie create per coprire tutte le necessità.

Solo considerando i picmicro della Microchip possiamo trovare, a solo titolo di esempio, centinaia di diversi microcontrollori:

  • da 3 a 100 pin;
  • architetture da 8, 16, 32 bit;
  • frequenze da 4 a 80 mhz;
  • da 0.25 a 512K di memoria programma e 0.256 sino a 32K di memoria volatile;
  • la presenza di devices di comunicazione I2C, UART, SPI, CAN, USB ed altre.

 

La loro programmazione? è nostra veramente umile opinione che l'assembler possa riservarsi solo ai devices piu' semplici ed ai programmi piu' limitati, troppo grande la curva di apprendimento del linguaggio. Sul mercato e nel mondo freeware esiste, infatti, tutta una serie di linguaggi che rende la programmazione dei picmicro agevolata e divertente semplificando tutti quegli asspetti relativi ai settaggi dei registri ed alla programmazione che sarebbe molto difficile ottenere con linguaggi a basso livello (matematica a virgola mobile, ad esempio).

In ogni caso, qualunque linguaggio si usi, una lettura del datasheet del microcontrollore utilizzato deve essere considerata un vero e proprio 'must'.

Diritti riservati Cuteminds.com 2008-2015. Tutti i marchi riportati sono detenuti dai legittimi proprietari. Tutto il materiale e` liberamente utilizzabile ma non per scopi commerciali. Non si assume alcuna responsabilita` sul materiale pubblicato per eventuali danni diretti o indiretti che possano derivare dall`utilizzo di schemi, progetti o altro materiale presente nel sito. Inviare una mail a: remove-admin@cuteminds.com (contenuti) remove-webmaster@cuteminds.com (webserver) per domande e/o suggerimenti.