Visualizzazione post con etichetta PIC. Mostra tutti i post
Visualizzazione post con etichetta PIC. Mostra tutti i post

martedì 15 gennaio 2013

PIC16F628A e il Timer0

Ecco di seguito una traduzione delle parti più rilevanti del datasheet, viene descritto l'utilizzo del timer0 con collegamento al clock di sitema.

giovedì 3 maggio 2012

Template di un progetto MPLAB utilizzabile con diverse schede micro

PIC16F1939 e PIC16F1827

Scarica il progetto

Progetto compresso con il programma 7Zip 

Firmware per il collaudo della scheda PIC16F1939 con display e porta seriale scarica il fw

Utilizzo del DAC interno al PIC16F1827 per la generazione di un segnale sinusoidale

Leggendo il dasheet del PIC16F1827 troviamo due formule relative al DAC che semplificate ci permettono di calcolare la Vout dato DACCON1 oppure DACCON1 data la Vout
Vout = 5*DACCON1/32
DCCON1 = Vout*32/5

giovedì 8 marzo 2012

Errori da evitare nei progetti Mplab

Per raggiungere la sufficienza nei progetti consegnati vanno seguite le seguenti indicazioni:

- Ogni istruzione che opera sui i file register deve essere preceduta dalla istruzione di selezione del banco
- Le costanti vanno scritte in maiuscolo
- Il progetto deve avere tre livelli di commento:    a. nell'intestazione iniziale indicare obiettivi, premesse teoriche
    b. All'inizio di ogni routine deve essere presente l'intestazione compilata in ogni parte compresa una descrizione della stessa
    c. Spiegare gruppi di istruzioni che svolgono una funzione particolare. evitare di commentare istruzioni semplici.
- La compilazione del progetto non deve dare errori. Eventualmente commentare l'istruzioni che genera l'errore e che non riuscite a correggere.
- Indentazione corretta del firmware: label sulla colonna 0, istruzioni dopo 2 tab, commenti allineati, ...
- non usare banksel ma l'istruzione movlb per la selezione stampare la parte di datasheet contenente l'elenco dei fl register

venerdì 17 febbraio 2012

Il modulo PWM del PIC16F887

All' interno del pic16F887 sono presenti due moduli hardware chiamati CCP1 e CCP2 in grado di implementare le funzioni di Compare, Captue e PWM.

La funzione PWM è in grado di generare un segnale impulsivo modulato in ampiezza, dove è impostabile frequenza e duty cycle. Questo segnale può essere utilizzato nei protocolli di comunicazione dove l'informazione è codificata in base alla durata degli impulsi e al duty cycle oppure per generare una tensione media di ampiezza variabile per pilotare ad esempio dei motori.

Il segnale PWM viene generato sul pin CCPx (CCP1 o CCP2). Il duty cycle il perido e la risoluzione è determinata dai seguenti registri
• PR2
• T2CON
• CCPRxL (CCPR1L o CCPR2L)
• CCPxCON (CCP1CON o CCP2CON)

La risoluzione del segnale generato sul pin CCP può raggiungere al massimo 10 bit

Il modulo PWM per funzionare ha bisogno di utilizzare come risorsa esclusiva il modulo Timer2.



martedì 14 febbraio 2012

Gestione del Timer0 con il pic 16F1827

Struttura interna del timer0 dal datasheet della Microchip

Ecco di seguito una traduzione delle parti più rilevanti del datasheet, viene descritto l'utilizzo del timer0 con collegamento al clock di sitema:

giovedì 26 gennaio 2012

Template di un progetto Mplab per la scrittura di firmware con il PIC16F1827

Datasheet del PIC16F1827
Dispense del prof. Giulio Vitale sul PIC16F887 (gennaio 2010)


- Scaricare ed installare Mplab

Creazione di un nuovo progetto con Mplab
- project wizard
- scegliere come micro il PIC16F1827
- creare una nuova cartella e dare un nuovo nome al progetto (fare attenzione)
- finito il wizard, creare un nuovo file e salvarlo immediatamente assegnandogli un nome ed estensione .asm (facenbdo attenzione alla cartella di salvataggio, il file creato va aggiunto al progetto) oppure aggiungere un file template esistente.

 ATTENZIONE! tutti i file relativi al progetto devono trovarsi all'interno della cartella creata

- Personalizzare il workspace

Scrittura del firmware:
- Scrivere un firmware per testare i 4 led e i due pulsanti
usare come traccia il seguente template

Firmware per testare il circuito v1.0.1

martedì 20 dicembre 2011

Prima esercitazione con il PIC16F1827 - Creazione del connettore e montaggio del circuito

Preparazione dell'hardware:
come prima cosa preparare il cavetto per il collegamento del programmatore Pickit2/3 al connettore ICD del circuito micro.
Va eliminato il cavo bianco e saldato da una estremita il connettore maschio a 5 pin e dall'altra estremità il connettore femmina a 6 pin come mostrato nelle figure seguenti


giovedì 24 novembre 2011

sabato 19 novembre 2011

Progetto per l'utilizzo degli interrupt con il PIC16F628A (Es. lab3)

Esercizio da consegnare in formato elettronico entro il mercoledi 30 (utilizzare come riferimento il programma e lo schema elettrico precedente, Es. lab2) :
-  Preparare con Eagle lo schema elettrico, collegare 4 led al pic, LED0 a RB2, LED1 a RB3, LED2 a RB4, LED3 a RB5
- Adeguare le routine led_init e led_blink del programma precedente al nuovo hardware, scrivere delle nuove routine per i led 2 e 3 (led2_on, led3_on, led2_off, led3_off)
-  Scrivere una routine 'led_hex' che visualizzi sui 4 led i quattro bit meno significativi del registro wreg, in pratica visualizziamo in binario il contenuto basso di wreg: bisogna testare i singoli bit di wreg e accendere o meno il led corrispondente (es. se bit0 di wreg=0 led0->off altrimenti led0->on, ...)
- Scrivere la routine 'rb0_int_init' che azzeri la variabile 'p1_num_click' inizializzi correttamente il registro 'INTCON' del pic;
- Aggiungere all'interno della routine di gestione degli interrupt 'isr' (presente nel template) del codice che: ad ogni pressione del pulsante P1 incrementi il valore della variabile 'p1_num_click' e visualizzi in binario sui 4 led tale valore.


Prerequisiti:
- montare su bread bord il circuito
- studiare (e stampare) le seguenti pagine del datasheet del PIC16F628A :
  * pag 18 - DATA MEMORY MAP OF THE PIC16F627A AND PIC16F628A
  * pag 24-26 - STATUS register, OPTION register, INTCON register
  * pag 117-130 - INSTRUCTION SET SUMMARY

mercoledì 26 ottobre 2011

Primo progetto MPLAB per PIC16F628A

Es1: Esercizio su uso del costrutto if in assembler. Se il pulsante P1 risulta premuto accendere il led0 e spegnere il led1 altrimenti accendere il led1 e spegnere il led0.
Completare il programma allegato e usare il presente progetto come template per i prossimi progetti.
Disegnare con Eagle lo schema elettrico del circuito da montare.

Il progetto una volta completato il codice va compresso e inviato sul sito http://88.42.106.212/didattica/
Il progetto può essere aperto sia con MPLAB che con MPLAB.X

Es2: Fare una routine di ritardo di 1ms e una di 100ms e una routine che accende e spegne i due led della board ad intervalli di 100ms per 5 volte. Nel main del programma dopo aver inizializzato l'hw richiamare la routine che fa lampeggiare i led per 5 volte mentre nel main loop lasciare la routine dell'es1 per la verifica del pilsante premuto.

Schema elettrico e di montaggio:


Buon lavoro, Filippo Bilardo