Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
INTRODUZIONE AI PICmicro
I Pic micro sono dei Circuiti Integrati della famiglia dei microcontrollori prodotti dalla MICROCHIP TECHNOLOGY INC.
2
MICROCONTROLLORE Legge segnali ai suoi ingressi (sensori,pulsanti,…etc.) Processa,eleabora tali segnali (dati) Pilota dispositivi collegati alle sue uscite (led,display,lcd,motori,..etc.)
3
PIC16F84 E’ il microcontrollore di cui ci occuperemo.
Si presenta in un package DIP a 18 pin.
4
PIC1684 Si presenta come in fig.
5
DISPOSITIVI INTERNI AD UN MICRO
CPU (Central Processor Unit) unità centrale di elaborazione,interpreta le istruzioni del programma EEPROM (Electrical Erase Programmable Read Only Memory)memoria programmabile a solo lettura,è il luogo ove viene memorizzato il programma. LINEE I/O, linee di ingresso e di uscita,per pilotare disp. Esterni o ricevere segnali da sensori,pulsanti,..etc. RAM (Random Access Memory) ovvero memoria ad accesso casuale.Utilizzata per memorizz. Le variabili del programma. CLOCK, BUS, CONTATORI (TIMER),..etc.
6
PIEDINATURA DEL PIC16F84
7
Descrizione dei pin del PIC16F84
RA2 è una linea di I/O programmabile in ingresso o in uscita. CORRISPONDE AL BIT 2 DELLA PORTA A. RA3 è una linea di I/O programmabile in ingresso o in uscita. CORRISPONDE AL BIT 3 DELLA PORTA A. RA4 / RTCC è un pin multifunzione che può essere programm. Come normale linea di I/O oppure come linea di clock in ingresso verso il contatore TMR0 se programm. Come linea I/O corrisponde al bit 4 della porta A.Diversamente dalle altre linee di I/O,quando funziona come uscita ,lavora a collettore aperto.
8
MCLR/VPP In condizioni di normale funzionamento svolge le funzioni di Master Clear ovvero di RESET ed è attivo a livello 0.Quando il PIC deve essere programmato viene usato come ingressso per la tensione di programmazione VPP. VSS è il pin a cui va collegato il negativo della tensione di alimentazione (massa). RB0 è una linea di I/O programmabile in ingresso o uscita dall’utente.Corrisponde al BIT 0 DELLA PORTA B. RB1 è una linea di I/O programmabile in ingresso o uscita dall’utente.Corrisponde al BIT 1 DELLA PORTA B. RB2 è una linea di I/O programmabile in ingresso o uscita dall’utente.Corrisponde al BIT 2 DELLA PORTA B.
9
RB3 è una linea di I/O programmabile in ingresso o uscita dall’utente
RB3 è una linea di I/O programmabile in ingresso o uscita dall’utente.Corrisponde al BIT 3 DELLA PORTA B. RB4 è una linea di I/O programmabile in ingresso o uscita dall’utente.Corrisponde al BIT 4 DELLA PORTA B. RB5 è una linea di I/O programmabile in ingresso o uscita dall’utente.Corrisponde al BIT 5 DELLA PORTA B. RB6 è una linea di I/O programmabile in ingresso o uscita dall’utente.Corrisponde al BIT 6 DELLA PORTA B. RB7 è una linea di I/O programmabile in ingresso o uscita dall’utente.Corrisponde al BIT 7 DELLA PORTA B. VDD è il terminale positivo dell’alimentazione (+5V) OSC2/CLKOUT è un pin di connessione nel caso venga utilizzato un quarzo per generare il clock.E’ l’uscita del clock nel caso venga applicato un oscillatore RC o un oscill. Esterno.
10
OSC1/CLKIN è un pin di connessione nel caso venga utilizzato un quarzo o un circuito RC per generare il clock.E’ l’ingresso del clock nel caso venga utilizzato un oscillatore esterno. RA0 è una linea di I/O programmabile in ingresso o uscita dall’utente.Corrisponde al BIT 0 DELLA PORTA A. RA1 è una linea di I/O programmabile in ingresso o uscita dall’utente.Corrisponde al BIT 1 DELLA PORTA A.
11
ARCHITETTURA INTERNA DI UN PIC16F84
12
LA ALU La ALU ovvero unità aritmetica e logica
è la componente più complessa del pic in quanto contiene tutta la circuteria che svolge le funzioni di calcolo. La ALU è presente in tutti i microprocessori e da essa dipende direttamente la potenza di calcolo.
13
LA PROGRAM MEMORY E’ una memoria di tipo EEPROM,ed utilizzata dal pic per tenere memorizzato il programma da esguire. La sua capacità di memorizzazione è di 1024 locazioni ,ognuna in grado di contenere un opcode di 14 bit. Il programma più complesso che potremo realizzare non potrà essere più lungo di 1024 istruzioni.
14
MEMORIA RAM DEL PIC16F84 Le prime 12 locazioni della pagina 0 (da 00H a 0BH) e della pagina 1 (da 80H a 8BH) sono riservate ai registri speciali usati per il funzionamento del pic e non possono essere usati per altri scopi. Le 68 locazioni in pagina 0 indirizzate da 0CH a 4FH possono essere utilizzate liberamente dai nostri programmi per memorizzare variabili,contatori,ecc..
15
MAPPATURA DELLA RAM DEL PIC16F84
00h Indirect address indirect address 80h 01h TMR0 OPTION 81h 02H PCL 82h 03h STATUS 83h 04h FSR 84h 05h PORTA TRISA 85h 06h PORTB TRISB 86h 07h 87h 08h EEDATA EECON 88h 09h EEADR 89h 0Ah PCLATH 8Ah 0Bh INTCON 8Bh 0Ch REGISTRI DI USO MAPPATO IN PAG. 0 8Ch GENERALE 4Fh CFh 50h D0h 7Fh FFh Bank 0 Bank 1 -Registri con funzioni speciali--
16
IL REGISTER FILE E’ un insieme di locazioni di memoria RAM, ove è possibile leggere e modificare il contenuto, senza l’ausilio di programmatori esterni e direttamente dal programma in esecuzione sul PICmicro.
17
L’ACCUMULATORE O REGISTRO W
E’ direttamente connesso alla ALU. E’ una locazione di memoria ad 8 bit E’ utilizzato spessissimo nei programmi per PIC.
18
Le porte A e B Il pic16F84 dispone di 13 linee di I/O organizzate in due porte denominate PORTA A e PORTA B. La porta A dispone di 5 linee configurabili sia in ingressi che in uscite,indicate con RA0,RA1,RA2,RA3 ed RA4.
19
La porta B dispone di 8 linee configurabili sia come ingressi che come uscite,identificate con RB0,RB1,RB2,RB3,RB4,RB5,RB6 ed RB7.
20
REGISTRI PER LA GESTIONE DELLE PORTE
Per la gestione delle linee di I/O da programma,il pic dispone di due registri interni per ogni porta denominati TRISA e PORTA per la porta A e TRISB e PORTB per la porta B. I registri TRISA e TRISB,determinano il funzionamento in ingresso o in uscita di ogni singola linea,i registri PORTA e PORTB determinano lo stato delle linee in uscita o riportano lo stato delle linee in ingresso.
21
Ognuno dei bit contenuti nei registri menzionati corrisponde univocamente ad una linea di I/O.
Ad esempio il bit 0 del registro PORTA e del registro TRISA corrispondono alla linea RA0,il bit 1 alla linea RA1 e cosi via.Questi se posti a 1 configurano la linea corrispondente come ingresso,se posti a 0 configurano la corrispondente linea come uscita.
22
Schema delle linee RA0,RA1,RA2 e RA3
23
Schema della linea RA4
24
Schema delle linee RB0,RB1,RB2,RB3
25
Schema delle linee RB4.RB5,RB6,RB7
26
LINGUAGGIO ASSEMBLER Ogni istruzione è rappresentata da un codice operativo (opcode) composto da 14 bit. Viene memorizzata in una locazione di memoria programma. Esempio di opcode: (rappr. Binaria) 0x (rappr. Esadec)
27
Questi codici,privi di significato per un essere umano,sono gli unici che il pic è in grado di capire. Per convenzione si associa,ad ogni opcode,una breve sigla mnemonica che aiuta a ricordare la funzione svolta da ogni istruzione. L’opcode 0x100 di prima effettua l’azzeramento de registro W che in inglese viene indicato con la frase CLEAR W REGISTER,che abbreviata diventa CLRW
28
Altre sigle mnemoniche definiscono tutte le istruzioni che il PICmicro è in grado di eseguire
L’insieme di queste sigle e le regole per ordinarle per formare un programma completo viene chiamato LINGUAGGIO ASSEMBLER.
29
Per scrivere un programma in assembler occorre:
conoscere le istruzioni,per il pic che si vuole usare Disporre di un elaboratore di testo con cui scrivere il programma. Il file di testo ottenuto si chiama source o sorgente assember.
30
L’ASSEMBLATORE E’ un programma che traduce il nostro sorgente assembler nella giusta sequenza di istruzioni in formato binario che il pic è in grado di capire.
31
SCHEMA DI FLUSSO DELLE OPERAZIONI E DEI FILE GENERATI NECESSARI PER OTTENERE UN PICmicro PROGRAMMATO
32
La prima operazione la scrittura del sorgente assembler e la sua memorizzazione in un file di testo con l’estensione .ASM Durante la compilazione ,l’assemblatore genera una serie di file con il nome identico al source,ma con estensione diversa. .HEX è il file contenente gli opcode da inserire all’interno del pic. .LST è un file di testo in cui è riportato l’intero source assembler e la corrispondente traduzione in opcode. .ERR contiene la lista degli errori di compilazione riscontrati ed il numero di linea all’interno del source assembler in cui sono stati rilevati.
33
Primo programma in assembler
PROCESSOR 16F btfsc PORTB,LED RADIX DEC Goto setTozero INCLUDE “P16F84.INC” bsf PORTB,LED LED EQU goto MainLoop ORG 0CH SetTozero COUNT RES bcf PORTB,LED ORG 00H goto MainLoop Bsf STATUS,RP0 Movlw B Delay Movwf TRISA clrf Count Movlw B’ ’ clrf Count+1 Movwf TRISB DelayLoop Bcf STATUS,RP0 decfsz Count,1 Bsf PORTB,LED goto DelayLoop mainLoop decfsz Count+1,1 Call Delay goto DelayLoop retlw 0 END
34
IL CONTATORE TMR0 ED IL PRESCALER
Il registro TMR0 è un contatore. Esso viene incrementato ogni 4 cicli macchina. E’ programmabile direttamente dall’hardware del PIC. Raggiunto il valore max pari a 255 esso viene azzerato automaticamente.
35
La frequenza di conteggio è direttamente proporzionale alla freq
La frequenza di conteggio è direttamente proporzionale alla freq. del clock applicata al chip. Tale freq. può essere modificata programmando opportunatamente alcuni bit di configurazione.
36
Catena di blocchi interni al pic che determinano il funzionamento del TMR0
37
DESCRIZIONE DEI VARI BLOCCHI
blocchi FOSC/4 e TOCK1:sorgenti di segnale per il contatore. Fosc/4 è un segnale generato internamente al pic dal clock ed è pari alla freq. di clock divisa per 4. TOCK1 è segnale generato da un eventuale circuito estero ed applicato al pin TOCK1 (pin 3) del pic16F84.
38
I blocchi TOCS e PSA sono 2 commutatori di segnale sulla cui uscita viene presentato uno dei due segnali d’ingresso in base al valore dei bit TOCS e PSA del registro OPTION. Il PRESCALER è un divisore di frequenza programmabile a 8 bit,si usa nel caso in cui la freq. di conteggio inviata al TMR0 sia troppo elevata. Configurando in modo opportuno i bit PS0,PS1 e PS2 del registro OPTION secondo la seguente tabella :
39
CONFIGURAZIONE PRESCALER
40
In base al valore dei bit TOCS e PSA del registro option si hanno le seguenti modalità di funzionamento :TOCS=1 E PSA=1
41
TOCS=0 E PSA=0
42
Funzionamento con prescaler TOCS=0 e PSA=0
43
Il bit TOSE La presenza della porta logica XOR,all’ingresso TOCK1 del pic,consente di determinare,tramite il bit TOSE del registro OPTION,se il contatore TMR0 deve essere incrementato in corrispondenza del fronte di discesa (TOSE=1) o del fronte di salita (TOSE=0)
44
GLI INTERRUPT E’ un evento esterno,che interrompe momentaneamente il programma principale per eseguire una porzione di programma specializzata nella gestione dell’evento verificatosi e riprendere l’esecuzione del programma principale.
45
TIPI DI EVENTO E BIT DI ABILITAZIONE
Tipi di eventi: Cambiamento di stato sul pin RB0 Fine conteggio del registro TMR0 Cambiamento di stato sui pin da RB4 a RB7 Fine scrittura su una locazione EEPROM.
46
Bit di abilitazione (registro INTCON):
INTE (bit4):se viene messo a 1 viene abilitato l’interrupt del primo evento TOIE (bit5):se viene messo a 1 viene abilitato l’interrupt del secondo evento. RBIE(bit3):se viene messo a 1 viene abilitato il terzo evento. EEIE(bit6):se viene messo a 1 viene abilitato l’interrupt del quarto evento.
47
NOTA BENE: ESISTE INOLTRE UN BIT DI ABILITAZIONE GENERALE DEGLI INTERRUPT CHE DEVE ESSERE MESSO A 1 ,OVVERO IL BIT GIE (GLOBAL INTERRUPT ENEBLE BIT) POSTO SUL BIT 7 DEL REGISTRO INTCON.
48
INTERRUPT FLAGS Dato che qualunqe interrupt genera una chiamata alla locazione 04H,nel registro INTCON sono presenti dei flag che indicano quale è l’evento che ha generato l’interrupt,vediamoli: INTF(bit 1) se vale 1 l’interrupt è stato generato dal cambiamento di stato sul pin RB0 TOIF(bit 2) se vale 1 l’interrupt è stato generato al termine del conteggio del TMR0. RBIF(bit 0) se vale 1 l’interrupt è stato generato dal cambiamento di stato sui pin da RB4 a RB7. Se nessuno dei tre bit vale 1 allora l’interrupt è stato generato sul fine scrittura nella EEPROM.
49
IL POWER DOWN MODE E’un particolare stato di funzionamento del PICmicro utilizzato per ridurre il consumo di corrente nei momenti in cui il pic non è utilizzato perché in attesa di un evento esterno. Per esempio un telecomando per apricancello o per TV rimane inattivo fino a quando qualcuno non preme un tasto.Appena premuto il tasto il pic effettua una breve trasmissione e poi si rimette di nuovo nello stato di attesa. Quindi l’effettivo utilizzo del pic è limitato a pochi ms. Per evitare di consumare inutilmente l’energia della pila è possibile spegnere buona parte dei circuiti interni al pic e riaccenderli solo in corrispondenza di un evento esterno.
50
L’istruzione SLEEP Viene utilizzata per mettere il pic in power down mode e ridurre di conseguenza la corrente che passerà da circa 2 mA (a 5V con clock da 4MHz) a circa 2 uA,ovvero 1000 volte di meno! Per entrare in Power Down Mode basta inserire l’istruzione SLEEP in un punto qualsiasi del nostro programma.
51
IL WATCH DOG TIMER (WDT)
Il WDT è in pratica un oscillatore interno al pic ,ma completamente indipendente dal resto della circuiteria,il cui scopo è quello di rilevare eventuali blocchi della CPU del micro e resettare il pic per riprendere la normale esecuzione del programma. L’istruzione per attivare il WDT è CLRWDT (clear Watch Dog Timer),la quale azzera ad intervalli regolari il WDT non consentendogli di finire il conteggio.Se il pic non effettua tale istruzione prima del termine del conteggio allora si desume che il programma si sia bloccato per qualche motivo e si effettua il reset del pic.
52
Scrittura e lettura dati da EEPROM
Per accedere all EEprom vengono utilizzati i seguenti registri: EEAADR Serve ad indirizzare una delle 64 locazioni. EEDATA è il registro usato per inviare un byte alla EEPROM EECON 1 e EECON2 sono 2 registri di controllo usati nelle operazioni di scrittura e di lettura.
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.