La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

IL MICROCONTROLLORE PIC16F84A

Presentazioni simili


Presentazione sul tema: "IL MICROCONTROLLORE PIC16F84A"— Transcript della presentazione:

1 IL MICROCONTROLLORE PIC16F84A
Ing. Marco Giannini IL MICROCONTROLLORE PIC16F84A Architettura e Programmazione dei Microelaboratori Anno accademico 2008/2009 Prof. Giuseppe Mastronardi

2 Architettura del PIC16F84A

3 PIC16F84A della Microchip Technology
PIC = Peripheral Interface Controller (Controllore di periferiche programmabile) La sua caratteristica più importante sta nella sigla F : Il programma risiede in una EEPROM FLASH (Electrically Erasable Programmable Read only Memory) è modificabile immediatamente anche senza togliere l’integrato dal circuito (modalità: in-circuit)

4 Architettura Harvard e ad Accumulatore del PIC16F84A

5 PIC 16F84A - Caratteristiche
Architettura di Harvard e ad Accumulatore Pipeline a 2 stadi delle istruzioni (Pre-fetching) Set di 35 Istruzioni di 14 bit Memoria programma di 1024 words da 14 bit 64 Bytes di Dati RAM 64 Bytes di Dati EEPROM Registri a 8 bit Stack a 8 livelli Indirizzamento diretto, indiretto e relativo 18 Pin di cui 13 di I/O 4 Sorgenti di interrupt Timer/Contatore TMR0 programmabile a 8 bit con prescaler a 8 bit Power on Reset, Power-up Timer, Oscillator Start-up Timer Watch Dog Timer Sleep Mode

6 L’architettura del microcontrollore PIC16F84A
Appartiene alla famiglia di fascia media dei microcontrollori PICmicro prodotti dalla Microchip caratterizzati da un Instruction Word da 14 bit, prodotto in due package da 18 e da 20 pin.

7 Reset Logic (logica di reset)
In generale si può dividere il microcontrollore in tre parti fondamentali: CPU ALU Core (nucleo) Clock Reset Logic (logica di reset) Dispositivo di organizzazione della memoria (Device memory map organization). 13 pin di Input/Output con controllo di direzione 2. Peripherals (periferiche) Corrente elevata in uscita (25 mA) per pilotare LED TMR0: timer/contatore a 8 bit con prescaler programmabile a 8 bit Watchdog timer Modalità Sleep (power-down mode) 3. Special Features (caratteristiche speciali) In-circuit Serial Programming Device Configuration Word

8 Caratteristiche di base
Il PIC16F84A, avendo una Istruction Word da 14 bit, fa parte della famiglia “Mid-Range” costituita da microcontrollori dalla stessa architettura. Diagramma dell’ architettura del PIC16F84A CORE Caratteristiche architetturali Architettura “Harvard” Long Word Istruction Single Word Istruction Single Cycle Istruction Register File Architetture Instruction Pipeline SPECIAL FEAT. I/O PIC16F84A

9 CPU e ALU La CPU ha lo scopo di interpretare le istruzioni di programma e del controllo della memoria di programma La ALU contiene la circuiteria responsabile dello svolgimento delle funzioni di calcolo e della manipolazione dei dati Le istruzioni eseguite dalla CPU sono di tre tipi: Byte-oriented Bit-oriented Literal and control

10 ALU La ALU è ad 8 bit ed è connessa con il registro W e con il register file attraverso due ingressi che hanno la possibilità di essere utilizzati anche come uscite. Se da un lato la ALU è connessa con il registro W, dall’altra le possibilità sono due: Register file (di 8 bit) Costante di un’istruzione Literal and Control Operation (di 8 bit) Il registro che contiene le informazioni di stato circa l’ALU, sulle condizioni di RESET e sulla memoria si chiama STATUS REGISTER.

11 Formato Istruzioni Processore RISC 35 Istruzioni Istruzioni da 14 bit
Byte Oriented Bit Oriented Literal & Control Istruzioni da 1 o 2 cicli macchina

12 Formato Istruzioni La generica istruzione è caratterizzata da un codice operativo (OPCODE), e da uno o due operandi.

13 Instruction Set del PIC 16F84A
L’instruction set del PIC è caratterizzato da 35 istruzioni, nella maggior parte richiedono 1 ciclo di clock per l’esecuzione, le istruzioni di salto e di chiamata a subroutine richiedono in genere 2 cicli

