Tutorials - PIC

 

PIC 16F84 è obsoleto !

Sicuramente 16C84, 16F84 e 16F84A sono stati il "must" di Microchip negli anni passati : migliaia di pagine di descrizione ed applicazione e milioni di righe di codice sono disponibili sul WEB.
In particolare 16F84, con la possibilità di essere riprogrammato data dalla memoria Flash, è stato uno dei microcontrollers più amati dagli hobbisti.

E' stato, perchè nella famiglia 16F sono disponibili da tempo dispositivi del tutto similari, pin to pin compatibili, ma con prestazioni molto più interessanti.

Perchè allora quando si parla di PIC, si incontra quasi sempre per prima cosa il 16F84 ? Essenzialmente perchè:

  • è stato uno dei primi embedded con memoria programma in flash, quindi riutilizzabile più volte

  • ha avuto un stragrande diffusione anche grazie al costo limitato ed alla intelligente politica di supporto di Microchip

  • ma sopratutto,  perchè le pagine che trovate in rete sono state scritte anni fa

  • e, non sicuramente seconda,  per una certa inerzia che fa trovare comodo usare un componente collaudato senza andare a verificare che il costruttore è andato ben più avanti.

Microchip ha, e non da oggi, ampie famiglie di prodotti basati su flash e spazia da 8 a 32 bit, con la disponibilità di funzioni DSP.
Inoltre, alla famiglia 16F (mid-range) va a succedere la famiglia 18F(enhanced), con performance, disponibilità di memoria, I/O e periferiche che fornisco una solida base alla programmazione con linguaggi ad alto livello.

Ma per chi non voglia o non abbia la necessità di affrontare il C o le funzioni DSP e trovi sufficiente il 16F84, la scelta aggiornata è uno dei suoi pin to pin compatibili. 
Al momento nella fascia 16F esistono diverse possibilità, ad esempio 16F88, 16F648A e 16F628 o anche 16F819 e 16F676 e 16F1827. 

