Guida alla Programmazione in C del PIC, 2° Parte

Nella Seconda Parte della Guida si Parlerà del Software Necessario per la Scrittura del Codice e si Realizzerà un Semplice Programma…


 
 
 
 




 

Programmare il PIC

Per programmare il PIC abbiamo bisogno di una struttura hardware chiamata programmatore, cioè di un circuito in grado di ricevere in input un segnale proveniente dal computer e scrivere sulla memoria del pic le istruzioni da noi scritte in file di tipo HEX. Di questi dispositivi ne esistono molte versioni, io uso il programmatore PIC K150, reperibile su ebay ad un costo inferiore ai 10 euro.

DSCN0446

Nel caso utilizziate il mio stesso programmatore seguite le procedure (in inglese) al seguente link http://buyhere22.com/components/k150/.

Per provare i programmi scritti da noi con il PIC abbiamo 2 soluzioni: usare un programma di simulazione come ad esempio “Real pic simulator” reperibile su internet in versione di prova, oppure montare fisicamente il circuito dopo aver programmato il PIC.

Il file che viene letto dal software del programmatore è un file .HEX, un formato di file per la trasmissione di informazioni binarie, questo file è scritto in linguaggio macchina, non comprensibile da noi umani. Questo file viene generato da un compilatore, che trasforma un codice in linguaggio assembler o in linguaggio c in un codice .HEX.

Nel nostro caso il compilatore e la piattaforma di scrittura è un programma chiamato “mikroC PRO for PIC” questo programma ci da la possibilità di scrivere le istruzioni in linguaggio C e il programma crea in automatico una serie di file compilati in base alle istruzioni da noi scritte, i file creati più utili sono:
.ASM ovvero il nostro codice scritto in C tradotto in ASSEMBLY
.LST un file che contiene gli opcode corrispondenti al codice ASSEMBLY
.C che contiene i codici scritti a noi
.MCPPI il file del nostro progetto con MIKROC
.HEX ovvero il file da inviare al programmatore

Questo programma è stato scelto tra i tanti disponibili sul web perchè con altri abbiamo riscontrato difficoltà di programmazione o non funzionavano proprio, inoltre “mikroC PRO for PIC” non occupa assai spazio su disco, è semplice, intuitivo e ha un gran numero di librerie al suo interno già sviluppate. Lo si trova in versione free con una piccola limitazione sul numero di linee di codice al seguente link: http://www.mikroe.com/downloads/get/29/mikroc_pro_pic_v600.zip .

Una volta istallato il programma e avviato ecco come si presenta la prima schermata:

newproject

Per creare un nuovo progetto basterà cliccare su “New Project…” che si trova in alto a sinistra, come evidenziato nell’immagine, dopo aver cliccato su “New Project…” apparirà la seguente schermata:

welcomeDopo aver cliccato su “Next” avremo:

newproj2
Project Name: Inserire il nome del progetto, ad esempio “Led” o “Progetto”.
Project Folder: Qui va inserito il percorso della cartella di destinazione dove si vuole inserire il progetto
Device Name: Qui va scelto il modello del PIC che si vuole programmare, ad esempio, nel nostro caso il PIC16F84A
Device Clock: Inseriamo la frequenza di lavoro del clock, serve inserire la frequenza giusta per rispettare le temporizzazioni e i delay.

Cliccando su “Next” passiamo allo step 2 e successivamente allo step 3, dove si selezionano i file da inserire nel progetto, come altri pezzi di programmi scritti precedentemente o librerie come nello step 3. Lo step 4 è il seguente:

finisheSe si vuole aprire la finestra di configurazione dei bit del PIC basterà inserire la spunta nella casella evidenziata di colore arancione e cliccare su “Finish”. La finestra di configurazione dei bit avrà il seguente aspetto:

finish4455