14 CPU e ALU La CPU è responsabile del controllo e dell’esecuzione di istruzioni e del controllo della memoria di programma e della memoria dati. La ALU, invece, è utilizzata per l’esecuzione delle istruzioni logico aritmetiche e per alcune operazioni sulla memoria. Caratteristiche CPU e ALU Tipi di istruzione: Byte-oriented Bit-oriented Literal and control Operandi dell’ ALU Status Register PIC16F84A

15 Memoria I Picmicro hanno due blocchi di memoria: Program memory
Data memory Program memory: memoria Flash, contiene il programma da eseguire, nel PIC16F84A è di 1024 locazioni di 14 bit Data memory: divisa in due aree (SFR e GPR), divisa in due banchi, attiva in lettura e scrittura, accesso diretto e indiretto, nel PIC16F84A è di 128 locazioni di 8 bit x 2

16 La Memoria L’area di memoria di un Picmicro è caratterizzata da una divisione in due blocchi: Program Memory Data Memory Questa divisione collima con la presenza di due bus distinti, uno per la memoria programma e uno per la memoria dati caratteristica dell’architettura Harvard L’area di memoria dati è divisa in due banchi distinti selezionabili tramite il bit RP0 nello Status Register

17 Organizzazione della memoria
Memoria Dati Special Function Registers General Purpose Registers EEPROM Memoria Programma

18 Lo stack e la EEPROM Stack a 8 livelli EEPROM Register

19 Lo stack Gli Stack, nell’architettura di un computer, sono regioni di memoria in cui i dati sono organizzati in logica LIFO (Last In First Out). Nei computer più moderni, ad ogni thread viene assegnata una porzione di memoria di tipo Stack. Quando la funzione viene eseguita, può aggiungere i suoi dati in cima allo Stack; la stessa funzione provvederà a svuotare lo Stack nel momento in cui termina l’esecuzione. Dal momento che i dati vengono gestiti in logica LIFO, l’allocazione dello Stack è molto semplice e tipicamente molto più veloce rispetto a quella Heap. Ulteriore vantaggio per il programmatore è dato dal fatto che la memoria è utilizzabile nuovamente dal momento in cui la funzione restituisce il risultato. Uno svantaggio è rappresentato dal fatto che, nel momento in cui i dati debbono essere disponibili per ulteriori elaborazioni, devono essere copiati prima che la stessa funzione che li ha creati, li cancelli uscendo. Altro svantaggio è legato alla dimensione dello Stack stesso (poche dozzine di Kilobytes). Allocare un quantitativo maggiore di dati in memoria può portare allo Stack Overflow.

20 Memoria dati Special Function Register General Purpose Register

21 L’indirizzamento Diretto Indiretto
l’indirizzo dal quale prelevare il dato è contenuto nell’operando l’indirizzo effettivo dal quale prelevare il dato è contenuto nel registro SFR, per far ciò si utilizza, come operando destinazione dell’istruzione, il registro INDF La Data EEPROM Memory è una memoria che conserva i dati scritti su di essa anche dopo che il PIC è stato spento, viene quindi utilizzata per memorizzare permanentemente dati di programma. L’accesso a questa memoria avviene esclusivamente per indirizzamento indiretto attraverso i registri speciali EECON1 (bit di controllo) EEDATA (dato effettivo – 8 bit) EEADR (indirizzo del dato)

22 Memoria I Picmicro sono caratterizzati da due blocchi di memorizzazione: la memoria di programma (Program Memory) e la memoria dati (Data Memory) che comprende anche la memoria dati di tipo EEPROM (Data EEPROM Memory). PROGRAM Memory Program Counter Reset Vector Interrupt Vector Stack ADDWF FSR, 0 W ← W + M[FSR] DATA Memory Special Function Register (SFR) General Purpose Register (GPR) Indirizzamento Diretto Indirizzamento Indiretto EEPROM DATA Memory Registri speciali: EECON1, EEDATA, EEADR PIC16F84A

23 Program Counter, Reset Vector, Interrupt Vector
Il program counter, (indicato anche come instruction pointer) è un registro del processore che indica a che punto della sequenza di istruzioni è arrivato il computer. A seconda della complessità della macchina, può contenere sia l’indirizzo dell’istruzione in esecuzione che l’indirizzo della istruzione che deve essere eseguita. Il program counter è automaticamente incrementato ad ogni ciclo dal momento che le istruzioni vengono prelevate sequenzialmente dalla memoria. Le chiamate a subroutine e i return interrompono la sequenza inserendo un nuovo valore nel program counter. Il Reset vector è la locazione di default cui una CPU deve puntare dopo un reset. In altri termini il reset vector è un puntatore o un indirizzo di istruzione cui la CPU deve puntare non appena è capace di eseguire istruzioni. Il reset riporta il Program Counter a 0. Un interrupt vector è l’indirizzo di memoria del gestore di Interrupts, o un indice di un array chiamato interrupt vector table o dispatch table. Tale matrice contiene gli indirizzi di memoria dei gestori di Interrupt. Quando viene generato un Interrupt, il processore salva il suo stato di esecuzione e comincia ad eseguire le istruzioni legate all’Interrupt stesso.

