Tutorials - PIC - Corso A&C

 

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:

  • Il tool attivo

  • il tools di sviluppo (PICkit3)
  • Il tool attivo

  • il processore (PIC12F519)
  • Il tipo di processore

  • il valore di W, Z, DC e C, informazioni utili in fase di debug
  • Il valore del registro W, di tre flag dello STATUS e della posizione in memoria RAM.

  • la posizione nel banco di RAM, anche questa utile in fase di debug

In questa linea appaiono anche altre segnalazioni, come la barra in movimento che indica un processo in corso di esecuzione.


 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 27/02/14.