Architettura del PIC 18F452 - dia.uniroma3.it · Clock Tre configurazioni differenti 1....

22
Controllo Digitale a.a. 2005-2006 Architettura del PIC 18F452 Ing. Federica Pascucci

Transcript of Architettura del PIC 18F452 - dia.uniroma3.it · Clock Tre configurazioni differenti 1....

Controllo Digitalea.a. 2005-2006

Architettura del PIC 18F452

Ing. Federica Pascucci

PIC 18F452

Caratteristiche

I Frequenza operativa: 40 MHzI Memorie:

I Program FLASH memory: 32 KBytes, 16 K-istruzionimemorizzabili

I Data RAM memory: 1536 ByteI Data EEPROM memory: 256 Byte

I Porte di I/O: 5 (port A, B, C, D, E)I Comunicazioni seriali:

I USART (universal synchronous asynchronous receivertrasmitter)

I 3-wire SPI (serial peripheral interface)I I2C (inter integrated circuit)

Caratteristiche

I Comunicazioni parallele: PSP (parallel slave port)I Timers interni: 4I Convertitore A/D: a 10 bits con 8 canali analogici di

ingressoI Set di istruzioni: 75I Tensione di alimentazione: +5V stabilizzataI Moltiplicatore hardwareI Codice sorgente compatibile con i pic 16 e 17

Clock

Tre configurazioni differenti

1. Oscillatore a cristalli o ceramicoI LPI XPI HSI HS+PLL

2. Circuito RCI RCI RCIO

3. Clock esternoI ECI ECIO

Oscillatore esterno

I pin OSC1 OSC2 sono collegati ad un oscillatore esterno

LP low power crystal

XP crystal/resonator

HS high speed crystal/resonator

HS+PLL high speed crystal/resonator con PLL abilitato:quadruplica la frequenza di oscillazione

Circuito RC ed clock esterno

RC OSC1 → RCOSC2 fRC /4

RCIO OSC1 → RCOSC2 pin I/O

EC OSC1 → ECOSC2 fRC /4

ECIO OSC1 → ECOSC2 pin I/O

ALU

Moltiplicatore hardware 8×8

VANTAGGI

– 1 solo ciclo macchina per eseguire moltiplicazione

– maggior throughput

– codice macchina piu snello

Memoria

Tre blocchi di memoria in ogni dispositivo:

I Program memory (FLASH)

I Data RAM memory

I Data EEPROM memory

Program e data memory utilizzano bus separati(architettura Harvard)

Program memory

I 32 KB di FLASH memoryI 16 KB di istruzioni (1 istr = 2 Byte)I stack memory a 31 livelli

– il contenuto del PC e inserito nello stack (PUSH/CALL)– viene eseguita la subroutine o servito l’interrupt– il contenuto del PC viene ripristinato (POP/RETURN)– particolari registri indicano lo stack overflow

I 1 ciclo macchina × istruzioneI 2 cicli macchina × chiamate a subroutineI pipeline delle istruzioniI La FLASH program memory e leggibile, scrivibile e

cancellabile durante le normali operazioni,– lettura: 1 Byte alla volta– scrittura: 8 Bytes in parallelo– cancellazione: 64 Bytes contemporaneamente

Data memory

I 16 banchi da 256 Byte (4096 Bytes) di tipo RAMI indirizzabile tramite 2 bytes:

I BSR 4 lsb seleziona quale banco di accessoI 8 bit indirizzo all’interno del banco

I GPR General Purpose RegisterI SFR Special Function RegisterI Status Register

N negative bitOV overflow bit

Z zero bitDC digit carry (sui lsb)

C carry (sui msb)

Interrupt

I due livelli di priorita– HIGH– LOW

I Interrupt interni– Scadenza di timer– Convertitore A/D– Modulo CCP– Comunicazione seriale

I Interrupt esterni– Cambiamento di stato sui pin delle porte di I/O

I Bit di controllo– Flag– Enable– Priority

Gestione degli Interrupt

– Il registro che abilita gli interrupt di una certa priorita vienedisabilitato

– L’indirizzo dell’istruzione del programma che si staeseguendo viene inserito nello stack

– Il vettore degli interrupt e caricato nel PC

– ISR individua l’interrupt che si e attivato

– Viene gestito l’interrupt

– A fine esecuzione della routine di interrupt vengonoriabilitati gli interrupt della stessa priorita

Porte di I/O

I Cinque porte, che possono funzionare da ingresso o dauscita, per grandezze sia analogiche che digitali

A : 7 bit, bidirezionaleB : 8 bit, bidirezionaleC : 8 bit, bidirezionaleD : 8 bit, bidirezionaleE : 3 bit, bidirezionale

I Tre registriTRISx definisce il verso del flusso di dati sul pin

PORTx serve per la lettura livello del pinLATx mappato in memoria, serve per l’acquisizione

e l’invio dei datiI Alcuni pin sono legati anche a dispositivi interni e non

possono essere usati quando questi sono attivi

Timer

I Quattro timerTIMER0TIMER1TIMER2TIMER3

I Pre/post-scalerI Collegamento a oscillatori esterni

Timer0

I 8-16 bit di risoluzioneI Interrupt generato da overflowI Va reinizializzato dopo l’interruptI Prescaler a 8 bitI Puo essere usato come contatore, rileva i

cambiamenti di stato di un pin

Timer1/Timer3

I 16 bit di risoluzioneI Interrupt generato da overflowI Va reinizializzato dopo l’interruptI Puo essere usato come contatore

Sincrono: clock internoAsincrono: clock esterno

I Prescaler a 2 bitI Reset CCP

Timer2

I 8-bit di risoluzioneI Registro del periodo a 8-bitI Interrupt al raggiungimento di PR2I Prescaler 2 bitI Postscaler 4 bitI Definisce il periodo della PWM

Convertitore A/D

I 8 canali in ingressoI 10 bit di risoluzioneI Vmax e Vmin definibili via software

I tensione di alimentazioneI riferimenti letti da particolari pin

I qualsiasi piedino del convertitore puo essere un ingresso Ao D

I i campioni sono generati con successive approssimazioniI il tempo di conversione e dato da

TACQ = TAST + THCC + τ

dove TAST e il tempo necessario per amplificare l’invresso,THCC e il tempo di carica del condensatore di tenuta e τ e unparametro dovuto alla temperatura, che va considerato solo sequest’ultima supera i 25◦.

I 2 moduli CCP

I 3 modalita di funzionamento1. Compare2. Capture3. PWM

Modalit a Compare/Capture

Compare Memorizza il valore del Timer1 (Timer3) alverificarsi di particolari eventi sul piedinoRCx/CCPx

fronte di salitafronte di discesan-esimo fronte (n=4,16)

Capture Compara il valore del Timer1 (Timer3) con ilregistro CCPRX e al verificare dell’uguaglianzapone il piedino RCx

altobassoinvertitoinvariato

Modalit a PWM

PWM onda quadra di periodo prefissato TPWM all’internodel quale il segnale puo stare ad un valore alto perun tempo Tdc , detto duty cycle.

TPWM viene realizzato impostando il registro del periododel timer2 PR2 e si puo calcolare come

TPWM = PR2 · 4 · TOSC · Ptmr2

dove TOSC e determinato dall’oscillatore esterno ePtmr2 e il valore del prescaler del timer2

Tdc viene inserito in appositi registri del modulo PWMed ha una risoluzione di 10 bit