Come passare da mid range a enhanced
Per chi non intende fermarsi su prodotti datati, ma vuole
seguire lo svilupparsi della tecnologia e sfruttare nuove prestazioni, si presenta il problema di come
sostituire i processori mid-range PIC16 con
i PIC18 in
una applicazione già esistente.
Questo passaggio non è drammatico, in quanto sia mid-range che enhanced
appartengono alla stessa filosofia di progetto e Microchip ha cercato
per quanto possibile di rendere simili i due prodotti.
Un primo bonus è dato dal fatto che i chip nei contenitori hanno praticamente
la stessa disposizione tra pin e funzioni
: tra un 16F877A e 18F4550 c'è la piena compatibilità pin to pin, ovvero i
PORT,
le alimentazioni, i pin dell' oscillatore, il reset, si trovano nelle stesse
posizioni. Quindi i chip sono intercambiabili sulla stessa base hardware a
livello delle funzioni primarie.
In secondo luogo, le differenze software tra 16F e 18F sono sensibili, ma non tanto da impedire la
traslazione di un progetto dall' una all' altra in modo abbastanza indolore.
Microchip dedica 2 application notes (AN) alla migrazione da mid (16F) e high
(17) range verso gli enhanced (18F) e sono rispettivamente l' AN716 e l'
AN726,
scaricabili gratuitamente.
Vediamo qui una guida rapida che dia le linee generali per facilitare il
passaggio, tenendo ben presente che sarà comunque necessario prendere visone
del foglio dati del nuovo componente e
Una guida rapida
In generale, la conversione più semplice consiste nei seguenti passi :
-
eliminare ogni riferimento a RP0 e RP1 (che non
esistono nei PIC18F) e BANKSEL/BANKISEL (che la funzione
Access RAM/Access Bank rende inutili)
-
adeguare nomi, bit e locazioni dei registri speciali (che
possono essere uguali, ma anche solo simili a quelli dei PIC16)
-
eliminare gli indirizzamenti con il simbolo $ e
sostituirli con label
-
verificare che i nomi di eventuali macro non siano in
conflitto con i nomi delle nuove istruzioni del set 18F, nè che eseguano
operazioni improprie per il nuovo ambiente.
-
eliminare gli pseudo opcodes accettati da MPASM per i
mid-range
-
se è abilitato il Brown-out Reset, selezionare il livello
desiderato nel CONFIG iniziale
In questo modo è possibili convertire la maggior parte dei
programmi con un minimo di interventi sul sorgente.
E', comunque, da tenere presente che la famiglia 18F è in continuo sviluppo e
che i componenti più recenti possono avere differenze sensibili. Una lettura
del foglio dati relativamente alle caratteristiche principali è essenziale.
In ogni caso, si possono usare utilmente e con facilità le prestazioni addizionali
della famiglia 18F :
-
modi oscillatore speciali senza quarzo esterno
-
system clock switch per ridurre il consumo
-
più memoria programma e dati disponibile
-
pin addizionali di interrupt
-
priorità degli interrupt
-
salvataggio automatico del contesto in interrupt
-
accesso allo stack e funzioni speciali di stack
-
istruzione RESET
-
Timer 0 a 8/16 bit
-
più timer disponibili
-
set istruzioni esteso
Inoltre è essenziale verificare le differenze nelle funzioni
comuni, come CCP, moduli seriali, moduli AD, ecc.
In generale, le funzioni speciali di PIC18F conservano per default una
possibilità di "legacy" con le analoghe dei mid-range, per cui,
trascurando di usare le prestazioni enhanced, possono essere praticamente
impiegate identicamente.
Ad esempio, il Timer0 può essere usato a 16 bit, ma, non programmando
esplicitamente
questa possibilità, opera come l' equivalente a 8 bit. Così pure il
modulo convertitore AD dispone di un automatismo per il tempo di acquisizione,
ma, se non viene usato, il sorgente mid-range è facilmente adattabile.
Solitamente questi moduli la configurazione di default è
proprio quella "legacy" per cui , non volendone
utilizzare le funzioni estese, le modifiche al sorgente saranno limitate.
Vediamo qualche dettaglio dei punti salienti da tenere sotto controllo nel
passare una applicazione funzionante su PIC16 ad un PIC18F, senza la pretesa di
poter fornire una guida adeguata per ogni possibile circostanza.
|