La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "IL MICROCONTROLLORE PIC16F84A Ing. Marco Giannini Architettura e Programmazione dei Microelaboratori Anno accademico 2008/2009 Prof. Giuseppe Mastronardi."— Transcript della presentazione:

1 IL MICROCONTROLLORE PIC16F84A Ing. Marco Giannini 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 lintegrato 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 Larchitettura 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 In generale si può dividere il microcontrollore in tre parti fondamentali: 1.Core (nucleo) 2. Peripherals (periferiche) 3. Special Features (caratteristiche speciali) CPU ALU Clock Reset Logic (logica di reset) Dispositivo di organizzazione della memoria (Device memory map organization). TMR0: timer/contatore a 8 bit con prescaler programmabile a 8 bit 13 pin di Input/Output con controllo di direzione Corrente elevata in uscita (25 mA) per pilotare LED Watchdog timer Modalità Sleep (power-down mode) 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. PIC16F84A Diagramma dell architettura del PIC16F84A I/O SPECIAL FEAT. CORE Caratteristiche architetturali Architettura Harvard Long Word Istruction Single Word Istruction Single Cycle Istruction Register File Architetture Instruction Pipeline

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, dallaltra le possibilità sono due: Register file (di 8 bit) Costante di unistruzione Literal and Control Operation (di 8 bit) Il registro che contiene le informazioni di stato circa lALU, 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 Linstruction set del PIC è caratterizzato da 35 istruzioni, nella maggior parte richiedono 1 ciclo di clock per lesecuzione, le istruzioni di salto e di chiamata a subroutine richiedono in genere 2 cicli

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

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 Larea 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 dellarchitettura Harvard Larea 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, nellarchitettura 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 lesecuzione. Dal momento che i dati vengono gestiti in logica LIFO, lallocazione 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 Lindirizzamento DirettoIndiretto lindirizzo dal quale prelevare il dato è contenuto nelloperando lindirizzo effettivo dal quale prelevare il dato è contenuto nel registro SFR, per far ciò si utilizza, come operando destinazione dellistruzione, 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. Laccesso 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). PIC16F84A PROGRAM Memory Program Counter Reset Vector Interrupt Vector Stack DATA Memory Special Function Register (SFR) General Purpose Register (GPR) Indirizzamento Diretto EEPROM DATA Memory Registri speciali: EECON1, EEDATA, EEADR Indirizzamento Indiretto ADDWF FSR, 0 W W + M[FSR]

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 lindirizzo dellistruzione in esecuzione che lindirizzo 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 è lindirizzo 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 allInterrupt 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 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: ORG0x00 Point1 movlwmovlw10 callcallPoint2 gotogotoPoint1 Point2 movlwmovlw11 return Stack

26 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. Stack

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 Linput / 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 A è una porta bidirezionale a 5 bit tutte le operazioni di scrittura sono di tipo read-modify-write il pin R4 è in comune con linput del TIMER0 PORT B è una porta bidirezionale a 8 bit ogni pin di questa porta è dotato di un wake pull-up interno è dotata dellinterrupt-on-change sui pin dall RB7 all RB4

30 Input / Output Le più semplici periferiche per linput/output sono i pin presenti sul chip. Un gruppo di pin, che permettono al PICmicro di controllare altri dispositivi, è una porta di I/O. PIC16F84A 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)

31 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. Linput / output

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

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

34 Interrupt I Picmicro sono capaci come un vero e proprio processore di rilevare interrupt e gestirli mediante opportune strutture. PIC16F84A Gestione delle interruzioni Interrupts 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 INTCON register Interrupt vector

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 allindirizzo 2007h Riveste una particolare importanza il RESET, cioè la condizione in cui si deve trovare il PIC alla sua accensione (forzato allindirizzo 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 dallhardware 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 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 Caratteristiche speciali Le caratteristiche speciali del PIC16F84A sono implementate per aumentare le capacita operative di questo dispositivo, evitando, così, di affiancargli altri componenti esterni. PIC16F84A CONFIGURATION WORD RESET Pin Master Clear (MCLR) Watchdog Timer SLEEP PRESCALER


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

Presentazioni simili


Annunci Google