Esercitazioni
PIC Baseline
|
Un breve tour di MPLAB
queste pagine sono statescritte principalmente come supporto per il corso
Assembly & C, ma pososn o essere consultate in gni caso.
Possiamo impegnare qualche momento per verificare altre funzioni che ci
derivano dall' avere il PICkit collegato al chip attraverso
Un breve tour di MPLAB
Informazioni sul chip in uso
Dal tasto Configure , attraverso il
solito menù verticale, possiamo premere il tasto Select Device.
Viene presentata una finestra che specifica il dispositivo selezionato, ma
permette di selezionarne provvisoriamente qualsiasi altro, assieme a un
selettore che consente una scelta per famiglie.
Le caselle Device
e Device Family permettono di selezionare manualmente il
microcontroller in base alla sigla e/o alla famiglia.
La finestra, per ogni dispositivo, informa di:
-
quali sono i tools di
programmazione
-
quali tools software sono
applicabili
-
quali debugger sono utilizzabili
e la eventuale necessità di un header per l’ emulazione
Un semaforo verde indica che la scelta è
possibile, uno rosso che non è possibile. Il colore giallo indica che è
possibile con limitazioni.
In questo caso, ad esempio, PIC12F519:
-
non
si può programmare con Pickit1 e Pickit2
-
non si può debuggare con
Pickit2
-
non è supportato dagli ICE 2000
e 4000
Il chip non integra un motore ICD e quindi per il debug occorre l’
header AC162096.
Sempre dallo stesso menù Configure,
la scelta Configuration Bits consente di accedere alla maschera di
configurazione del chip.
La finestra Configuration
Bits permette di verificare
come il compilatore inserirà i bit di configurazione nella Configuration
Word.
Le colonne Address e Value
indicano rispettivamente l’ indirizzo in memoria della Configuration
Word ed il suo valore esadecimale conseguente a quella determinata
configurazione.
Una casella Configuration Bits set in code , se selezionata,
permette di attivare un meccanismo che trasferisce la configurazione dichiarata
nel sorgente con la linea che utilizza la direttiva __config.
Questa scelta è quella assolutamente da utilizzare. In questo modo, i dati di
configurazione sono contenuti nel sorgente e vanno a far parte della
documentazione che esso costituisce. Non occorre altra informazione per definire
questo aspetto fondamentale.
Se non selezioniamo la casella, la scelta dei parametri di configurazione deve
essere eseguita manualmente, agendo su ogni scelta nel campo Field.
In questo caso, però, la configurazione farà parte solamente dell’ ambiente
di lavoro del progetto e la sua consistenza potrà essere trasmessa solamente
trasmettendo l’ intero progetto.
Avvertenza:
Il default della Configuration Word è quello di una cella Flash non
programmata, ovvero con tutti i bit a 1).
Ne risulta che se non si inserisce nel sorgente una direttiva di
configurazione, quella di default difficilmente sarà adatta al progetto
in corso.
Ad esempio, WDT è per default abilitato e se il programma non ne
prevede la gestione, esso non potrà funzionare regolarmente data la
presenza dei continui reset generati dal WDT non controllato. |
Sempre dallo stesso menù Configure,
la scelta ID Memory consente di accedere alla locazione di ID del
chip
|
E’ possibile
modificare questo valore per inserire nel chip elementi di controllo,
riferimento o altro.
Nella riga di comandi superiore si nota il tasto Checksum
che non ha opzioni, ma indica solo il valore che assume il checksum,
calcolato automaticamente da MPLAB in relazione a quanto inserito nella
memoria del chip.
|
Attraverso la
finestra Programmer->Settings
possiamo verificare anche un’ altra situazione di memoria, ovvero la locazione
di librazione dell’ oscillatore interno (per i PIC che ne sono provvisti).
Nel nostro caso, il PIC12F519, essendo un Baseline, dispone di questa
caratteristica. Quindi, selezionando il folder Calibration Memory,
possiamo leggere il valore relativo al chip in quel momento connesso al
programmatore.
Una casella Allow
PICkit3 to program calibration memory, se selezionata, consente di
attribuire uno specifico valore di calibrazione diverso da quello impostato in
fabbrica. Questo valore appare sotto forma di una istruzione >_valore
Se la casella non è attiva (default), la calibration memory viene
esclusa al momento della programmazione del chip, salvaguardando così il valore
inserito dal costruttore.
Attenzione:
I tools di programmazione di Microchip salvano per default la calibration
memory .
Una scelta diversa va fatta esclusivamente dove sia ben chiaro che la
perdita del valore di calibrazione di fabbrica non è recuperabile, se
non implementando un qualche sistema complesso di ri calibrazione del
chip.
|
Finestre
Tra le varie possibilità di personalizzazione
dell’ ambiente IDE, possiamo osservare che nella finestra principale sono
programmabili anche le sotto finestre visualizzate. Dalla riga dei comandi
principali selezioniamo View
|
Il menù verticale
offre una serie di finestre che possono essere visualizzate e che
dipendono da tool e chip impostati. E’ normale, quindi, che non tutte
le scelte siano attivabili.
Le prime due opzioni sono relative alle finestre Project e
Output che sono aperte di default.
Le altre riguardano essenzialmente il debug del programma compilato,
permettendo di visualizzare dinamicamente:
-
La lista disassemblata
-
La RAM, la flash dati e lo stack
-
Le eventuali variabili locali
-
La memoria programma
-
Gli SFR
-
Una finestra di Watch dal
contenuto programmabile
Una User
Memory Gauge presenta graficamente l’ impegno della Program
Memory e della Data Memory.
Le finestre sono
ridimensionabili e possono essere spostate , aperte, chiuse, minimizzate
secondo le regole generali di Windows.
In generale, queste finestre sono dedicate al supporto dell'
attività di debug. |
Potrebbe essere
interessante vedere la finestra Program Memory. Questa finestra consente di visualizzare il contenuto, cella per cella,
della memoria programma.
la espandiamo con un click sulla linea del menù. Appare una finestra in cui
viene visualizzato il contenuto della memoria programma.
Un sotto menù inferiore
consente di visualizzare gli opcode in esadecimale, codice macchina o con i
simboli derivati dalla compilazione.
Un cursore (freccia verde) è attivato in debug e scorre sulle linee indicandone
lo svolgimento.
L' immagine a sinistra riguarda la memoria prima della compilazione: la memoria
è vuota e tutti i bit sono a 1 (FFFh), il che corrisponde ad una istruzione xorlw 0xFF.
L' immagine a sinistra riguarda la memoria dopo la compilazione: la
memoria contiene i codici che sono stati compilati.
La linea di base
La linea di base della finestra principale: essa
contiene alcune informazioni relative al processo di sviluppo del programma
Qui notiamo come siano
indicati:
In questa linea appaiono anche altre segnalazioni, come la barra in movimento che indica un processo in
corso di esecuzione.
|