P I C   -   A P P U N T I    D I    U T I L I Z Z O

(avvertenze)

[Indice principale]



PIC 16F628, piedinatura e aree di memoria
Il PIC 16F628 e' stato dichiarato dalla Microchip il successore pin to pin compatibile del 16F84. Questo significa che puo' essere usato sullo stesso hardware progettato per il 16F84 e che con poche modifiche possono essere usati anche gli stessi gli stessi programmi. Il 628 dispone di numerose periferiche interne aggiuntive e i pin possono essere configurati per svolgere funzioni piu' complesse, questa cosa gia' da sola ne giustificherebbe la scelta al posto dell'84, il fatto poi che costi anche molto meno toglie ogni dubbio. Senza addentrarsi subito nei dettagli e' possibile avvicinarsi al 628 considerandone solo gli aspetti piu' semplici e vicini all'84.

Osservando lo schema qua a fianco si puo' vedere che i pin della porta B (RB0..RB7) sono gli stessi dell'84, e cosi' anche per i pin RA0..RA4. Una novita' e' che i pin MCLR e OSC1/OSC2 possono essere configurati anch'essi come ingressi/uscite, portando cosi' da 13 a 16 il numero di pin usabili per controllare i circuiti esterni. Per la precisione il pin 4 puo' essere usato solo come ingresso, naturalmente in questo caso non si puo' piu' resettare il micro dall'esterno. Se si usano come ingressi/uscite anche i pin OSC1/OSC2 il PIC deve funzionare con un oscillatore interno piuttosto che con un preciso quarzo esterno. Per il resto le funzioni base dei pin sono come nell'84: il pin RB0 puo' generare un interrupt, i pin RB4..RB7 possono generare un interrupt di gruppo, il pin RA4 in uscita e' un open collector e in ingresso puo' essere l'ingresso frequenza per il timer0. Se si vuole usare il micro in "modalita' 84" le altre funzioni avanzate dei pin possono essere ignorate.

Per poter usare il micro sono da conoscere quattro cose fondamentali: l'area di memoria usabile per il programma, l'area di memoria dati per le variabili, la word di configurazione hardware (fuses) e l'impostazione di default dei pin all'accensione. Queste cose infatti sono in genere diverse per ogni tipo di PIC.
 

Area di memoria per il programma
Il 628 ha 2Kword di memoria programma anziche' 1, il che significa poter scrivere programmi lunghi il doppio. I programmi iniziano sempre dall'indirizzo 0, e l'indirizzo 4 e' sempre il punto a cui si salta in presenza di un interrupt.
 

Area di memoria dati
La memoria dati e' suddivisa in 4 banchi anziche' 2, e questa volta il banco attivo non influenza solo i registri per il controllo dell'hardware, ma anche l'area dati utente come evidenziato nella figura seguente:

Questa figura rappresenta la parte finale dell'area dati (come nell'84 la prima parte contiene i registri per il controllo delle periferiche interne). Si puo' vedere che nel banco 0 l'area utente inizia all'indirizzo 20H, quindi nei programmi l'ORG che indica l'indirizzo per i dati deve essere impostato a 20H (e non a 0CH). Poi si nota che ogni banco ( tranne il banco 3) ha una parte di area dati propria, accessibile al programma solo se in quel momento e' attivo quel banco. Solo gli ultimi 16 bytes sono in comune, sono cioe' sempre "visibili" qualunque sia il banco attivo. In totale abbiamo 48+80+96=224 bytes di ram per memorizzare le variabili di lavoro. Se si vuole usare su un 628 un programma scritto per l'84 bisogna fare attenzione che sia sempre attivo il banco giusto per l'accesso alle variabili (nell'84 questa attenzione non e' necessaria perche' l'unica area dati e' sempre visibile qualsiasi sia il banco attivo), io personalmente per non fare confusione terrei sempre attivo il banco0, cambiandolo temporaneamente solo quando devo usare dei registri di controllo, e quindi le variabili le metterei a partire da 20H. Per impostare il banco attivo si usano i bit 6 e 5 del registro STATUS, chiamati RP1 e RP0:
 

Valore di
 RP1 RP0
   Banco
   attivo
  0   0      0
  0   1      1
  1   0      2
  1   1      3

Configuration word
La terza cosa da prendere in considerazione e' la configuration word (per il significato preciso dei singoli bit vedere il datasheet):

Per un utilizzo" 84 like" con solo 13 pin di I/O, mclr esterno, quarzo esterno, power up timer abilitato, WDT disabilitato, la word deve valere: 11110100100001B

Se si vuole usare il pin MCLR come ingresso si deve resettare il bit 5.
Se si vogliono usare i pin OSC1/OSC2 come I/O si deve resettare il bit 0 e settare il bit 4.
Se si vuole attivare il WDT si deve settare il bit 2.
 

Settaggio pin all'accensione
La quarta cosa a cui prestare attenzione e' il settaggio di default dei pin all'accensione. Infatti nel 628 dopo un reset i pin della porta A sono collegati ai comparatori di tensione interni. Questo significa che per poterli usare come normali linee di ingresso/uscita digitali bisogna prima di tutto scrivere il valore 7 nel registro CMCON (e' nel banco 0 all'indirizzo 1FH), e successivamente configurare TRISA per definire quali pin settare come ingressi e quali come uscite.

Fatte queste premesse di natura "organizzativa" il 628 e' usabile negli stessi progetti pensati per l'84. Anche l'assembler e' identico, con doppio spazio per il programma ed eventualmente tre pin di I/O aggiuntivi da utilizzare (sempre attraverso i registri TRISA e PORTA).
 
 

(Nota: tutte le immagini tratte dal datasheet del PIC16F628 sono proprieta' di Microchip.)
 

[Indice principale]


Pagina creata nel 2001   -   Ultimo aggiornamento 12-1-2004