|
|
USARE PIC GENIUS SIMULATOR CON UN COMPILATORE ESTERNO |
|
| Quando si scrive il codice per un microcontrollore, si ha l'esigenza di verificare ciò che si sta scrivendo. Di solito si prepara un circuito prototipo anche su basetta sperimentale dove si trasferisce la porzione di codice scritto per la verifica. Si sà però che in fase di progetto si fanno molti cambiamenti (anche per quanto riguarda l'hardware) ed il prototipo dovrà essere modificato continuamente. |
| Usando PIC Genius si avrà la possibilità di simulare graficamente ed in tempo reale il codice scritto rimandando al solo collaudo finale la realizzazione del prototipo su basetta sperimentale |
| Vediamo adesso come fare tutto ciò : |
| Per realizzare un circuito dimostrativo userò un compilatore PASCAL (è il mio linguaggio preferito) della mikroElettronica nella versione freeware che permette di generare codice assembler fino a 2K di memoria. |
| La prima cosa da fare è quindi caricare il mikroPASCAL e scegliere di editare un nuovo progetto: |
|
|
| Dopo aver selezionato i vari settaggi premere OK |
|
|
|
Il primo codice è già stato scritto e provvede a configurare la PORTB in uscita, a configurare il display LCD con i dati nelle PORTB4 ,PORTB5 , PORTB6, PORTB7 il pin RS nella PORTB0, il pin WR nella PORTB1 ed il pin EN nella PORTB2. |
| Il codice è già stato compilato ed assemblato e nella stessa cartella si troverà il file hex da caricare dentro il microcontrollore per poter far funzionare il circuito. |
| Prima di andare avanti nella stesura del codice facciamo la prova ad usare PIC GENIUS SIMULATOR. |
| Avviamo il programma e selezioniamo il terzo modulo |
|
|
| A questo punto si dovrà cercare e caricare il file esempio.hex generato dal compilatore nell'esempio di prima. (il mio si trova dentro la cartella mikro in Documenti) |
|
|
| Scegliamo il file esempio e premiamo APRI |
| Si aprirà una nuova schermata : |
|
|
| dove si dovrà selezionare il microcontrollore, (PIC 16F876 nel nostro esempio) il tipo di oscillatore (con quarzo a 4MHz) ed il tipo di protezione (OFF). Il tipo di oscillatore ed il code protect in effetti non servono alla simulazione me è necessario sceglierli per il completamento dei dati nella finestra. |
| Premere OK e attendere il caricamento della nuova finestra : |
|
|
| In questa finestra si ha il riepilogo di tutte le porte usate nel microcontrollore scelto (nessuna porta ancora configurata). Nella tool bar si trovano in forma grafica tutti i componenti esterni che è possibile utilizzare nella versione attuale di PIC Genius. Per il nostro esempio è necessario inserire un display LCD 2*16 ed effettuarne i collegamenti. Proviamo quindi a premere il pulsante relativo al display LCD, si aprirà la seguente finestra : |
|
|
|
E' possibile notare che vi sono solo i dati relativi alle linee del display e del piedino R/W forzato a zero poichè la simulazione del display LCD è funzionante solo in scrittura. A questo punto è necessario scegliere i pin rispettando la sequenza imposta nel nostro codice nel compilatore (vedi istruzione LCD_CONFIG). |
|
|
| Dopo aver inserito i dati delle varie porte usate nel progetto (accertarsi che siano giusti, pena il non funzionamento della simulazione ma anche del circuito reale) premere OK e nuovamente OK nella finestra chiamante che è quella del settaggio porte. |
| A questo punto si caricherà automaticamente il modulo del debug come visibile in figura. |
|
|
| In questa finestra sarà possibile eseguire ed analizzare passo passo il codice assembler di un progetto e nello stesso tempo verificare i vari registri e le variabili. Ma a noi questo non interessa perchè per il momento vogliamo veder funzionare il codice a velocità reale. Bene per prima cosa dovremmo caricare e decodificare il file esempio.hex. A questo penserà a tutto PIC Genius con una procedura semplice ed efficacie che permetterà di ricaricare e ridecodificare il file solamente se lo stesso è stato modificato da un evento esterno (nuova compilazione). Proviamo a premere il pulsante RUN posto in alto a sinistra. Si aprirà una schermata che indicherà che è in corso il caricamento e la decodifica del file selezionato inizialmente. |
| Dopo la decodifica il cui tempo necessario è proporzionale alla quantità di istruzioni che compongono il programma, lo stesso comparirà in formato assembler nella finestra in alto nella schermata (Le finestre sono riposizionabili dal programmatore in base al proprio gusto e tutte quelle che non servono potranno essere chiuse.) |
|
|
|
Nella figura in alto il codice è stato caricato e decodificato ed è pronto per essere avviato. Premere nuovamente RUN e attendere qualche secondo, il tempo che il simulatore inizializza alcune sue variabili interne. |
|
|
|
Ecco fatto ! il simulatore è partito e mostra la scritta che è stata scelta in fase di programmazione. La percentuale mostra che la velocità è del 100,91 %. E' chiaro che un computer molto veloce tenderà a simulare il progetto più velocemente rispetto ad un computer più lento. PIC Genius permette di stabilizzare la velocità di calcolo (quando possibile) ad un valore prossimo al 100% se viene premuto il pulsante a sinistra nella parte bassa della finestra (il pulsante raffigura un timer). Inoltre si evince che il codice scritto utilizza lo stack del microcontrollore fino ad una profondità di 4 (max 8). Nella parte sinistra è possibile vedere in tempo reale lo stato degli ingressi scelti nel circuito (nessun ingresso) e a destra lo stato delle uscite (quelle relative al display LCD). Inoltre si potranno valutare e verificare molte altre cose mentre il codice gira (ma non è questo il momento !) |
| Bene !.. Effettuiamo il reset della simulazione tramite il pulsante di RESET nella tool bar e continuiamo a scrivere il nostro codice. |
| Ritorniamo al nostro compilatore e mandiamo dietro PIC GENIUS. Per continuare con il nostro esempio centreremo la scritta nella prima riga del display e dopo aver atteso 2 secondi faremo cancellare il display LCD. Successivamente inseriremo nel progetto un pulsante il quale provvederà se premuto ad accendere o spegnere la retroilluminazione del display stesso (l'esempio è un pò banale ma utile a far capire la manovrabilità di PIC Genius). |
| Bene torniamo quindi al compilatore ed inseriamo altro codice : |
| program esempio; var modo,oldmodo:boolean; begin modo:=false; trisb:=00001000; // la portb in uscita tranne portB3 in ingresso trisc:=0; // la portC in uscita sul pin 0 collegare la luce del display lcd_config(PORTB,7,6,5,4,PORTB,0,1,2); // configuro LCD a mia scelta lcd_out(1,2,'COME USARE PIC'); lcd_out(2,1,'GENIUS SIMULATOR'); delay_ms(2000); // attende 2 secondi lcd_cmd(LCD_CLEAR); // cancello il display while true do //--------si crea un loop infinito come un goto main begin //--------all'interno scrivere il codice che leggera la pressione del pulsante //se la portB3 va a 1 allora il pulsante è stato premuto if testbit(PORTB,3) then begin modo:=not modo; //---attende che il pulsante venga rilasciato per continuare while testbit(PORTB,3) do end; if oldmodo<>modo then begin oldmodo:=modo; if modo then begin lcd_cmd(LCD_CLEAR); // cancello il display lcd_out(1,4,'LUCE ON'); portc.0:=1; end else begin lcd_cmd(LCD_CLEAR); // cancello il display lcd_out(1,4,'LUCE OFF'); portc.0:=0; end; end; end; end. |
|
compiliamo e ritorniamo velocemente a PIC GENIUS richiamandolo da dietro le quinte. Un colpo sul pulsante RUN ricaricherà e decodificherà nuovamente il file hex che nel frattempo è stato modificato. Al termine della decodifica un successivo colpo di RUN avvierà nuovamente la simulazione..... Attenzione però che il codice prevede adesso la presenza di un pulsante da collegare alla PORTB3. Bene ! colleghiamolo subito. Premiamo il RESET per fermare la simulazione e torniamo alla schermata di debug. In alto a destra è possibile notare la presenza di un pulsante che permette di accedere alla finestra del settaggio delle porte. (SETUP PORTE) |
|
|
|
Si riaprirà la finestra di settaggio porte e dalla tool bar sceglieremo di inserire un pulsante standard e di collegarlo alla PORTB3 come scelto in fase di programmazione. |
|
|
|
Bene ! la figura mostra che è stata scelta la PORTB3 e la logica del pulsante a 1 quando premuto. Ricordiamoci anche di stabilire una porta per gestire (tramite transistor !) l'accensione della retroilluminazione del display. Basterà riaprire nella finestra di settaggio delle porte le proprietà del display LCD inserito semplicemente cliccando in una delle voci riferite al display .Nell'esempio sopra ho scelto la PORTC0 per cui ho dovuto settare anche la porta C in uscita. |
| A questo punto chiudere nuovamente le finestre di settaggio porte ed avviare nuovamente la simulazione tramite il RUN. |
| Il display inizialmente è azzerato e con il cursore lampeggiante (non è stato inserito nessun comando per escludere il cursore). Premendo il pulsante rosso si accenderà la retroilluminazione e apparirà la scritta nella prima riga : LUCE ON. Al successivo colpo di pulsante si spegnerà la retroilluminazione ed apparirà la scritta : LUCE OFF. |
| Constatato che tutto funziona regolarmente si può procedere quindi con la programmazione. Naturalmente l'esempio trattato ha una valenza puramente didattica. |
| Con questo sistema si possono realizzare e simulare programmi molto complessi molto velocemente e facilmente con tutti i compilatori esistenti |
|
[ HOME ] [ PROJECTS ] [ DOWNLOAD ] [ NEWS ] [ CONTACT ] [ LINKS ] |