24 Stack Il PIC16F84A inizia l'esecuzione del programma a partire dal vettore di reset (Reset Vector) ovvero dall'istruzione memorizzata nella prima locazione di memoria (indirizzo 0x000). Dopo aver eseguito questa prima istruzione passa quindi all'istruzione successiva memorizzata nella locazione 0x001 e così via. Se non esistesse nessuna istruzione in grado di influenzare in qualche modo l'esecuzione del programma, il PICmicro arriverebbe presto ad eseguire tutte le istruzione presenti nella sua memoria fino all'ultima locazione disponibile. Ci sono istruzioni in grado di modificare il flusso di esecuzione del programma in base alle esigenze del programmatore. Una di queste istruzioni é la GOTO (dall'inglese GO TO, vai a) che ci permette di cambiare la sequenza di esecuzione e di "saltare" direttamente ad un qualsiasi punto, all'interno della memoria programma, e di continuare quindi l'esecuzione a partire da quel punto. L'istruzione GOTO consente l'inserimento a programma di un nuovo valore nel PROGRAM COUNTER ed il di conseguente salto ad una locazione qualsiasi dell'area programma del PIC.

25 Stack Un'altra che influenza il valore del PROGRAM COUNTER é la CALL (chiamata a subroutine). Questa istruzione permette di scrivere nel PROGRAM COUNTER un nuovo indirizzo di esecuzione del programma. In questo caso, però, prima di eseguire il salto, il PIC memorizza in un altro registro speciale denominato STACK, l'indirizzo di quella che sarebbe dovuta essere la successiva istruzione da eseguire se non si fosse incontrata la CALL. Esempio: ORG 0x00 Point1 movlw 10 call Point2 goto Point1 Point2 movlw 11 return

26 Stack Nello STACK é possibile depositare più indirizzi per recuperarli quando servono. Questo tipo di memorizzazione viene anche denominata LIFO dall'inglese Last In First Out, in cui l'ultimo elemento inserito (last in) deve necessariamente essere il primo ad uscire (last out). Grazie a questa caratteristica é possibile effettuare più CALL annidate ovvero l'una nell'altra e mantenere sempre traccia del punto in cui riprendere il flusso al momento che si incontra una istruzione RETURN. Il PIC16F84A dispone di uno stack a 8 livelli, ovvero uno stack che consente fino ad 8 chiamate annidate. É importante assicurasi, durante la stesura di un programma, che ci sia sempre una istruzione RETURN per ogni CALL per evitare pericolosi disallineamenti dello stack che in esecuzione possono dar adito a errori difficilmente rilevabili.

27 Porte di I/O e Funzione dei Pin
PORTA e PORTB TRISA e TRISB

28 Porte Input/Output I pin del chip rappresentano le periferiche di input/output. Sono organizzati in gruppi dette porte. Nel PIC16F84A abbiamo la PORTA e la PORTB, di 5 e 8 pin rispettivamente; entrambe bidirezionali. Tra i registri SFR abbiamo TRISA e TRISB, due registri di direzioni delle porte. Ogni bit di tale registro controlla la direzione, di input o di output, del corrispondente pin della porta a cui si riferisce il registro. PORTA PORTB

29 L’input / output Il microcontrollore in esame prevede la presenza di due porte di input/output ognuna collegata a un registro nel quale ogni bit corrisponde ad un pin esterno, i nomi dei registri sono PORTA e PORTB PORT B PORT A è una porta bidirezionale a 8 bit ogni pin di questa porta è dotato di un wake pull-up interno è dotata dell’interrupt-on-change sui pin dall’ RB7 all’ RB4 è una porta bidirezionale a 5 bit tutte le operazioni di scrittura sono di tipo read-modify-write il pin R4 è in comune con l’input del TIMER0

