namoroso@mrscuole · Proteus VSM (Virtual System Modelling – Labcenter Electronics UK) è uno dei...

19
NA – L5 1 Corso introduttivo sui microcontrollori A. S. 2007 – 2008 La programmazione dei PIC Esempio: 2 led blinking [alternate ON-OFF ] con ritardo di 500 ms Nicola Amoroso [email protected] http://www.mrscuole.net/anxapic/ http://www.mrscuole.net/anxapic/ http://www.mrscuole.net/anxapic/

Transcript of namoroso@mrscuole · Proteus VSM (Virtual System Modelling – Labcenter Electronics UK) è uno dei...

Page 1: namoroso@mrscuole · Proteus VSM (Virtual System Modelling – Labcenter Electronics UK) è uno dei sistemi più avanzati per la simulazione di circuiti digitali-analogici comprendenti

NA – L5 1

Corso introduttivo sui microcontrollori

A. S. 2007 – 2008

La programmazione dei PICEsempio: 2 led blinking [alternate ON-OFF ] con ritardo di 500 ms

Nicola [email protected]

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 2: namoroso@mrscuole · Proteus VSM (Virtual System Modelling – Labcenter Electronics UK) è uno dei sistemi più avanzati per la simulazione di circuiti digitali-analogici comprendenti

NA – L5 2

La programmazione dei PICSemplici esempi in assembler

Vediamo ora dei semplici esempi di programmazione dei PIC in assembler,riordineremo i concetti sviluppati in precedenza e cercheremo di approfondire lasimulazione mediante MPSIM e Proteus.

Ricordiamo i punti fondamentali da espletare per la stesura di un programma in assembler e laprogrammazione di un microcontrollore Microchip PIC

