Controllo Digitale a.a. 2005-2006 Architettura del PIC 18F452 Ing. Federica Pascucci PIC 18F452 Caratteristiche I I Frequenza operativa: 40 MHz Memorie: I I I I I Program FLASH memory: 32 KBytes, 16 K-istruzioni memorizzabili Data RAM memory: 1536 Byte Data EEPROM memory: 256 Byte Porte di I/O: 5 (port A, B, C, D, E) Comunicazioni seriali: I I I USART (universal synchronous asynchronous receiver trasmitter) 3-wire SPI (serial peripheral interface) I2 C (inter integrated circuit) Caratteristiche I Comunicazioni parallele: PSP (parallel slave port) I Timers interni: 4 I Convertitore A/D: a 10 bits con 8 canali analogici di ingresso I Set di istruzioni: 75 I Tensione di alimentazione: +5V stabilizzata I Moltiplicatore hardware I Codice sorgente compatibile con i pic 16 e 17 Clock Tre configurazioni differenti 1. Oscillatore a cristalli o ceramico I I I I LP XP HS HS+PLL 2. Circuito RC I I RC RCIO 3. Clock esterno I I EC 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 → RC OSC2 fRC /4 RCIO OSC1 → RC OSC2 pin I/O EC OSC1 → EC OSC2 fRC /4 ECIO OSC1 → EC OSC2 pin I/O ALU Moltiplicatore hardware 8×8 VANTAGGI – 1 solo ciclo macchina per eseguire moltiplicazione – maggior throughput – codice macchina più 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 I I 32 KB di FLASH memory 16 KB di istruzioni (1 istr = 2 Byte) stack memory a 31 livelli – – – – I I I I il contenuto del PC è 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 1 ciclo macchina × istruzione 2 cicli macchina × chiamate a subroutine pipeline delle istruzioni La FLASH program memory è 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 I 16 banchi da 256 Byte (4096 Bytes) di tipo RAM indirizzabile tramite 2 bytes: I I BSR 4 lsb seleziona quale banco di accesso 8 bit indirizzo all’interno del banco I GPR General Purpose Register I SFR Special Function Register I Status Register N negative bit OV overflow bit Z zero bit DC digit carry (sui lsb) C carry (sui msb) Interrupt I due livelli di priorità – HIGH – LOW I Interrupt interni – – – – I Scadenza di timer Convertitore A/D Modulo CCP Comunicazione seriale 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 priorità viene disabilitato – L’indirizzo dell’istruzione del programma che si sta eseguendo viene inserito nello stack – Il vettore degli interrupt è caricato nel PC – ISR individua l’interrupt che si è attivato – Viene gestito l’interrupt – A fine esecuzione della routine di interrupt vengono riabilitati gli interrupt della stessa priorità Porte di I/O I Cinque porte, che possono funzionare da ingresso o da uscita, per grandezze sia analogiche che digitali A : 7 bit, bidirezionale B : 8 bit, bidirezionale C : 8 bit, bidirezionale D : 8 bit, bidirezionale E : 3 bit, bidirezionale I Tre registri TRISx definisce il verso del flusso di dati sul pin PORTx serve per la lettura livello del pin LATx mappato in memoria, serve per l’acquisizione e l’invio dei dati I Alcuni pin sono legati anche a dispositivi interni e non possono essere usati quando questi sono attivi Timer I Quattro timer TIMER0 TIMER1 TIMER2 TIMER3 I I Pre/post-scaler Collegamento a oscillatori esterni Timer0 I I I I I 8-16 bit di risoluzione Interrupt generato da overflow Va reinizializzato dopo l’interrupt Prescaler a 8 bit Può essere usato come contatore, rileva i cambiamenti di stato di un pin Timer1/Timer3 I I I I 16 bit di risoluzione Interrupt generato da overflow Va reinizializzato dopo l’interrupt Può essere usato come contatore Sincrono: clock interno Asincrono: clock esterno I I Prescaler a 2 bit Reset CCP Timer2 I I I I I I 8-bit di risoluzione Registro del periodo a 8-bit Interrupt al raggiungimento di PR2 Prescaler 2 bit Postscaler 4 bit Definisce il periodo della PWM Convertitore A/D I 8 canali in ingresso I 10 bit di risoluzione Vm ax e Vm in definibili via software I I I tensione di alimentazione riferimenti letti da particolari pin I qualsiasi piedino del convertitore può essere un ingresso A oD I i campioni sono generati con successive approssimazioni I il tempo di conversione è dato da TACQ = TAST + THCC + τ dove TAST è il tempo necessario per amplificare l’invresso, THCC è il tempo di carica del condensatore di tenuta e τ è un parametro dovuto alla temperatura, che va considerato solo se quest’ultima supera i 25◦ . I 2 moduli CCP I 3 modalità di funzionamento 1. Compare 2. Capture 3. PWM Modalità Compare/Capture Compare Memorizza il valore del Timer1 (Timer3) al verificarsi di particolari eventi sul piedino RCx/CCPx fronte di salita fronte di discesa n-esimo fronte (n=4,16) Capture Compara il valore del Timer1 (Timer3) con il registro CCPRX e al verificare dell’uguaglianza pone il piedino RCx alto basso invertito invariato Modalità PWM PWM onda quadra di periodo prefissato TPWM all’interno del quale il segnale può stare ad un valore alto per un tempo Tdc , detto duty cycle. TPWM viene realizzato impostando il registro del periodo del timer2 PR2 e si può calcolare come TPWM = PR2 · 4 · TOSC · Ptmr 2 dove TOSC è determinato dall’oscillatore esterno e Ptmr 2 è il valore del prescaler del timer2 Tdc viene inserito in appositi registri del modulo PWM ed ha una risoluzione di 10 bit