30 Input / Output Le più semplici periferiche per l’input/output sono i pin presenti sul chip. Un gruppo di pin, che permettono al PICmicro di controllare altri dispositivi, è una porta di I/O. PORTA PortA e TrisA Pin RA0 – RA4 RA4/T0CKl → Timer0 PORTB PortB e TrisB wake pull-up interno (RBPU=0) interrupt-on-change (RB4 ÷ RB7) PIC16F84A

31 L’input / output Il PIC 16F84 ha 13 pin usabili come ingressi o uscite singolarmente programmabili. La scelta se rendere un pin un ingresso o un' uscita viene effettuata scrivendo un valore nei registri TRISA e TRISB. All'accensione, o dopo un reset, TRISA e TRISB contengono tutti i bit a 1, pertanto i pin sono programmati automaticamente come ingressi. E' possibile cambiare la configurazione dei pin in ogni momento durante il programma, le uscite possono essere trasformate in ingressi e viceversa. I pin configurati come uscite sono di tipo push-pull: sono in grado sia di assorbire corrente dal positivo dell'alimentazione (25mA), sia di fornirla verso massa (20mA). RA4 che in uscita e' di tipo open-collector (può solo assorbire come se fosse un interruttore che si chiude verso massa). I pin configurati come ingressi sono in alta impedenza e quindi bisogna ricordarsi di collegarli a +Vcc con una resistenza. Stesso discorso vale per i pin della porta B, a meno che non si attivino le resistenze interne di pull-up.

32 Interrupts Interrupt Esterno tramite il pin RB0
TMR0 Overflow Interrupt PORTB Change Interrupt Data Eeprom write complete Interrupt

33 Interrupt In questa classe di dispositivi viene anche implementata la possibilità di avere degli interrupt che possono essere di quattro tipi: Interrupt esterno mediante il pin RB0/INT Cambiamento del valore dei pin da RB7 a RB4 Overflow del TMR0 Scrittura completata sulla EEPROM dati.

34 Interrupt Tipi di Interrupts
I Picmicro sono capaci come un vero e proprio processore di rilevare interrupt e gestirli mediante opportune strutture. Tipi di Interrupts Interrupt esterno dal pin RB0/INT Overflow di TMR0 Cambiamento del valore dei pin da RB4 a RB7 della PORTB Scrittura completata sulla EEPROM Gestione delle interruzioni Interrupts Interrupt vector INTCON register PIC16F84A

35 Caratteristiche speciali del PIC16F84A
Oscillatore programmabile (LP,XT,HS,RC) Reset Watchdog timer Sleep mode

36 Caratteristiche Speciali
Il Pic possiede diverse caratteristiche che rendono il suo utilizzo più flessibile, anche dal punto di vista del consumo energetico Alcune di queste funzioni vengono abilitate e disabilitate tramite particolari bit della Configuration Word che si trova in memoria all’indirizzo 2007h Riveste una particolare importanza il RESET, cioè la condizione in cui si deve trovare il PIC alla sua accensione (forzato all’indirizzo 000h) Ricordiamo anche la modalità di SLEEP nella quale il PIC entra nella modalità di basso consumo energetico, disabilita il clock esterno, mantiene l’ ultimo stato dei pin di I/O nel latch, mantiene i pin in alta impedenza e rimane “in ascolto” su i pin della PORTB e sul pin MCLR

37 TIMER0 e Prescaler È un contatore a 8 bit, readable e writable, può essere pilotato da un clock interno o esterno. Il valore di tale contatore è incrementato con cadenza regolare e programmabile direttamente dall’hardware del PIC. Il Prescaler è un divisore di frequenza programmabile, utilizzato nel caso in cui si voglia ridurre la frequenza di conteggio inviata al TIMER0

38 Il modulo TMR0 TMR0 Module e Prescaler

39 Caratteristiche speciali
Le caratteristiche speciali del PIC16F84A sono implementate per aumentare le capacita operative di questo dispositivo, evitando, così, di affiancargli altri componenti esterni. PRESCALER Bit della CONFIGURATION WORD [3] PWRTE Power-up Timer Enable bit 1 = Power-up Timer disabilitato 0 = Power-up Timer abilitato [2] WDTE: Watchdog Timer Enable bit 1 = Watchdog Timer abilitato 0 = Watchdog Timer disabilitato [1-0] FOSC1:FOSC0: Oscillator Selection bits 11 = RC Oscillator 10 = HS Oscillator 01 = XT Oscillator 00 = LP Oscillator RESET Pin Master Clear (MCLR) Watchdog Timer SLEEP CONFIGURATION WORD PIC16F84A


Scaricare ppt "IL MICROCONTROLLORE PIC16F84A"

Presentazioni simili


Annunci Google