In particolare vediamo in cosa 16F628, uno dei più gettonati candidati, si differenzia dal vecchio 16F84 :

  • Più memoria di 16F84 :

    • Program memory (2K contro 1K) : più spazio per i programmi

    • Data memory (224 contro 68 bytes) : più spazio per le variabili

    • EEPROM (128 contro 64 bytes) : più spazio nella memoria non volatile
       

  • Più funzioni hardware:

    • controller seriale USART : 16F84 non aveva UART e ha costretto miriadi di utilizzatori a spendere ore e giorni per scrivere routines per la comunicazione seriale usando normali pin di I/O; sicuramente ottimi lavori ed uno sforzo notevole e apprezzabile, ma che, avendo un USART a disposizione, non ha più alcun senso.

    • 3 timer (contro 1) : molte più possibilità in tutte le applicazioni che interessano il tempo

    • hardware PWM : non occorre scrivere routines per usare un pin di I/O generici e l' unico timer disponibile, come succedeva in 16F84 !

    • hardware compare/capture registers che permettono la gestione di segnali in cui il tempo (frequenza, periodo, ecc) sono fondamentali

    • doppio comparatore on board con programmable voltage reference : non occorrono comparatori esterni
       

  • Più prestazioni :

    • clock programmabile multimodo, tra cui 4Mhz onboard : lavora sufficientemente preciso senza quarzo

    • brownout detector

    • possibiliotà di programmazione a bassa tensione (low voltage programming) : si programma senza toglierlo dal circuito

    • pin to pin con 16F84 : l' hardware disponibile va bene senza modifiche

    • Inoltre ha la possibilità di utilizzare come I/O 3 pins addizionali (MCLR e i due dell' oscillatore) arrivando a 16 I/O in un chip da 18 pin .
       

  • Compatibilità hardware e software

    • Stesso pinout di 16F84 : stessi pin, stesse funzioni di base.

    • Un programma scrittto per 16F84 gira su 16F628 con pochissime o nessuna modifica.

    • 16F628 può essere programmato con lo stesso hardware di 16F84 (anche se richiede un aggiornamento del software del programmatore), ma permette anche la programmazione on board con i pin di low voltage programming mode.
       

  • Costo

    • 16F628, essendo in corrente produzione, costa meno di 16F84.

La tabella seguente raccoglie le differenze più importanti tra i due chip.

PIC 16F84 16F628
RAM 68 224
Program memory 1024 2048
EEPROM 64 128
Package DIL 18 pin 18 pin
I/O Pin 13 14 (16)
Comparatori analogici - 2
Timer a 8 bit 1 2
Timer a 16 bit - 1
PWM - 1
CCP - 1
USART - 1
Low Voltage programming - si
Oscillator mode 4 6
Clock massimo 20MHz (16F84A) 20MHz
Costo * 5.75 € 2.95 €

* valore indicativo per 1 pezzo alla data di stesura della pagina

Informazioni più dettagliate sono rilevabili dai data sheets, scaricabili gratuitamente dal sito del produttore.

 
PIC16F84
PIC16F628
XT oscillator mode
si
si
HS oscillator mode
si
si
LP oscillator mode
si
si
EC External Clock
si
si
RC oscillator mode (RC)
si
no
ER oscillator mode (R)
no
si
INTRC oscillator mode
no
si
Dual Speed Oscillator
no
si
4MHz - 20MHz
si (PIC16F84A)
si
LVP
no
si

In sostanza, F628 può operare in modo:

  • ER: questo oscillatore è simile a RC, ma richiede solamente una resistenza esterna

  • INTRC: un oscillatore interno a 4 MHz funziona senza alcun componente esterno e lascia liberi i due pin dell' oscillatore per uso generale come IO (GPIO). 

  • Dual Speed Oscillator: che permette di passare da 4 MHZ a 37 kHz da programma

INTRC , in particolare, è una caratteristica molto interessante che consente di avere non solo meno componenti, ma anche due pin di IO in più. Il che, su un package di 18 pin, non è fatto secondario.
Inoltre è molto comoda in fase di sperimentazione o valutazione, nella didattica e nell' auto istruzione, ma anche nella produzione, perchè consente al chip di funzionare senza nessun componente esterno.

Inoltre, con riferimento alle periferiche integrate:

 
PIC16F84
PIC16F628
Watch Dog
si
si
Timer 0  8-bits
si
si
Timer 1 16-bits
no
si
Timer 2   8-bits
no
si
Comparators

no

si

PWM, Capture, Compare
no
si
USART
no
si
Voltage Reference
no
si

In sostanza, F628, oltre ad avere tre timer invece di uno, dispone di:

  • Modulo USART: si può comunicare in RS-232 senza la necessità di costruirsi lunghe emulazioni software

  • Modulo CCP: generazione di PWM, Capture e Compare per impulsi, frequenze, periodi

  • Modulo Comparatori Analogici: si risparmiano componenti esterni

  • Modulo Voltage Reference: per le funzioni dei comparatori analogici

Ovviamente i chip sono pin-to-pin compatibili, secondo la saggia politica di Microchip di avere per 1quanto possibile sempre una compatibilità hardware tra chip con lo stesso package.

La differenza tra le funzioni indicate sui pin evidenzia solo la differenza delle periferiche disponibili.
Ovvero, ogni pin svolge la stessa funzione di base di GPIO, a cui si possono aggiungere altre funzioni attraverso la programmazione.
Ad esempio, in PIC16F84 il pin 1 svolge la funzione di RA2,, mentre in 16F628 ha la stessa funzione RA2, ma può anche essere programmato come AN2 (per i comparatori) o Vref. 
Pin 10 è non solo RB4, ma anche l' ingresso di selezione dell' LVP.
E così via. Tutti i dettagli sulle funzioni addizionali di F628 si possono consultare sul relativo fogli dati.

Quindi, dato che 16F628 costa meno, è più performante, ha più funzioni, può utilizzare il software e l' hardware scritto per 16F84, perchè continuare ad usare 16F84 ?

Ed è anche e sempre opportuno mantenersi aggiornati, perchè sono da tempo in produzione molti altri modelli interessanti, come 16F648, 16F876 e, sopratutto, la più recente famiglia 18F, con ulteriori vantaggi su consumo, flessibilità, memoria, ecc.

Per cui, anche se ci siamo affezionati, mettiamo il 16F84 in soffitta.

Questo per quanto riguarda nuovi progetti o riedizione di vecchi programmi.

Ma a molti, quello che interessa di più è il fatto che per passare il software scritto per 16F84 a 16F628 basta poco.
Si recuperano così a nuova vita applicazioni scritte per il vecchio F84, se non per l' antico C84, senza modifiche sostanziali.

 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 21/10/10.