Alessandro
Tutorials sull'uso della Development-board EASYPIC4
Tutorials -
Mercoledì 28 Dicembre 2011 09:49
Scritto da Alessandro

Tutorial sull’uso delle schede di sviluppo della mickroelecktronika, in particolare la EasyPIC4                            PRIMA PARTE

 

 

I passi e gli esempi riportati sono adatti per essere eseguiti sulle seguenti MCU (OS usato ->Windows XP SP3, i vari step di istallazione variano su piattaforme come MAC o Linux ):

·         PIC16F84/A

·         PIC 16F628/A

·         PIC16F88

Questi microcontrollori condividono infatti la stessa piedinatura e hanno lo stesso set di istruzioni e quindi sono i programmi sono implementabili senze particolari modifiche alle piedinature, basta semplicemente ricompilare i sorgenti.

Collegare la board al PC tramite il cavo USB fornito nel kit di sviluppo

(a computer già avviato), attendere la comparsa di una tendina in basso a destra della videata standard di windows in questa tendina compariranno delle frasi quali : trovato nuovo Hardware PIC18F …  . Bene, non badateci, inserite il cd fornito ed attendete il suo avvio, si aprirà il browser scorrete la finestra fino a trovare quest’immagine in cui vi è descritta la vostra board, cliccate sul link riquadrato di rosso ed eseguite l’installazione passo per passo.

 Immagine1

Fatto questo il vostro PC è ora in grado di rilevare il programmatore ma ha bisogno del compilatore per generare i file .hex che verranno memorizzati nelle MCU e di un programma che controlli il programmatore stesso.

Immagine2

Tornate nel browser e scorrette ancora una volta la schermata, Installate ora il pacchetto riquadrato nell’immagine sovrastante.

Ora si può passare alla programmazione, se dovessero esserci problemi rivedete i punti precedenti.Chiudiamo tutte le finestre inutilizzate e riavviamo il computer, aprite l’IDE (Start -> tutti i programmi -> Mikroelektronika -> MikroC -> MicroC)

(Integrated Development Enviroment -> Ambiente di sviluppo integrato)

Cliccare in alto a sinistra su Project e poi su New Project.

Immagine3

Su Project Name scrivete il nome che volete dare al vostro progetto (es. Lampeggio LED)

Su Project Path scegliete la cartella che andrà a contenere tutti i file compresi nel progetto (Potete tranquillamente lasciare quella di default)

Description si descrive da solo...

Su Device scegliete il microcontrollore che volete usare, noi ovviamente scegliamo il P16F84A

(Sta per PIC16F84)

Su Clock si imposta la frequenza di lavoro del micro, a seconda del quarzo che montate scrivete la frequenza che volete adottare (Attenzione! nei quarzi veloci ad esempio ad 8MHz la sigla è generalmente  HS 8.000, perciò attenti ai decimali, pena il non corretta funzionamento del micro nel peggiore dei casi, nel migliore tutte le funzioni sono accelerate o rallentate).

Le spille, mettete quelle in figura. WDT: è un particolare timer che serve a resettare il micro se si blocca l’esecuzione del programma impostato su OFF è spento. HS_OSC : Predispone il PIC e ricevere un clock esterno dato da un quarzo, impostazioni quali : LP/XT/HS/RC-OSC hanno tutte a che fare con l’oscillatore che impartisce il clock, possono comunque essere impostate in seguito prima della programmazione.

Descritto il Wizard, proseguiamo dando OK e creando così tutti i file necessari che sono però ancora vuoti.

 

 

Funzionamento della MCU

Immagine4

Porte e Registri

Ora viene la parte più ostica da digerire, Ogni porta corrisponde ad un registro, essendo questo tipo di MCU ad 8 bit a quanti bit possono essere i registri ? 8…

Ogni registro può controllare 8 pin di I/O quindi se troviamo un PIC da più di 8 pin niente paura, le porte vengono raggruppate 8 ad 8 in registri quali PORTA,PORTB,PORTC… etc

Come potete vedere dall’immagine sovrastante che rappresenta lo schema logico-concettuale del micro le porte (PORTA -> RA3:RA0 e PORTB -> RB7:RB1, RB0 può essere usata come pin “standard” o come interrupt esterno) sono controllate tramite la ALU che assieme a MUX, W reg ed altri componenti forma la vera e propria CPU del nostro minicomputer (riquadro Rosso).

Nel riquadro viola si trovano i controlli del clock, del reset e dell’alimentazione assieme al Watchdog timer

Nel riquadro verde troviamo la Flash ovvero una memoria permanente in cui viene scritto il programma che verrà poi eseguito.

Nel riquadro marrone troviamo un'altra area di memoria permanente che può essere scritta durante l’esecuzione del programma ad esempio per salvare dei dati (si po’ salvare anche nella Flash ma è rischioso e a lungo andare la degrada…)

Importanti ma non segnati sono la RAM e il bus di sistema(Le frecce)

Passiamo ora alla vera e propria programmazione della MCU

 

Premetto che do per scontato che conosciate i Cicli, le strutture condizionali e di controllo.

Tutti i programmi scritti in seguito son scritti in ANSI C

Impostazione di base del programma :

//Qui si richiamano le librerie, le funzioni e le eventuali variabili globali (ovviamente per programmi basilari nessuna di queste tre cose è presente.)

void main() {

//Qui si impostano le porta, si inizializzano le variabili etc…

while(1) {

//Qui si scrive il programma principale che può richiamare le proprie funzioni etc..

}

} //~!

Dichiarazione delle porte,

 

void main(){

TRISB = 0;                                     //Imposto il registro B come uscita

TRISA = 255;                                //Imposto il registro A come entrata

while(1){                                      //Ricordare sempre il while perchè sennò il programma viene eseguito una sola volta

if(PORTA==0b00000001){            /*Se il PIN 1 della porta A == HIGH (Lavorando in elettronica Digitale il                                                                                                                                    valore HIGH corrisponde a +5V e LOW a 0V, leggete sempre il datasheet perché alcuni micro funzionano a 3.3V)*/

PORTB = 0b00000000;                  //PORTB == LOW

 Delay_Ms(25);                              //Aspetto 250 millisecondi

PORTB = 255;                               //Accendo l'intera PORTB essendo un 8bit,255 corrisponde a 2^8-1

Delay_Ms(25);                                //Aspetto altri 250 millisecondi

}

}

}

 

 

Essendo il mio primo articolo potrebbero esserci alcune imprecisioni di formattazione ed altro.. fatemi sapere come vi sembra :) alla prossima :)

 

Gioblu Robotics © 2010 - 2012 · Sitemap · privacy

gioscarab@gmail.com

Gioblu BOTServer è online dal 10 Aprile 2010 - 319.232 Visite - 1.027.175 Pagine visualizzate - 182.309 Visitatori unici - 536 utenti attivi