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.)
|
|