Oscillator Selection: E’ la sezione dove si selezione il tipo di clock utilizzato, come descritto nella prima parte della guida.
Watchdog Timer: Se disabilitato permette al microconcrollore di resettarsi alla fine di un loop, se abilitato resetta in base al tempo watchdog il microcontrollore.
Power-up Timer: Se abilitato quando la tensione di alimentazione raggiunge i 1,2 – 1,7 V resetta il microcontrollore entro 72mS.
Code Protection: Se off viene disabilitata la protezione del codice, permettendo di scrivere e cancellare il PIC una o più volte, se si seleziona “Program memory is code protected” la cancellazione del PIC può avvenire solo con un’opportuno codice, è una protezione del codice in memoria al PIC.
MCU and Oscillator: In questa sezione nello spazio MCU Name bisogna inserire il modello del PIC, nello spazio Oscillator Frequency [MHz] bisogna inserire la frequenza di lavoro, la frequenza del quarzo adoperato nel circuito, espressa in MHz

Cliccato su “OK” ci comparirà la finestra di scrittura del codice:

programmavoid main () {   //Questa linea corrisponde all’inizio della funzione principale. La funzione principale è il punto da cui tutti i programmi iniziano la loro esecuzione, indipendentemente dalla sua posizione all’interno del codice sorgente.

//La prima parentesi graffa apriva il codice, questa lo chiude. Tra queste due parentesi vengono inserite le istruzioni del programma, inizializzazioni di variabili, cicli ed altre linee di codice.

Proviamo ora a scrivere un programma che inizializza tutte le porte di un PIC16F84A come uscite e setta a livello logico alto le uscite del registro PORTB e a livello logico basso le uscite del registro PORTA:

1PROGRAMMAvoid main () {   //Inizio programma.

TRISA = 0b00000000;     
TRISB = 0b00000000;   //Con queste due linee di codice viene caricato nei registri TRISA e TRISB il valore 0b00000000 che corrisponde a settare i pin di questi due registri come uscite. Il bit più a destra è il bit meno significativo, quindi identifica RB0 o RA0, il bit più a sinistra è il bit più significativo, quindi identifica il pin RB7. Se nel bit viene caricato “0” i pin sono configurate come uscite, se viene caricato “1” questi pin sono caricati come ingressi, si possono configurare i pin in modo diverso uno dall’altro.

PORTA = 0b00000000;   //Con questa scrittura imponiamo che i pin del registro PORTA assumino un valore logico basso. Finchè il circuito è in funzione i pin RA0:RA4 saranno sempre a potenziale basso.

PORTB = 0b11111111;   //Con questa scrittura imponiamo che i pin del registro PORTA assumino un valore logico alto. Finchè il circuito è in funzione i pin RB0:RB7 saranno sempre a potenziale alto. Si possono configurare i bit in modo uno diverso dall’altro, non per forza tutti a livello alto o basso.

}   //Chiusura del programma

Una volta scritto il programma bisogna compilarlo:

buildPer compilare il programma e creare il file .HEX bisogna cliccare su “Build” come evidenziato nell’immagine sovrastante. Una volta cliccato sul pulsante “Build” nella cartella avremo i seguenti file:

programmOra non ci resta che aprire il file .HEX con il software del programmatore, selezionare il tipo di PIC utilizzato e cliccare su “Program”. Eseguite queste operazioni il nostro PIC risulta programmato con il programma da noi creato. Se andiamo a simulare il programma con Real Pic Simulator o a montrare fisicamente il circuito possiamo vedere il corretto funzionamento del circuito.

 







 

[Voti Totali: 1 Media Voti: 5]
Segui la Nostra Pagina Facebook: Facebook

2 pensieri su “Guida alla Programmazione in C del PIC, 2° Parte

  1. salve

    mi è appena arrivato il programmatore k150. Ho installato i driver e collegato il programmatore al pc e fin qua tutto ok.

    Apro “microbrn” seleziono il pic (16f876a), metto il pic nello zoccolo, carico il file.hex e clicco su program e mi esce questo messaggio:
    [url=http://postimg.org/image/w9vf52lpb/][img]http://s3.postimg.org/w9vf52lpb/New_Picture_1.jpg[/img][/url]
    clicco su yes e mi compare questo messaggio:
    [url=http://postimg.org/image/paweaoc6n/][img]http://s27.postimg.org/paweaoc6n/New_Picture_2.jpg[/img][/url]
    e non riesco a programmare il pic.
    Per caso a qualche idea su come risolvere il problema così da poter utilizzare questo programmatore senza dove spendere altri soldi per acquistare il pickit3?

    grazie mille

Rispondi a ruslan Annulla risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *