Ecco di seguito una traduzione delle parti più rilevanti del datasheet,
viene descritto l'utilizzo del timer0 con collegamento al clock di
sitema.
Visualizzazione post con etichetta PIC. Mostra tutti i post
Visualizzazione post con etichetta PIC. Mostra tutti i post
martedì 15 gennaio 2013
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
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
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
- 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.

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)
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
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
- 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
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
Esercitazioni di laboratorio con il PIC16F687
Dispense del prof. Giulio Vitale sul PIC16F887 (gennaio 2010)
Datasheet del PIC16F687
Schema elettrico e di montaggio del PIC16F687 su bread-board
Datasheet del PIC16F687
Schema elettrico e di montaggio del PIC16F687 su bread-board
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
- 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
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
Iscriviti a:
Post (Atom)



