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 byte sono in comune, sono cioe' sempre "visibili"
qualunque
sia il banco attivo. In totale abbiamo 48+80+96=224 byte 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.)
|
|