Un programma in assembler è scritto come codice sorgente (un semplice file di testo) su un normale PC,qualsiasi text-editor (es. notepad, blocco note di MS Windows, etc…) può essere usato.Il PIC development system software MPLAB (dowload gratuito su http://www.microchip.com) contieneun editor di testo per la scrittura di codice, il compilatore e il simulatore software.Le istruzioni sono semplici e facilmente consultabili sul Data-Sheet del microcontrollore PIC16F877(Table 13-2); il codice scritto viene salvato con estensione “*.ASM “ (Es. Led_Blinking.asm).Il codice sorgente, in assembler, viene quindi “compilato” (convertito in linguaggio macchina) medianteil compilatore MPASM (Gratuito e compreso in MPLAB) che converte in binario il codice sorgente(visibile con un editor esadecimale – Hex editor, come sequenza di numeri esadecimali). L’estensione diquesto file è “*.HEX” (Es. Led_Blanking.hex).Mediante un opportuno programmatore (opportunamente interfacciato al PC), questo “codice binario”viene memorizzato nella FLASH PROGRAM MEMORY del controllore.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 3: namoroso@mrscuole · Proteus VSM (Virtual System Modelling – Labcenter Electronics UK) è uno dei sistemi più avanzati per la simulazione di circuiti digitali-analogici comprendenti

NA – L5 3

La programmazione dei PICEsempio: 2 led blinking [alternate ON-OFF ] con ritardo di 500 ms

• Analisi e stesura per punti del problema [=> Schema a blocchi => Schema elettrico]

Il problema è facilmente affrontabile e precisamente:

Si vogliono far lampeggiare alternativamente 2 led ognuno acceso per 500ms e spento per 500 ms.

Dopo le discussioni precedenti il problema è facilmente risolvibile e sicuramente la analisi eimpostazione è quasi immediata; tralasciamo uno schema a blocchi, vista la semplicità delproblema e viene presentato lo schema elettrico opportuno.

N.B. => Lo schema è minimo ed è quello utilizzato per la simulazione con Proteus, anzi per lasimulazione il gruppo oscillatore – Reset non sono indispensabili in quanto con proteus lasezione clock viene impostata via software.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 4: namoroso@mrscuole · Proteus VSM (Virtual System Modelling – Labcenter Electronics UK) è uno dei sistemi più avanzati per la simulazione di circuiti digitali-analogici comprendenti

NA – L5 4

La programmazione dei PICEsempio: 2 led blinking [alternate ON-OFF ] con ritardo di 500 ms

Schema elettrico

I Led sono collegati su RD2 e RD3con resistenze opportune per limitarela corrente erogata dalmicrocontrollore

Sul circuito di simulazionel’oscillatore e il reset non vengonoriportati per non “appesantire”troppo il disegno

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 5: namoroso@mrscuole · Proteus VSM (Virtual System Modelling – Labcenter Electronics UK) è uno dei sistemi più avanzati per la simulazione di circuiti digitali-analogici comprendenti

NA – L5 5

La programmazione dei PICEsempio: 2 led blinking [alternate ON-OFF ] con ritardo di 500 ms

• Il software => Il Flow - Chart

256 volte

256 volte

7 volte

Delay tempiClock microControllore 10 MHZClock ciclo Software 10/4 = 2.5 MHzTime singola istruzione 400 ns

Calcolo ciclo di ritardo:DelayL si azzera ogni 256 decrementiDelayM si azzera ogni 256 decrementiDelayH si azzera ogni 7 decrementi

Totale ciclo decrementi => 256x256x7Pari a 458.752

Ogni ciclo dura 3 istruzioni software [1decremento e 1 jumping] in totaleavremo 1.376.256 cicli software perazzerare i tre registri.

Con la frequenza di clock del Microogni istruzione viene eseguita in 400 nsquindi in totale per assolvere il ciclo didelay occorre un intervallo di tempo dicirca 550 ms [1.376.256 x 400 ns]

A questo intervallo di tempo bisognaaggiungere alcuni cicli software dovutealle chiamate della soubritine, al ritornodalla soubroutine, etc … .

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 6: namoroso@mrscuole · Proteus VSM (Virtual System Modelling – Labcenter Electronics UK) è uno dei sistemi più avanzati per la simulazione di circuiti digitali-analogici comprendenti

NA – L5 6

La programmazione dei PICEsempio: 2 led blinking [alternate ON-OFF ] con ritardo di 500 ms

• Il codice assembler => Il sistema di sviluppo MPLAB IDE

Scriviamo ora il nostro codice in assembler. Utilizzeremo MPLAB IDE (Sistema di sviluppo gratuito della Microchip)

Iniziamo un nuovo progetto rispettando i passi vistinelle precedenti lezioni [cfr. NA – L4] e associamogliun nuovo file assembler [Anxa3_2Led.asm]

Una nuova finestra di editor [File > New] e salveremo [File > Save As] ilnuovo file con il nome “Anxa3_2Led.asm”. Scriviamo ora il nostro codicesorgente tenendo presente il flow-chart impostato. Alla fine controlliano setutto è a posto e il codice è scritto senza errori.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 7: namoroso@mrscuole · Proteus VSM (Virtual System Modelling – Labcenter Electronics UK) è uno dei sistemi più avanzati per la simulazione di circuiti digitali-analogici comprendenti

NA – L5 7

La programmazione dei PICEsempio: 2 led blinking [alternate ON-OFF ] con ritardo di 500 ms

• Il codice assembler => Il file Anxa3_2Led.asm

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 8: namoroso@mrscuole · Proteus VSM (Virtual System Modelling – Labcenter Electronics UK) è uno dei sistemi più avanzati per la simulazione di circuiti digitali-analogici comprendenti

NA – L5 8

La programmazione dei PICEsempio: 2 led blinking [alternate ON-OFF ] con ritardo di 500 ms

• Il codice assembler => Il file Anxa3_2Led.asm => Analisi del codice

Linee di commento, il compilatore non consideraqueste linee che invece risulteranno utilissime percomprendere questo codice e le impostazionipresenti

Direttive del preprocessorePROCESSOR Micro utilizzatoRADIX [DEC I numeri sono in base 10]

[HEX I numeri sono in base 16][etc …. Etc …. Etc … etc …. ]

Direttive del preprocessoreConfig del controllore utilizzatoIl valore esadecimale dipende dai vari fuses attivatiIn MPLAB => [Configure > Configuration Bits …]

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 9: namoroso@mrscuole · Proteus VSM (Virtual System Modelling – Labcenter Electronics UK) è uno dei sistemi più avanzati per la simulazione di circuiti digitali-analogici comprendenti

NA – L5 9

La programmazione dei PICEsempio: 2 led blinking [alternate ON-OFF ] con ritardo di 500 ms

• Il codice assembler => Il file Anxa3_2Led.asm => Analisi del codice

Inizializzazione dei registri e delle variabili che utilizzeremo

A fianco viene riportata la memory map delle locazioni RAM [512byte di cui 368 utlizzabili] del 16F877, notiamo che PORTD eTRISD, registri speciali, sono definiti all’indirizzo 0x08 e 0x88rispettivamente.

LED1 e LED2 sono rispettivamente uguali a 2 e 3, corrispondenti aRD2 e RD3 di PORTD.

Le tre variabili a 8 bit DelayL, DelayM e DelayH vengono definite incorrispondenza delle locazioni [registri] “General register” dellamemory-map del PIC16F877. Le prime locazioni utilizzabili sonoall’indirizzo 0x20, 0x21, 0x22; le locazioni da 0x00 a 0x19 sonolocazioni riservate “registri speciali” per la gestione delmicrocontrollore.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 10: namoroso@mrscuole · Proteus VSM (Virtual System Modelling – Labcenter Electronics UK) è uno dei sistemi più avanzati per la simulazione di circuiti digitali-analogici comprendenti

NA – L5 10

La programmazione dei PICEsempio: 2 led blinking [alternate ON-OFF ] con ritardo di 500 ms

• Il codice assembler => Il file Anxa3_2Led.asm => Analisi del codice

Inizializzazione delle PORT utilizzate

Mediante TRISD viene impostato la direzionalità del singolo pindi PORTD, 0 corrisponde a una condizione di scrittura (out) peril pin corrispondente mentre 1 corrisponde a una condizione dilettura (in) per il singolo pin. Notiamo che nel nostro esempiotutti i pin di PORTD sono impostati in scrittura (out) esuccessivamente il valore del registro (byte) PORTD vieneinizializzato a zero.Nella riga 45 “saltiamo” alla label “start”, inizio del main loop.

Selezione dei Banki di memoria

La nuova direttiva microchip “banksel” permette la selezione deibanchi di memoria senza intervenire dui pin RP0 e RP1 delregistro di stato (STATUS – 0x03 del memory map). BankSelTRISD seleziona il bank1 del registro di memoria, BankSelPORTD seleziona il bank0 e così via.

La soubroutine Delay500

Con questa soubroutine avremo un ritardo di circa 500 ms cioècirca 0,5 secondi di “non far niente”. Il ritardo viene generato inmodo software decrementando opportunamente determinati registri.Abbiamo analizzato in precedenza il relativo flow-chart e i tempi diesecuzione delle singole istruzioni.In seguito vedremo una modalità “più elegante” per implementareopportune routine di ritardo.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 11: namoroso@mrscuole · Proteus VSM (Virtual System Modelling – Labcenter Electronics UK) è uno dei sistemi più avanzati per la simulazione di circuiti digitali-analogici comprendenti

NA – L5 11

La programmazione dei PICEsempio: 2 led blinking [alternate ON-OFF ] con ritardo di 500 ms

• Il codice assembler => Il file Anxa3_2Led.asm => Analisi del codice

Main LoopIl codice è molto semplice da seguire e il flow-chart riportatoagevola ulteriormente la comprensione.

N.B. => L’istruzione END deve essere sempre presente alla finedi un programma assembler, è indispensabile.

Swap1

Swap2

Main Loop

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 12: namoroso@mrscuole · Proteus VSM (Virtual System Modelling – Labcenter Electronics UK) è uno dei sistemi più avanzati per la simulazione di circuiti digitali-analogici comprendenti

NA – L5 12

La programmazione dei PICEsempio: 2 led blinking [alternate ON-OFF ] con ritardo di 500 ms

• Compilare il progetto => Creare il file Anxa2_2Led .hex

Al termine della scrittura del programma nella finestra dieditor, dopo aver verificato la correttezza del codice scritto eaver salvato il file con estensione “.asm”, siamo pronti acompilare il progetto, per farlo andiamo su PROJECT ->BUILD ALL; questo comando traduce il file assembler in unfile eseguibile in formato HEX (esadecimale). Apparirà unafinestra di log nella quale verrà indicato se la compilazione èandata a buon fine. "BUILD SUCCEEDED" è un messaggioche indica la corretta compilazione (nessun errore).

In caso di errori è possibile fare doppio click sul messaggio d’errore nella finestra di “Output”ed automaticamente verrà mostrato il codice assembler esattamente alla linea dove si è incontratol’errore.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 13: namoroso@mrscuole · Proteus VSM (Virtual System Modelling – Labcenter Electronics UK) è uno dei sistemi più avanzati per la simulazione di circuiti digitali-analogici comprendenti

NA – L5 13

La programmazione dei PICEsempio: 2 led blinking [alternate ON-OFF ] con ritardo di 500 ms

• Simulare il progetto => Il simulatore software MPSIM

In NA – L4 abbiamoanalizzato in dettagliocome simulare ilprogetto con MPSIM,simulatore softwareintegrato in MPLAB.

A fianco simulazionecon MPSIM.Sono attive variefinestre [View > Watch> …] che permettono dicontrollare le variabilidi progetto.E’ utile notare lafinestra “disassemblylisting” in cui sonoriportati gli indirizzidelle variabili definite.

In “file registers” sonoriportati i 512 registriRAM con in testa gliSFR “Special FunctionRegister”

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 14: namoroso@mrscuole · Proteus VSM (Virtual System Modelling – Labcenter Electronics UK) è uno dei sistemi più avanzati per la simulazione di circuiti digitali-analogici comprendenti

NA – L5 14

Proteus VSM (Virtual System Modelling – Labcenter Electronics UK) è uno dei sistemi piùavanzati per la simulazione di circuiti digitali-analogici comprendenti microcontrollori; è l’unico,sino ad oggi, ad avere un larghissimo range di modelli software per microcontrollori.E’ possibile integrare Proteus VSM all’interno di MPLAB IDE è procedere con la simulazione inmodo più avanzato rispetto a quanto visto con il modulo MPSIM di Microchip.Per lavorare con MPLAB IDE e Proteus VSM bisogna avere disponibile il software proteus-mplabPlugin e installare lo stesso dopo aver installato MPLAB IDE, oppure avere acquistatola versione Professional di Proteus che installa automaticamente il plu-In in MPLAB.

Lo schema del circuito da simulare deve essere realizzato al di fuori di MPLAB con il modulo“Isis” di proteus, non modificare il circuito originale all’interno di MPLAB è sempre buona normautilizzare “Isis” per realizzare e modificare gli schemi.

Caricare lo schema nel modulo Proteus in MPLAB mediante gli opportuni menu di Proteus.

La programmazione dei PICEsempio: 2 led blinking [alternate ON-OFF ] con ritardo di 500 ms

• Simulare il progetto => Il simulatore software Proteus

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 15: namoroso@mrscuole · Proteus VSM (Virtual System Modelling – Labcenter Electronics UK) è uno dei sistemi più avanzati per la simulazione di circuiti digitali-analogici comprendenti

NA – L5 15

La programmazione dei PICEsempio: 2 led blinking [alternate ON-OFF ] con ritardo di 500 ms

• Simulare il progetto => Il simulatore software Proteus

Per caricare e aprire il modulo PROTEUS VSM in MPLAB IDE selezionare ilmenu: Debugger > Select Tool > Proteus VSM

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 16: namoroso@mrscuole · Proteus VSM (Virtual System Modelling – Labcenter Electronics UK) è uno dei sistemi più avanzati per la simulazione di circuiti digitali-analogici comprendenti

NA – L5 16

La programmazione dei PICEsempio: 2 led blinking [alternate ON-OFF ] con ritardo di 500 ms

• Simulare il progetto => Il simulatore software ProteusSimulare con Proteus è semplice e intuitivo; in MPLAB valgono le stesse considerazioni di MPSIM però avremouna simulazione “visual”. Nella simulazione del nostro progetto le stesse finestre del caso precedente sono attive.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 17: namoroso@mrscuole · Proteus VSM (Virtual System Modelling – Labcenter Electronics UK) è uno dei sistemi più avanzati per la simulazione di circuiti digitali-analogici comprendenti

NA – L5 17

La programmazione dei PICEsempio: 2 led blinking [alternate ON-OFF ] con ritardo di 500 ms

• Programmare il microcontrollore

Una volta che il programma è stato scritto, compilato e simulato possiamo passare allaprogrammazione del microcontrollore.

Innanzitutto bisogna selezionare iltipo di programmatore di cuidisponiamo tra quelli elencati nelmenu Programmer > SelectProgrammer

N.B. => L’Hardware necessarioviene installato con l’installazionedi MPLAB nel PC; in questo casosi sceglie il programmatorePicStart Plus della Microchip

Una volta selezionato il programmatorecomparirà una nuova barra deglistrumenti, la barra degli strumenti delprogrammatore:

Prima di eseguire la programmazione ènecessario configurare i bit riguardantiil tipo di oscillatore e tutte le altreopzioni attivabili del microcontrollore(Watchdog timer ecc…)

N.B. => Per il nostro sistema avremo ilmodulo/programmer “PicKit2” installato,faremo quindi riferimento a questoprogrammatore.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 18: namoroso@mrscuole · Proteus VSM (Virtual System Modelling – Labcenter Electronics UK) è uno dei sistemi più avanzati per la simulazione di circuiti digitali-analogici comprendenti

NA – L5 18

La programmazione dei PICEsempio: 2 led blinking [alternate ON-OFF ] con ritardo di 500 ms

• Verifica sulla DemoBoard AnxaPic3

Il risultato del nostro lavoro => AnxaPic3 + Expansion-Replicate PORT + modulo Led-Pulsanti

Expansion-Replicate PORTModulo Led-Pulsanti

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 19: namoroso@mrscuole · Proteus VSM (Virtual System Modelling – Labcenter Electronics UK) è uno dei sistemi più avanzati per la simulazione di circuiti digitali-analogici comprendenti

NA – L5 19

La programmazione dei PICEsempio: 2 led blinking [alternate ON-OFF ] con ritardo di 500 ms

• Il modulo Led-Pulsanti => Schema elettrico

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/