Capitolo 3. Il microcontrollore PIC16F877: architettura e periferiche utilizzate

Размер: px
Начинать показ со страницы:

Download "Capitolo 3. Il microcontrollore PIC16F877: architettura e periferiche utilizzate"

Транскрипт

1 Capitolo 3 Il microcontrollore PIC16F877: architettura e periferiche utilizzate 40

2 3.1 Architettura Il microcontrollore PIC16F877 può presentare diversi tipi di contenitori: PDIP, PLCC, QFP. La scelta naturalmente è caduta sul package DIP a 40 pins (figura 3.1) che è il meno costoso ed il più facile da gestire. Le caratteristiche principali di questo dispositivo sono le seguenti [20]: Figura 3.1: Pin-out del PIC16F877 ˆ tutte le istruzioni hanno un singolo ciclo di clock eccetto rami di programma che richiedono 2 cicli; ˆ velocità operativa: DC clock di ingresso a 20MHz DC ciclo istruzione 200ns; ˆ fino a 8k x 14 words di Memoria Programma di tipo Flash fino a 368 x 8 bytes di Memoria Dati (RAM) fino a 256 x 8 bytes di Memoria Dati di tipo EEPROM; ˆ capacità di gestione interrupt fino a 14 sorgenti; ˆ stack hardware profondo 8 livelli; ˆ modalità di indirizzamento diretto ed indiretto; 41

3 ˆ reset Power-on (POR); ˆ timer Power-up (PWRT) e Oscillator Stert-up Timer (OST); ˆ timer Watchdog (WDT) con il proprio oscillatore R-C per operazioni affidabili; ˆ protezione del codice programmabile; ˆ funzionamento in modalità SLEEP per il risparmio energetico; ˆ opzioni dell oscillatore selezionabili; ˆ memorie FLASH e EEPROM in tecnologia C-MOS a bassa potenza e alta velocità; ˆ In-Circuit Serial Programming attraverso 2 pins, con alimentazione singola a 5V; ˆ il processore può accedere in lettura e scrittura alla memoria programma; ˆ intervallo di tensione nel quale il dispositivo può operare: 2.0V 5.5V; ˆ alta corrente di Sink: 25 ma; ˆ basso consumo energetico: <0.6 ma 3V, 4MHz; 20µA 3V, 32 khz; <1µA corrente di standby tipica. Le caratteristiche delle periferiche del dispositivo sono invece le seguenti: ˆ Timer0: timer/contatore ad 8 bit con prescaler ad 8 bit; ˆ Timer1: timer/contatore a 16 bit con prescaler, può essere incrementato durante la fase SLEEP attraverso un clock esterno; ˆ Timer2: timer/contatore ad 8 bit con un periodo di regstro di 8 bit, prescaler e postscaler; ˆ due moduli Capture, Compare, PWM; il modulo Capture è di 16 bit, massima risoluzione 12.5 ns; il modulo Compare è di 16 bit, massima risoluzione 200 ns; massima risoluzione del PWM: 10 bit; ˆ convertitore A/D a 10 bit multicanale; 42

4 ˆ porta seriale sincrona (Synchronous Serial Port, SSP) con SPI (modo Master) e I 2 C (Master/Slave); ˆ porta seriale USART (Universal Synchronous Asynchronous Receiver Transmitter) con indirizzi ad 8 bit più bit di parità (9 bit totali); ˆ porta parallela PSP (Parallel Slave Port) ad 8 bit, con i controlli esterni RD, W R e CS (occupando solo i pin 40/44); ˆ circuiteria di rivelazione Brown-out per il reset Brown-out (BOR). Nella figura 3.2 a pagina seguente è rappresentato lo schema a blocchi dell architettura interna del PIC16F877; verranno spiegate in dettaglio le parti che sono state fondamentali alla realizzazione di questo progetto. Andrò quindi a descrivere i blocchi principali che compongono il PIC16F877 partendo dalla memoria e dalle linee di I/O per continuare con le periferiche necessarie ad implementare le funzioni del nodo di sicurezza integrato: gli interrupt, il convertitore A/D, il modulo USART ed il modulo MSSP. 3.2 Organizzazione della memoria La memoria interna al dispositivo si può immaginare come una sequenza di celle, chiamate parole (words) tutte uguali tra loro e capaci di ospitare codici binari. Ciascuna delle N parole che formano la memoria è individuata da un indirizzo compreso tra 0 e N 1. Tramite l indirizzo si accede direttamente alla parola per leggerne o scriverne il contenuto. La parola è la più piccola unità di informazione indirizzabile della memoria, la lettura lascia lascia inalterato il contenuto della parola, mentre una nuova scrittura distrugge la precedente. La memoria del dispositivo è costituita da tre blocchi principali: ˆ Memoria Programma di tipo FLASH; ˆ Memoria Dati di tipo RAM; ˆ Memoria dati di tipo EEPROM. Ciascun blocco ha un prorio bus, in modo da potervi accedere separatamente durante lo stesso ciclo di clock. 43

5 Figura 3.2: Schema a blocchi del PIC16F877 44

6 3.2.1 Memoria Programma Flash La memoria programma ospita il programma in codice macchina preposto al funzionamrnto del microcontroller. Le celle di questa memoria accettano solo istruzioni ed eventuali valori costanti ( literal ) ma non i dati variabili che invece trovano posto nella RAM. Il microcontrollore inizia l esecuzione del programma a partire dal vettore di reset (reset vector) ovvero dall istruzione memorizzata nella prima locazione di memoria (000h). Dopo aver eseguito questa prima istruzione passa quindi all istruzione successiva memorizzata nella locazione 001h 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 istruzioni presenti nella sua memoria fino all ultima locazione disponibile. Si hanno però a disposizione istruzioni di salto, in grado di modificare il flusso di esecuzione del programma. Durante l esecuzione di queste istruzioni esso utilizza uno speciale registro chiamato Program Counter la cui funzione è quella di mantenere traccia dell indirizzo che contiene la prossima istruzione da eseguire. Questo registro viene incrementato automaticamente ad ogni istruzione eseguita per determinare il passaggio alla successiva. Al momento del reset esso viene azzerato, determinando così l inizio dell esecuzione a partire dall indirizzo 000h. L istruzione GOTO consente l inserimento a programma di un nuovo valore nel Program Counter ed il conseguente salto ad una locazione qualsiasi dell area di programma. La famiglia MCU Middle-Range, della quale fa parte il dispositivo in esame, hanno un Program Counter a 13 bit capace di indirizzare 8k x 14 bit parole di memoria programma, infatti la larghezza del bus relativo a questa memoria è di 14 bit. Poiché tutte le istruzioni sono contenute in una parola, un dispositivo con 8k x 14 words di memoria programma ha a disposizione uno spazio sufficiente per 8k istruzioni; questo fa si che sia molto facile stabilire se la program memory può contenere il programma per l applcazione desiderata. La Program Memory è divisa in 4 pagine di 2k parole ciascuna; gli indirizzi che delimitano le pagine sono: 0h 7FFh, 800h FFFh, 1800h 1FFFh. La figua 3.3 mostra la mappa di questa memoria insieme allo stack hardware profondo 8 livelli. Per saltare attraverso le pagine della Program Memory devono essere modificati i bit più significativi del Program Counter (PC) scrivendo il valore desiderato nello Special Function Register (SFR) PCLATH (Program Counter Latch High); se vengono eseguiti programmi sequenziali, il PC salterà la pagina senza interventi da parte dell utente. Quando si ha un reset, il Program Counter viene forzato all indirizzo 0000h (Reset Vector Address) e viene cancellato il contenuto del registro PCLATH. Quando viene riconosciuto un interrupt il PC viene forzato all indirizzo 0004h 45

7 Figura 3.3: Mappa della Memoria Programma 46

8 (Interrupt Vector Address) ed il PCLATH non risulta modificato. Però non appena si entra nella Service Interrupt Routine (ISR), il suo valore potrebbe essere riscritto e quindi è necessario salvare il suo contenuto così da essere richiamato al ritorno dall ISR. Il Program Counter specifica l indirizzo dell istruzione caricare per l esecuzione, ed ha una larghezza di 13 bit. Il byte basso è chiamato registro PCL. Il byte alto è chiamato PCH, contiene i bit PC<12:8> e non è direttamente leggibile e scrivibile a differenza del PCL: tutti gli aggiornamenti passano attraverso il registro PCLATH. Quando viene chiamata una istruzione di CALL per effettuare chiamate soubroutine, come per la GOTO viene scritto un nuovo indirizzo nel Program Counter; la differenza sostanziale consiste però nel fatto che prima di eseguire il salto, il PIC memorizza in un altro registro speciale, chiamato STACK, l indirizzo di quella che dovrebbe essere la successiva istruzione da eseguire se non si fosse incontrata la CALL. La memorizzazione degli indirizzi nello stack è di tipo LIFO, in cui l ultimo elemento inserito deve essere il primo ad uscire. Grazie a questa caratteristica è possibile effettuare più CALL annidate e mantenere sempre traccia del punto in cui riprendere il flusso al momento che si incontra una istruzione di RETURN. È importante assicurarsi che ci sia sempre una istruzione RETURN per ogni CALL per evitare disallineamenti dello stack che in esecuzione possono provocare errori. Lo Stack del PIC16F877 è ad 8 livelli, perciò permette una combinazione di 8 programmi chiamati ed interrotti all occorrenza, esso contiene l indirizzo di ritorno dalle ramificazioni nell esecuzione del programma principale. Lo spazio dello Stack non può far parte di altri programmi o spazio dati ed il puntatore allo Stack non è accessibile ne in lettura ne in scrittura. Il PC caricato sullo stack quando viene eseguita una istruzione CALL oppure un interrupt causa una ramificazione del programma. Lo stack è invece POPed al verificarsi dell esecuzione di una istruzione di RETURN, RETLW o RETFIE; quando esso è PUSHed o POPed il PCLATH non viene modificato. Dopo che lo stack è PUSHed 8 volte, il nono PUSH sovrascrive il valore immagazinato nel primo posto della pila, il decimo sovrascrive il secondo e così via. Non ci sono bit di stato che indicano condizioni di overflow o underflow dello stack. Per poter indirizzare più di 2k di memoria programma con gli 11 bit che compongono le istruzione di CALL e GOTO occorre utilizzare altri 2 bit che vengono presi dal PCLATH<4:3>, e il programmatore deve assicurare che i bit di selezione pagina (page select bits) corrispondano agli indirizzi della Program Memory desiderata. Quando invece viene eseguita una istruzione di RETURN l intero PC a 13 bit viene POPed dallo stack, e perciò non è richiesta la manipolazione dei bit PCLATCH<4:3>. 47

9 3.2.2 Memoria RAM La memoria destinata ai dati è una memoria RAM e contiene due serie di registri, gli Special Function Register (SFR) e i General Pourpose Register (GPR). I registri sono destinati all esecuzione delle operazioni e allo scambio delle informazioni fra la memoria e le altre unità del microcontrollore. I microcontrollori posseggono un numero limitato di registri, ma considerato che essi fanno parte integrante della RAM, sia dal punto di vista logico che fisico, si può utilizzare la RAM per attivarne altri e chiamarli con un nome a piacere. Gli SFR controllano le operazioni del dispositivo, essi controllano le periferiche e le funzioni di core, mentre i GPR costituiscono l area generale per lo stoccaggio di dati e le operazioni di scratch pad. La memoria dati è divisa in banchi per entrambe le aree GPR e SFR per permettere di indirizzare più di 96 byte di RAM General Pourpose. Per la selezione dei banchi occorrono naturalmente dei bit di controllo che si trovano nel registro STATUS (STATUS<6:5>, bit RP1 e RP0). La figura 3.4 mostra la mappa di organizzazione della memoria dati. Per muovere un valore da un registro all altro bisogna farlo passare attraverso l accumulatore W, infatti la differenza tra il registro W e le altre locazioni di memoria consiste nel fatto che, per referenziarlo, l unità logico-aritmetica non deve fornire nessun indirizzo di memoria, ma può accedervi direttamente. Questo significa che per tutti i movimenti registro-registro occorrono 2 cicli di istruzione. I registri GPR sono inizializzati all accensione del dispositivo (Power-on Reset) e non sono modificati dagli altri tipi di reset. Gli SFR sono usati dalla CPU e dai moduli periferici per controllare le operazioni del dispositivo, e sono implementati come static ram. Essi possono essere classificati in 2 gruppi, uno associato alle funzioni di core, l altro correlato alle funzioni periferiche. Qualcuno degli SFR viene inzializzato dal Power-on Reset e dagli altri reset, mentre gli altri non ne son influenzati. La Data Memory è partizionata in 4 banchi, ciascuno contiene General Pourpose Register e Special Function Register e per muoversi attraverso essi, quando si usa l indirizamento diretto, bisogna porre i bit RP0 RP1 nella configurazione corrispondente al banco desiderato (tabella 3.1) Ciascun banco si estende per 128 byte, le locazioni più basse sono riservate agli SFR mentre quelle alte ai GPR. Alcuni SFR che richiedono un elevato uso sono specchiati dal banco 0 in tutti gli altri in modo da ridurre il codice e velocizzare l accesso. L indirizzamento indiretto è un modo di indirizzare la memoria dati in cui l indirizzo di memoria nell istruzione non è fisso. Un SFR viene usato come puntatore alla locazione che bisogna leggere o scrivere, e poiché il puntatore è in RAM il con- 48

10 Figura 3.4: Mappa della Memoria RAM 49

11 RP1:RP0 Bank Tabella 3.1: Bit di selezione dei banchi di memoria tenuto può essere modificato dal programma per per creare ad esempio tabelle dove memorizzare dati. L indirizzamento indiretto è possibile usando il registro INDF. Ogni istruzione che utilizza INDF accede realmente al registro puntato dal File Select Register, FSR. Leggendo indirettamente lo stesso registro INDF (FSR=0) si leggerà 00h, invece scrivendo indirettamente su di esso si esegue una operazione nulla benché possono essere influenzati i bit di stato. Concatenando il bit IRP (STATUS <7>) agli 8 bit di FSR è possibile avere un indirizzamento a 9 bit Memoria Dati EEPROM La EEPROM Data Memory è leggibile e scrivibile durante le normali operazioni. Essa non è direttamente mappata nello spazio dei register file, è invece indirzzata indirettamente attraverso gli Special Function Register. Per leggere e scrivere su questa memoria vengono usati 4 SFR: ˆ EECON1; ˆ EECON2; ˆ EEDATA; ˆ EEADR. EEDATA mantiene gli 8 bit del dato per la lettura e la scrittura, EEADR trattiene l indirizzo della locazione EEPROM attualmente acceduta. Il registro ad 8 bit EEADR può accedere a 256 locazioni di Data EEPROM. Il registro EEADR può essere pensato come un registro di indirizzamento indiretto della EEPROM. EECON1 contiene i bit di controllo, mentre EECON2 è usato per iniziare il read/write. Il range di indirizzi comincia sempre da 0h e comprende l intera memoria disponibile. La EEPROM Data memory permette di leggere e scrivere byte, un byte scritto cancella automaticamente la locazione e scrive il nuovo dato (cancella prima di scrivere). Il tempo di scrittura è controllato da un timer on-chip, il write-time varierà 50

12 con la tensione e la temperatura come pure da chip a chip. Il registro EEADR può indirizzare fino ad un massimo di 256 bytes. I bit di indirizzo sono decodificati, perciò devono sempre essere a 0 per assicurare che l indirizzo si trova nello spazio di memoria della Data EEPROM. EECON1 è un registro di controllo i cui 5 bit più bassi non son fisicamente implementati. I tre bit più alti non sono implementati e in letttura danno 0. I bit di controllo RD e WR iniziano la lettura e la scrittura rispettivamente. Essi non possono essere cancellati ma solo settati via software. Vengono resettati via hardware alla fine dell operazione di lettura o di scrittura. Il bit WREN,che viene resettato all accensione, permetterà l operazione di scrittura una volta settato. Il bit WRERR viene settato quando una operazione di scrittura è interrotta da un reset MCLR o da un reset tme-out WDT durante il normale funzionamento. In queste situazioni, seguenti il reset, il programmatore può controllare il bit WRERR e riscrivere la locazione; il dato e l indirizzo non saranno modificati nei registri EEDATA e EEADR. Il bit di flag interrupt EEIF viene settato quando la scrittura è completa, e dovrà essere resettato via software. Il registro EECON2 non è un registro fisico, leggendo il suo contenuto si otterrà 0. Viene usato esclusivamente nelle sequenze di scrittura Data EEPROM. Per leggere una locazione nella Data Memory, il programmatore deve scrivere l indirizzo nel registro EEADR e quindi settare il bit di controllo RD (EECON1<0>). Il dato sarà disponibile nel ciclo di istruzione successivo, nel registro EEDATA; perciò può essere letto nell istruzione seguente. EEDATA manterrà questo valore fino ad un altra lettura o fino a che il programmatore non lo sovrascriverà (durante una operazione di scrittura). Per scrivere una locazione nella EEPROM, bisogna per prima cosa scrivere l indirizzo nel registro EEADR ed il dato nel registro EEDATA, e iniziare una specifica sequenza per iniziare la scrittura di ogni byte. La scrittura non inizierà se la sequenza non è eseguita correttamente (scrivere 55h in EECON2, scrivere AAh in EECON2 e settare il bit WR) per ciascun byte. Bisogna inoltre disabilitare gli interrupt durante questo segmento di codice, ed il bit WREN di EECON1 deve essere settato per abilitare la scrittura in modo da prevenire scritture accidentali nella EEPROM dovute ad una esecuzione sbagliata del codice. Il programmatore potrebbe lasciare resettato il bit WREN, eccetto quando si aggiorna la memoria. Il bit WR non viene cancellato via hardware. Dopo che una sequenza di scrittura è stata iniziata, cancellando il bit WREN non si influenza il ciclo di scrittura e WR sarà inibito a meno che il bit WREN non sia settato. 51

13 Alla fine del ciclo di scrittura, il bit WR viene cancellato via hardware e viene settato il EE Write Complete Interrupt Flag Bit (EEIF), il programmatore può abilitare questo interrupt o interrogare questo bit. EEIF deve essere cancellato via software. Per proteggere la EEPROM contro scritture spurie possono essere messi in atto vari meccanismi. All accensione WREN è cancellato. Anche il Power-up-time (72 ms di durata) previene scritture sulla EEPROM. La write initiate sequence e il bit WREN aiutano entrambi a prevenire scritture accidentali durante brown-outs, glitchers dell alimentazione e malfunzionamento software. Il modulo Data EEPROM non ha una sequenza di inzializzazione come altri moduli ma, come per la RAM general pourpose è buona idea inizializzare tutte le locazioni della data EEPROM con uno stato conosciuto. Per interfacciare il µc con il mondo esterno è opportuno soffermarsi sulle linee di I/O, il cui funzionamento è descritto nel paragrafo successivo. 3.3 Porte I/O Il PIC16F877 dispone di un totale di 33 linee di I/O organizzate in 5 porte denominate PORTA, PORTB, PORTC, PORTD, PORTE. La PORTA dispone di 5 linee configurabili sia in ingresso che in uscita identificate dalle sigle RA0, RA1, RA2, RA3, RA4; La PORTB dispone di 8 linee anch esse configurabili sia in ingresso che in uscita identificate dalle sigle RB0, RB1, RB2, RB3, RB4, RB5, RB6, RB7; anche la PORTC è una porta di I/O bidirezionale i cui pin sono indicati come RC7:RC0; la PORTD invece può essere configurata come porta I/O opuure come porta parallela slave per interfacciarsi con il bus di un microprocessore; infine la PORTE è costituita di tre linee RE2:RE0. La suddivisione delle linee in più porte è dettata dai vincoli dell architettura interna del dispositivo che prevede la gestione di dati di lunghezza massima pari ad 8 bit. Per la gestione delle linee di I/O da programma, il PIC dispone di 2 registri interni per ogni porta chiamati TRISA e PORTA per la porta A, TRISB e PORTB per la porta B e così via per le altre porte. I registri TRIS determinano il funzionamento in ingresso o in uscita di ogni singola linea, i registri PORT determinano lo stato delle linee in uscita o riportano lo stato delle linee in ingresso. Ognuno dei bit contenuti in questi registri corrisponde univocamente ad una linea di I/O. I pin di uso generale possono essere considerati come le più semplici periferiche. Essi permettono al PICmicro di controllare e monitorare altri dispositivi. Per ag- 52

14 giungere funzionalità e flessibilità al dispositivo, alcuni pin sono multiplexati con funzioni alternative. Queste funzioni dipendono da quali periferiche sono implementate nel dispositivo. In generale quando è attiva una periferica il pin corrispondente non può essere usato come un I/O generico. Per la maggior parte delle porte, la direzione di I/O del pin (ingresso o uscita) è controllata dal registro TRIS, data direction register. Il registro TRIS<X> controlla la direzione di PORT<X>. Un 1 nel TRIS fa si che la linea corrispondente sia un ingresso, mentre uno 0 la seleziona come uscita. La figura seguente (figura 3.5) mostra una tipica porta di ingresso uscita. Questo Figura 3.5: Tipica porta I/O schema non comprende funzioni periferiche che possono essere multiplexate sul pin di I/0. Leggendo il registro PORT si legge lo stato del pin mentre scrivendo su di esso si scriverà il flip-flop latch della porta. Tutte le operazioni di scrittura (come 53

15 le istruzioni BCF e BSF ) sono delle operazioni di read-modify-write, perciò una scrittura su una porta implica che il pin sia letto, il suo valore modificato, e quindi scritto sul F/F port data latch. Quando le funzioni periferiche sono multiplexate verso un pin di I/O generico, la funzionalità del pin cambia per far fronte alle richieste del modulo periferico. Un esempio ne è il modulo convertitore A/D, che forza il pin alla funzione perferica quando il dispositivo viene resettato. I pin PORT possono essere multiplexati con ingressi analogici e tensioni analogiche di riferimento (V REF ). L operazione di ciascuno di questi pin è selezionata, per essere un ingresso analogico o un I/O digitale, settando o resettando il bit di controllo nel registro ADCON1 (A/D Control Register). Quando è selezionato come un ingresso analogico, questo pin sarà letto come 0. I registri TRIS controllano la direzione del pin, anche quando esso è usato come ingresso analogico. Nella porta A il pin RA4 è un ingresso a Trigger Di Schmitt e un uscita open drain, tutti gli altri pin della porta hanno livelli di ingresso TTL e dei drivers di uscita CMOS. Tutti i pin hanno bit di direzione dato (registri TRIS) che li possono configurare come ingresso o come uscita. Settando un bit del registro TRISA si pone il corrispondente driver di uscita in modalità ad alta impedenza. Resetando il bit, invece, viene messo il contenuto del latch di uscita sul pin selezionato. La porta B è una porta bidirezionale di 8 bit, ed il corrispondente registro di direzione dati è TRISB. Anche qui settando un bit del registro TRISB si pone il corrispondente driver di uscita nella modalità di ingresso ad alta impedenza; mentre mettendo il bit a 0 il contenuto del latch di uscita passa sul pin selezionato. Ogni pin della porta B ha internamente un transistor di weak pull-up, cancellando un singolo bit di controllo, il bit RBP U (OPTION<7>), è possibile accendere tutti i pull-up. Il weak pull-up viene automaticamente spento quando la porta è configurata come uscita. I pull-up sono disabilitati all accensione dal Power-on Reset. Quattro pin della porta B, RB7:RB4, hanno una caratteristica di interrupt su cambiamento di stato. Soltanto i pin configurati come ingressi possono causare un interrupt, ad esempio se qualche pin tra RB7:RB4 è configurato come un uscita viene escluso dal confronto dell interrupt sul cambiamento di stato. I pin di ingresso (tra RB7:RB4) vengono comparati con il vecchio valore accumulato dall ultima lettura di PORTB, il disaccoppiamento prodotto da questa comparazione è mandato su una porta OR per generare il RB Port Change Interrupt con il bit di flag RBIF (INTCON<0>). L interrupt può svegliare il dispositivo dallo SLEEP, cioè farlo tornare attivo uscendo dalla modalità di funzionamento a basso consumo di potenza. Il programmatore, nell interrupt service routine, può cancellare l interrupt nalla seguente maniera: 54

16 a) una lettura o una scrittura sulla PORTB terminerà la condizione di disaccopiamento; b) cancellando il bit RBIF. Una condizione di disaccoppiamento continuerà a settare il bit di flag RBIF, ma leggendo il registro PORTB esso terminerà, e RBIF potrà essere resettato. Anche la porta C è cosituita di 8 linee bidirezionali. Ciascun pin è individualmente configurabile come ingresso o uscita tramite il registro TRISC. I pin della porta C hanno in ingresso un buffer Trigger di Schmitt. Quando si abilitano le funzioni periferiche, bisogna definire i bit del registro TRIS per ogni pin della porta. Infatti alcune periferiche controllano i bit TRIS rendendo i pin corrispondenti delle uscite, altre perferiche settano, invece, i pin come ingressi. La porta D ha le stesse caratteristiche della C, ma può essere configurata come una porta microprocessore di 8 bit (parallel slave port) settando il bit di controllo PSPMODE (TRISE<4>). In questo modo i buffer in ingresso sono di tipo TTL. La porta E possiede tre pin (RE0/RD/AN5, RE1/W R/AN6 e RE2/CS/AN7) che sono individualmente configurabili come ingressi o uscite, ed ed hanno in ingresso un buffer Trigger di Schmitt. I pin della porta E sono multiplexati con ingressi analogici, e quando vengono selezionati come tali, in lettura danno 0. Il registro TRISE controlla la direzione dei pin RE, anche quando vengono usati come ingressi analogici; ed in questo caso l operatore deve assicurare che siano degli ingressi. Un reset di accensione configura i pin come ingressi digitali. Quando il bit PSPMODE (TRISE<4>) è settato, I pin della porta E cominciano il controllo degli ingressi I/O per la porta microprocessore. In questa modalità l utente deve assicurarsi che i bit TRISE<2:0> siano settati, e che essi siano configurati come ingressi digitali. Bisogna anche assicurare che il registro ADCON1 sia configurato per I/O digitali, così che i buffer di ingresso siano TTL. 3.4 Gli Interrupt L interrupt è una particolare caratteristica dei microprocessori in generale che consente di intercettare un evento esterno, interrompere momentaneamente il programma in corso, eseguire una porzione di programma specializzata per la gestione dell evento verificatosi e riprendere l esecuzione del programma principale. Ci sono infatti eventi che può far comodo rilevare in un qualsiasi momento dell esecuzione del programma, come ad esempio l arrivo di una comunicazione seriale, l overflow di 55

17 un timer, oppure un fronte su di un pin. In questi casi entrano in gioco gli interrupt: ad un preciso evento richiesto, il controllore interrompe quello che stava facendo e passa ad una subroutine di interrupt. Nel caso della seriale, tale subroutine si incaricherà di ricevere correttamente il byte trasmesso dall esterno. Al termine della routine di interrupt il programma riprende dal punto in cui era stato lasciato. Il PIC16F877 ha fino a 14 sorgemti di interrupt [21]: ˆ il cambiamento di stato sulla linea RB0 (external interrupt, INT Pin Interrupt); ˆ la fine del conteggio del registro TMR0 (TMR0 Overflow Interrupt); ˆ il cambiamento di stato su una delle linee da RB4 a RB7 (PORTB Change Interrupt); ˆ il cambamento di stato del modulo Comparatore (Comparator Change Interrupt); ˆ interrupt sulla porta parallela (Parallel Slave Port Interrupt); ˆ interrupt sulla porta seriale (USART Interrupt); ˆ Receive Interrupt; ˆ Transmit Interrupt; ˆ la fine di una conversione A/D (A/D Conversion Complete Interrupt); ˆ interrupt sul modulo LCD (LCD Interrupt); ˆ la fine della scrittura su una locazione EEPROM (Data EEPROM Write Complete Interrupt); ˆ la fine del conteggio del timer TMR1 (Timer1 Overflow Interrupt); ˆ interrupt sul modulo Capture/Compare (CCP Interrupt); ˆ interrupt sulla porta seriale sincrona (SSP Interrupt). Qualunque sia l evento abilitato, al suo manifestarsi il PIC interrompe l esecuzione del programma in corso, memorizza automaticamente nello STACK il valore corrente del PROGRAM COUNTER e salta all istruzione presente nella locazione di memoria 0004h denominata Interrupt Vector. È a questo punto che nel codice bisogna inserire la subroutine di gestione degli interrupt denominata Interrupt Handler. Potendo abilitare più interrupt, tra i primi compiti dell interrupt handler 56

18 è la verifica di quale, tra gli eventi abilitati, ha generati l interrupt e l esecuzione della parte di programma relativo. Questo controllo può essere effettuato utilizzando gli interrupt flag. Siccome qualunque interrupt genera una chiamata alla locazione 0004h, nel registro INTCON sono presenti dei flag che indicano qual è l evento che ha generato l interrupt, ad esempio: ˆ INTF (INTCON<1>), se vale 1 l interrupt è stato generato dal cambiamento di stato sulla linea RB0 (IntPin Interrupt); ˆ TOIF (INTCON<2>), se vale 1 l interrupt è stato generato al termine del conteggio del TMR0 (RB Port Change Interrupt); ˆ RBIF (INTCON<0>), se vale 1 l interrupt è stato generato dal cambiamento di stato di una delle linee RB7:RB4 (TMR0 Overflow Interrupt). Esso contiene anche il bit di abilitazione degli interrut periferici (PEIE, Peripheral Interrupt Enable bit), che abilita o disabilita l interrupt periferico dal vectoring quando viene rispettivamente settato o azzerato. Lo schema logico degli interrupt del PIC16F877 è mostrato nella figura 3.6. Il bit di abilitazione globale degli interrupt, (GIE, Global Interrupt Enable, INT- CON<7>), abilita se settato, o disabilita, se resettato, tutti gli interrupt; esso viene inizializzato a 0 da un reset. La disabilitazione individuale di ciascun interrupt può essere fatta agendo sui bit corrispondenti del registro INTCON. Una vista dettagliata dei bit di questo registro e la descrizione delle loro funzioni si possono vedere in figura 3.7. Quando viene generato un interrupt il PIC disabilita automaticamente il bit GIE (Global Interrupt Enable) del registro INTCON in modo da disabilitare tutti gli interrupt mentre è già in esecuzione un interrupt handler. Per poter ritornare al programma principale e reinizializzare a 1 questo bit occorre utilizzare l istruzione di ritorno da un interrupt (RETFIE), che permette così di eseguire tutti gli interrupt sospesi. Non appena nell interrupt service routine la sorgente dell interrupt determinata dal polling dei flag di interrupt. Generalmete i bit di flag devono essere cancellati dall software prima di riabilitare l interrupt globale, onde evitare interrupt ricorsivi. I flag individuali vengono settati senza tener conto dei corrispondenti bit maschera o del bit GIE. Quando viene eseguita una istruzione che cancella il bit GIE, ogni interrupt che era in sospeso per l esecuzione nel prossimo ciclo viene ignorata. La CPU eseguirà una NOP (nessuna operazione) nel ciclo immediatamente seguente l istruzione che cancella il bit GIE. Gli interrupt che erano stati ignorati sono ancora in sospeso per essere serviti quando il bit GIE viene settato di nuovo. 57

19 Figura 3.6: Logica degli Interrupt [20] 58

20 Figura 3.7: Registro INTCON [20] 59

21 Siccome il dispositivo ha degli interrupt sulle periferiche ci sono altri registri, oltre al INTCON che li abilitano e che ne mantengono lo stato dei i flag: PIE1, PIE2, PIR1, PIR2. A seconda del numero di sorgenti di interrupt periferici ci possono essere più Peripheral Interrupt Enable register (PIE1, PIE2). Essi contengono i bit di abilitazione individuale, per gli interrupt periferici. Per abilitare gli interrupt periferici deve essere resettato il bit PEIE nel registro INTCON. La coppia di registri Peripheral Interrupt Flag (PIR1, PIR2) contengono i bit di flag individuali per gli interrupt periferici. I bit di flag interrupt vengono settati quando si verifica una condizione interrupt, senza tener conto dello stato dei corrispondenti bit di abilitazione o del GIE (INTCON<7>). Per questo il programma dovrebbe assicurare che gli appropriati bit di flag siano cancellati (dal software) prima di abilitare un interrupt e dopo averlo servito. La latenza di interrut è definita come il tempo che passa da un evento che genera l interrupt (quando il bit di flag viene settato) ed il momento in cui l istruzione passa all indirizzo 0004h comincia l esecuzione (quando questo interrupt è abillitato) [21]. Per gli interrupt sincroni (tipicamente interni) la latenza è di 3T CY. Per gli interrupt asincroni (tipicamente esterni), come l INT o i Port B Change Interrupt, la latenza sarà di T CY (ciclo istruzione). La latenza esatta dipende da quando si verifica l evento dell interrupt n relazione al ciclo istruzione. L interrupt esterno sul pin INT è triggerato sul fronte: sia su quello di salita se il bit INTEDG (OPTION REG<6>) è settato, oppure di discesa se INTDG è cancellato. Quando un fronte valido appare sul pin INT, il bit di flag INTF (INTCON<1>) viene settato. Questo interrupt può essere abilitato o disabilitato settando o cancellato, rispettivamente, il bit di abilitazione INTE (INTCON<4>). Il bit INTF deve essere cancellato via software nell interrupt service routine prima di riabilitarlo. L interupt INT può svegliare il processore dallo SLEEP, se il bit INTE era settato prima di entrare nello SLEEP. Durante un interrupt, sltanto il valore del PC è salvato nello stack. Di solito i programmatori possono voler salvare dei registri particolari durante un interrupt, ad esempio il registro W o lo STATUS. L azione d salvataggio dell informazione è comunemete chiamata PUSHing, mentre l azione di richiamo prima del return è detta POPing. Queste (PUSH e POP) non son istruzioni mnemoniche ma azioni concettuali. Esse possono essere implememntati da una sequenza di istruzioni. Per una comoda modularità del codice le linee che la implementano possono essere scritte dentro delle macro. 60

22 3.5 Il convertitore A/D Una delle periferiche più importanti dei PIC è quella relativa al convertitore A/D (Analogico/Digitale). Il PIC 16F877 ha 8 ingressi analogici che permettono la conversione di un segnale di ingresso analogico, il cui valore oscilli tra 0 e V DD oppure tra 0 ed una tensione esterna di riferimento, in un corrispondente numero digitale a 10 bit. Essendo presente un solo modulo convertitore, gli ingressi devono essere multiplexati da una logica interna, l uscita del multiplexer viene inviata ad un circuito di sample and hold che a sua volta pilota il vero e proprio convertitore, che genera il risultato per approssimazioni successive, come si può notare in figura 3.8 e La figura 3.8 mostra il diagramma a bloccghi del modulo A/D. Il segnale Figura 3.8: Diagramma a blocchi del modulo A/D 61

23 viene comparato con la metà della tensione di riferimento e, se maggiore, il bit MSB del risultato viene posto a 1 ; viceversa se il segnale risulta minore, tale bit è posto a zero. La comparazione successiva viene eseguita con la tensione di riferimento ridotta ad un quarto ed il bit interessato è il MSB-1 ovvero il bit 8. Si procede in questo modo (dimezzando ogni volta la tensione di comparazione) fino ad arrivare all LSB (bit 0). Con tale procedimento il tempo, per qualsiasi conversione è ben definito ed equivale al tempo di 10 comparazioni. Quindi se il segnale in ingresso vale 1 oppure 4 V il tempo di conversione sarà lo stesso. La tensione di riferimento analogica è selezionabile dal software tra la tensione di alimentazione positiva e negativa (V DD e V SS ) e il livello sui pin V REF (V REF + sul pin AN3 e V REF su AN2). Il convertitore A/D ha la caratteristica di poter operare quando il dispositivo è in modalità SLEEP, a patto di aver settato il clock A/D come derivato dall oscillatore RC interno al convertitore. Il modulo A/D possiede 4 registri [20]: ˆ A/D Result Hig register (ADRESH); ˆ A/D Result Low register (ADRESL); ˆ A/D Control register 0 (ADCON0); ˆ A/D Control register 1 (ADCON1). Il registro ADCON0 controlla le operazioni del modulo A/D, mentre il registro ADCON1 configura le funzioni dei pin della porta A; questi pin possono essere configurati come ingressi analogici (RA3 può essere anche un riferimento di tensione) o come I/O digitali. I registri ADRESH e ADRESL contengono il risultato a 10 bit della conversione A/D. Quando essa è completa il risultato viene caricato nella coppia di registri A/D result, il bit GO/DONE (ADCON0<2>) viene cancellato e il bit di flag dell interrupt A/D, ADIF, viene settato. L insieme dei registri e dei bit associati alla conversione analogico/digitale è riportato nella figura 3.9 Il canale di ingresso analogico deve avere il corrispondente bit del registro TRIS selezionato come ingresso. Dopo che il modulo A/D è stato configurato, prima che inizi la conversione deve essere acquisito il canale selezionato, e dopo che è passato il tempo di acquisizione può cominciare la conversione A/D che dovrebbe essere svolta secondo i passi elencati di seguito [21]: 1. configurare il modulo A/D; ˆ configurare i pin analogici, la tensione di riferimento e gli I/O digitali (ADCON1); ˆ selezionare i canali di ingresso A/D (ADCON0); 62

24 Figura 3.9: Registri e bit associati al modulo A/D ˆ selezionare il clock di conversione A/D (ADCON0); ˆ accendere il modulo A/D (ADCON0); 2. configurare gli interrupt A/D; ˆ cancellare il bit ADIF; ˆ settare il bit ADIE; ˆ settare il bit PEIE; ˆ settare il bit GIE 3. aspettare il tempo di acquisizione richiesto; 4. inizio conversione; ˆ settare il bit GO/DONE (ADOCON0); 5. aspettare il completamento della conversione A/D da uno dei seguenti eventi: ˆ polling per controllare la cancellazione del bit GO/DON E, oppure ˆ aspettare che si verifichi un interrupt A/D; 6. leggere il risultato della conversione nella coppia di registri ADRESH:ADRESL, cancellare il flag ADIF se richiesto; 7. per la prossima conversione si può tornare al passo 1. o al passo 2. a seconda della necessità. Il tempo di conversione per ogni bit è definito come T AD. 63

25 Prima che cominci la prossima acquisizione è richiesto un minimo di attesa di 2T AD. La figura 3.10 mostra la sequenza di conversione e i tempi usati. Il tempo di Figura 3.10: Cicli T AD nella conversione A/D acquisizione è il tempo per cui il condensatore di holding del modulo A/D è connesso al livello di tensione esterno. C è poi il tempo di conversione di 12 T AD, che è l intervallo tra il settaggio del bit GO e la fine della conversione. La somma di questi due tempi rappresenta il tempo di campionamento. Per avere la precisione specificata del convertitore A/D bisogna che al condensatore di tenuta di carica C Hold sia permesso di caricarsi completamente al livello della tensione di imgresso (figura 3.11). A questo proposito si possono fare le seguenti considerazioni: Figura 3.11: Modello dell ingresso analogico 64

26 ˆ l impedenza della sorgente analogica e quella interna di campionamento (R SS ) influiscono direttamente sul tempo richiesto per caricare C Hold ; ˆ la resistenza massima raccomandata per una sorgente analogica è 10 kw; ˆ il tempo di acquisizione diminuisce con R S ; ˆ l impedenza di switch R SS varia con la tensione di alimentazione V DD. Dopo aver selezionato il canale d ingresso analogico l acquisizione deve essere fatta prima di cominciare la conversione, per stabilirne la durata minima può essere usata l equazione della figura Essa assume che si utlizza un errore di 1/2 LSB Figura 3.12: Calcolo del tempo di acquisizione (1024 passi per la conversione) che è il massimo errore permesso perché la conversione incontri la risoluzione specificata. Il tempo di conversione A/D di ogni bit è indicato come T AD quindi la conversione a 10 bit richiede un tempo pari a 11.5 T AD per essere portata a termine. La sorgente del clock di conversione A/D è selezionabile via software tra le 4 possibili scelte appresso elencate: ˆ 2T OSC ; ˆ 8T OSC ; ˆ 32T OSC ; ˆ oscillatore RC interno. Per una corretta conversione il clock di conversione A/D (T AD ) deve essere selezionato per assicurare un minimo T AD di 1.6 µs. La figura 3.13 mostra il tempo T AD risultante derivato dalla frequenza del dispositivo e dal clock A/D selezionato. 65

27 Figura 3.13: T AD corrispondente alla frquenza operativa del dispositivo I registri ADCON1 e TRIS controllano le operazioni dei pin della porta A/D, i pin che si vuole configurare come ingressi analogici devono avere i corrispondenti bit del registro TRIS settati (ingresso) perché se essi sono a 0 verrà convertito il livello digitale di uscita (V OH oppure V OL ). Per cominciare una conversione abbiamo detto che deve essere settato il bit GO/DONE, ma ciò non può avvenire nella stessa istruzione che accende l A/D, a causa del tempo di acquisizione richiesto. Se invece si cancella GO/DON E durante la conversione questa verrà interrotta, la coppia di registri che contiene il risultato della conversione non sarà aggiornato con quella parziale. ADRESH:ADRESL continueranno a contenere l ultimo valore completo o l ultimo valore scritto in essi. Dopo l interruzione della conversione bisogna aspettate 2T AD prima di cominciare una nuova acquisizione. Dopo 2T AD l acquisizione sul canale selezionato comincia automaticamente. La coppia di registri ADRESH:ADRESL rappresentano la locazione dove viene caricato il risultato a 10 bit della conversione A/D, essi hanno una larghezza complessiva di 16 bit. Il modulo A/D da la flessibilità di giustificare a sinistra o a destra i 10 bit del risutato nei 16 bit del registro risultato a seconda del valore del bit A/D Format Select (ADFM). La figura 3.14 mostra l operazione della giustificazione del risultato A/D. I bit extra vengono caricati come 0. Quando l A/D è disabilitato questi registri possono essere usati come registri di uso generale. Il modulo A/D può operare durante la modalità SLEEP, ma si richiede che la sorgente del clock A/D sia settata su RC (ADCS1:ADCS0= 11 ). Con questa opzione il modulo A/D aspetta un ciclo istruzione prima di cominciare la conversione in modo da permettere alla istruzione SLEEP di essere eseguita. La conversione durante lo SLEEP fa si che vengano eliminati tutti i rumori interni di switching. 66

28 Figura 3.14: Giustificazione del risultato [20] Quando la conversione è completata il bit GO/DON E sarà cancellato, e il risultato caricato nel registro ADRES. Se l interrupt A/D è abilitato, il dispositivo verrà svegliato dallo SLEEP altrimenti, il modulo A/D verrà allora spento, sebbene il bit ADON rimarrà settato. Quando la sorgente del clock A/D non è RC una istruzione di SLEEP causa l interruzione della conversione corrente e lo spegnimento del modulo A/D (per risparmiare energia), sebbene il bit ADON rimarrà settato. Per permettere la conversione durante lo SLEEP bisogna assicurarsi che l istruzione SLEEP stia immadiatamente dopo quella che setta il bit GO/DON E. In sistemi dove la frequenza del dispositivo è bassa, è preferito l uso del clock RC mentre a frequenze medie o alte, T AD può essere derivato dall oscillatore del dispositivo. L errore assoluto del convertitore, cioè la massima deviazione di una transizione reale rispetto ad una transizione ideale per ogni codice, include la somma di tutti i contributi: errore di quantizzazione, errore di non linearità integrale, errore di non linearità differenziale, errore di fondo scala, errore di off set. L errore assoluto del convertitore A/D è specificato esserre < ±1LSB per V DD = V REF, ma comunque la precisione del convertitore A/D diminuisce al divergere di V DD da V REF. Per un dato intervallo di tensioni di ingresso, il codice digitale di uscita sarà lo stesso. Questo è dovuto alla quantizzazione dell ingresso analogico in un codice digitale. L errore di quantizzazione è tipicamente di 1/2 LSB ed è innato al processo di conversione analogico/digitale; la sola strada per ridurlo è quella di incrementare la risoluzione. L errore di off-set è la differenza tra la tensione ideale di ingresso relativa a 1/2 LSB e quella reale che invece provoca la transizione tra 0 e il primo LSB [11]. Gli errori di off-set traslano l intera funzione di trasferimento. 67

29 L errore di guadagno è la differenza tra la tensione ideale di ingresso che dovrebbe generare un codice uguale al fondo scala e il vero valore che invece genera tale codice. Questo errore altera la pendenza della curva di risposta reale rispetto a quella ideale [11]. La differenza tra l errore di guadagno e l errore di fondo scala è che l errore full-scale non tiene conto dell errore di off-set. L errore di non linearità si riferisce all uniformità del cambiamento del codice. Errori di non linearità possono essere calibrati fuori dal sistema. L errore di non linearità integrale misutra la transizione reale del codice contro la transizione del codice adattata dall errore di guadagno per ogni codice. La non linearità differenziale è la massima deviazione, espressa in LSB, che si può avere rispetto alla transizione ideale del codice. Se la differenza è maggiore di ±1 LSB si ha la perdita del codice di uscita [11]. Se la tensione di ingresso eccede i valori limite (V DD o V SS ) per più di 0.3 V, allora la precisione della conversione è fuori dalle specifiche. A volte aggiunto un filtro RC esterno con funzione di anti-aliasing. La resistenza R può essere selezionata per assicurare che l impedenza totale della sorgente sia mantenuta sotto i 10 kw raccomandati dalle specifiche. Ogni componente esterno connesso (attraverso alta impedenza) ad un pin di ingresso analogico (condensatore, diodo zener, ecc.) deve avere una corente di perdita (leakage) sul pin molto piccola. La funzione di trasferimento ideale del convertitore A/D è definita come segue: la prima transizione si ha quando la tensione di ingresso analogica (V AIN ) è 1 LSB (o V REF analogica/1024). Sia quella ideale che quella reale sono mostrate in figura Modulo USART Il modulo Universal Synchronous Asynchronous Receiver Transmitter (USART), conosciuto anche come Serial Communication Interface (SCI), è uno dei due moduli di I/O seriale che possiede il PIC16F877. Le modalità di funzionamento della perferica sono le seguenti: asincrona full-duplex (per comunicare con terminali dispositivi periferici quali terminali CRT e PC), sincrona-master half-duplex e sincrona-slave half-duplex (per comunicare con periferiche come circuiti intedrati A/D e D/A o EEPROM seriali ecc.). I registri che controllano la trasmissione, la ricezione e lo stato della periferica USART sono il TXSTA e il RCSTA, la cui funzioni sapecifiche sono riportate nella figure 3.16 e Per selezionare il funzionamento dei pin RC6/TX/CK e RC7/RX/DT del PIC come USART devono essere settati i bit SPEN (RCSTA<7>) e TRISC<7:6>. La possibilità di funzionamento full-duplex deriva dal fatto che sono contemporaneamente presenti due sezioni, una per la trasmissione 68

30 Figura 3.15: Funzione di trasferimento del convertitore A/D [20] 69

31 Figura 3.16: Registro TXSTA [20] 70

32 Figura 3.17: Registro RCSTA [20] 71

33 ed una per la ricezione con un unico componenete in comune: il generatore di baud rate (BRG). Esso è l unico componente comune alle due sezioni e serve sia per l operatività sincrona che per quella asincrona. È costituito dal registro SPBRG, che controlla il funzionamento di un timer ad 8 bit, e da un divisore. Nel modo asincrono il bit BRGH (TXSTA<2>) controlla anche il baud rate, mentre viene ignorato nel modo sincrono. Dati il baud rate desiderato e la frequenza dell oscillatore F OSC, per calcolare il corretto valore da inserire nel registro SPBRG ed i settaggi dei bit SYNC e BRG del registro TXSTA si hanno a disposizione tre semplici formule come si può vedere dalla tabella 3.2, dove la X rappresenta il numero compreso tra 0 e 255 da inserire nel registro SPBRG. Per facilitare i calcoli la Microchip offre le tabelle per le frequenze SYNC BRGH=0 BRGH=1 (bassa velocità) (alta velocità) 0 BaudRate = F OSC /(64 (X + 1)) BaudRate = F OSC /(16 (X + 1)) (mod. asinc.) 1 BaudRate = F OSC /(4 (X + 1)) N/A (mod. sinc.) Tabella 3.2: Formule per il Baud Rate di clock più comuni e per i baud rate più impiegati [20]. Può essere conveniente usare la modalità ad alto baud rate (BRGH=1) anche per bassi clock di baud, perché l equazione F OSC /(16 (X + 1)) può, in alcuni casi, ridurre l errore di baud rate. Come abbiamo visto nel paragrafo 2.4 la comunicazione tra il PIC ed un PC attraverso il bus RS-485 su due fili soltanto richiede che la comunicazione sia di tipo Half Duplex con il PC che funge da master ed il PIC16F877 da Slave. Per tale ragione in questo paragrafo verrà descritta soltanto la parte del modulo USART che riguarda trasmissione e ricezione nella modalità Slave Sincrona Trasmissione nella modalità Slave Sincrona Nella modalità sincrona il dato è trasmesso in maniera half-duplex (trasmissione e ricezione non avvengono nello stesso momento), quando si è in trasmissione la ricezione è inibita e viceversa. La modalità sincrona viene abilitata settando il bit SYNC (TXSTA<4>) e settando il bit SPEN (RCSTA<7>) i bit RC6/TX/CK e RC7/RX/DT vengono configurati risettivamente come CK (colck) e DT (linea dato); infine la modalità slave si configura azzerando il bit CSRC (TXSTA<7>). Il diagramma a blocchi del trasmettitore USART è mostrato in figura Il cuore 72

34 Figura 3.18: Schema a blocchi del trasmettitore USART [20] di questa sezione è il transmit shift register TSR che prende i dati dal read/write transmit buffer register TXREG, a sua volta caricato via software. Il registro TSR non è caricato finche non viene trasmesso l ultimo bit del dato precedente, non appena questo avviene il TSR viene riempito con un nuovo dato dal TXREG in un ciclo istruzione. Quest ultimo rimane allora vuoto, ciò provoca il settaggio del bit di flag interrupt TXIF (PIR1<4>) senza tener conto dello stato del bit di abilitazione TXIE (PIE1<4>); TXIF sarà resettato al caricamento di un nuovo dato in TXREG. Mentre il bit TXIF indica lo stato di TXREG, un altro bit TRMT (TXSTA<1>) mostra lo stato del registro TSR; è un bit a sola lettura settato dallo svuotamento di TSR, non è associato a nessun interrupt e non è mappato nella RAM così da poter essere interrogato dal programmatore per vedere lo stato di TSR. La trasmissione è abilitata settando il bit di abilitazione TXEN (TXSTA<5>), ma non comincerà fin quando TXREG non è stato caricato con il dato. Il primo bit del dato verrà shiftato fuori sul fronte di salita del clock sulla linea CK. Il dato in uscità sarà stabile nell intorno del fronte di discesa del clock sincrono. La trasmissione può anche cominciare dopo aver caricato il registro TXREG, cosa vantaggiosa quando si utilizzano bassi baud rate. Se durante la trasmissione viene cancellato il bit TXEN oppure vengono azzerati CREN o SREN, essa sarà interrotta, il trasmettitore resettato e i pin DT e CK portati ad alta impedenza (per la ricezione). Per selezionare la trasmissione a 9 bit, deve essere settato il bit TX9 (TX- STA<6>) e il nono bit del dato deve venir scritto in TX9D (TXSTA<0>) perché la scrittura del dato in TXREG sia un trasferimento immediato in TSR (se questo è vuoto). Il 9 bit deve essere scritto prima di scrivere gli 8 bit dato sul TSR, se questo 73

35 è vuoto, altrimenti potrebbe essere caricato in TSR un 9 bit dato non corretto. Per configurare una Synchronous Slave Transmission dovrebbero essere eseguiti i seguenti passi [20]: 1. abilitare la synchronous slave serial port settando i bit SYNC e SPEN e azzerando CSRC; 2. azzerare i bit Cren e SREN; 3. se si desidera l interrupt si settano i bit: TXIE, GIE e PEIE; 4. se si desidera la trasmissione a 9 bit si setta TX9; 5. si abilita la trasmissione settando il bit TXEN che setterà anche TXIF; 6. se è selezionata la trasmissione a 9 bit, il 9 bit può essere caricato in TX9D; 7. si carica il dato in TXREG, comincia la trasmissione; Ricezione nella modalità Slave Sincrona Il diagramma del blocco ricevitore è mostrato in figura In modalità sincrona Figura 3.19: Schema a blocchi del ricevitore USART [20] la ricezione è abilitata settando uno dei bit di abilitazione SREN (RCSTA<5>) o CREN (RCSTA<5>), ed il dato viene campionato sul pin RC7/RX/DT in corrispondenza del fronte di discesa del clock. Se è settato il bit di abilitazione SREN, 74

36 verrà ricevuta una sola parola, mentre se è settato CREN la ricezione sarà continua finché esso non verrà azzerato; se sono entrambi ad 1 è CREN ad avere la precedenza. Dopo la ricezione dell ultimo bit il dato viene trasferito dal Receive Shift Register (RSR) al registro RCREG, quando il trasferimento è completo viene settato il flag di interrupt RCIF (PIR1<5>) che è un bit a sola lettura resettato dall hardware quando RCREG è stato letto ed è vuoto. L RCREG è un registro doppiamente bufferato, è cioè un FIFO a 2 livelli. Sarà quindi possibile ricevere 2 byte di dati e trasferire al RCREG FIFO un 3 byte per iniziare lo scorrimento verso il registro RSR. All arrivo dell ultimo bit del 3 byte, se il registro RCREG è ancora pieno verrà settato il bit Overrun Error OERR (RCSTA<1>) e la parola in RSR persa. In questo caso il registro RCREG può essere letto due volte per recuperare i 2 byte nel FIFO e il bit OERR deve essere azzerato dal programmatore resettando il receive logic bit, CREN. Se il bit OERR è settato, il trasferimento dal registro RSR al RCREG è inibito, perciò è essenziale cancelllarlo se esso è al livello 1. Il 9 bit dato ricevuto viene bufferato allo stesso modo dei dati ricevuti. Poiché leggendo RCREG, il bit RX9D verrà caricato con un nuovo valore è necessario che il programmatore legga il registro RCSTA prima di leggere nuovamente RCREG allo scopo di non perdere la precedente informazione nel bit RX9D. Per eseguire una ricezione nella modalità Slave sincrona è opportuno seguire le seguenti istruzioni: 1. abilitare la synchronous slave serial port settando i bit SYNC e SPEN e azzerando il bit CSRC; 2. se sono desiderati gli interrupt si settano i bit RCIE, GIE e PEIE; 3. se si vuole la ricezione a 9 bit si setta il bit RC9; 4. si abilita la ricezione settando il bit CREN; 5. il bit di flag RCIF sarà settato quando la ricezione è completa e un interrupt sarà generato se il bit RCE è stato settato; 6. leggere il registro RCSTA per prendere il 9 bit (se abilitato) e vedere se c è stato qualche errore durante la ricezione; 7. leggere gli 8 bit del dato ricevuto dal registro RCREG; 8. se ci sono stati errori, cancellare l errore resettando il bit CREN. 75

37 3.7 Modulo SSP Il modulo Synchronous Seria Port (SSP) è una interfaccia seriale utilizzabile per comunicazioni con altre perfiferiche, tipo EEPROM seriali, registri a scorrimento, drivers per display, convertitori A/D o microcontrollori. Il modulo SSP può operare in due modalità: ˆ Serial Peripheral Interface (SPI); ˆ Inter-Integrated Circuit (I 2 C) modalità Slave; controllo della rampa di I/O, rivelazione dei bit di Start e Stop per facilitare l implementazione software dei modi Master e Multi-master. Per interfacciare la memoria EEPROM esterna utilizzerò la modalità I 2 C, perciò soltanto ad essa farò riferimento nel seguito. Il bus IIC è nato dalla Philips/Signetics per far dialogare più dispositivi su due soli fili, uno per il clock ed uno per il dato. I dati vengono trasferiti in modo seriale e alla frequenza di 100 khz o 400 khz a seconda dei dispositivi collegati. Sul bus IIC possono risiedere diversi master e diversi slave che interagiscono tramite un protocollo ormai collaudato. Concettualmente, un master inizia un dialogo con uno slave indicandolo con un indirizzo, i successivi trasferimenti di dati sono in funzione dei due dialoganti. Per cominciare e terminare la comunicazione bisogna generare le condizioni di START e di STOP. Si ha uno START quando il dato passa da livello alto a basso mentre la linea del clock è alta. Si ha invece una condizione di STOP quando il dato passa da basso ad alto con il clock a livello alto. Per indirizzare i dispositivi sono disponibili indirizzi a 7 o a 10 bit il cui formato è specificato più avanti nelle figure 3.28 e Insieme all indirizzo viene inoltre passata allo slave l indicazione se trattasi dell invio di un dato o di un comando. Tutti i dati devono necessariamente essere trasmessi con blocchi di 8 bit e non esiste un limite al numero di byte che è possibile trasmettere durante un dialogo. Dopo ogni byte ricevuto, il modulo slave genera un segnale di acknowledge (ACK), cioè di avvenuta ricezione portando bassa la linea dei dati. Se ciò non avviene, allora il Master deve subito interrompere il dialogo in corso con tale modulo. Questo meccanismo viene usato quando lo slave non ha più informazioni da inviare oppure ha altri compiti più urgenti da svolgere. In questo caso lo slave deve liberare la linea SDA portandola ad alta impedenza per permettere al master di generare la condizione di STOP che abbiamo già descritto. Al master è inoltre consentito generare la condizione di STOP anche durante un impulso di acknowledge da parte dello slave per terminare rapidamente un dialogo. 76

38 Se durante un colloquio lo slave ha necessità di ritardare la trasmissione di un byte, ad esempio perché si deve calcolare un certo risultato oppure perché attende a sua volta un segnale da un altra perfiferica, è sufficiente che forzi a basso livello la linea del clock, portando così il master in uno stato di attesa (wait) indeterminata. Il dialogo riprende quando lo slave decide di liberare la linea SCL. Per mezzo di questo protocollo che permette la messa in attesa del master anche durante il passaggio di un singolo bit, possiamo dire che in determinati momenti si invertono le funzioni dei due dialoganti. Quando uno slave si guasta e, per coincidenza setta bassa la sua linea SCL, si blocca tutto il circuito fino a quando non si provvedera alla riparazione fisica. Vediamo adesso in dettaglio le caratteristiche e il modo di funzionamento dei registri e degli altri componenti che operano nella modalità IIC La periferica SPI-IIC è stata realizzata tenendo conto di tutte le caratteristiche necessarie ad un dispositivo di tipo slave, mentre per ovvie ragioni (diversità di impiego da programma a programma) nella funzionalità master offre supporto hardware per lo sviluppo di rapidi comandi software per una veloce gestione del modulo. La periferica IIC offre sia lo standard a 100 khz sia quello a 400 khz come pure il formato di indirizzamento a 7 e a 10 bit. Due pin sono impiegati dei dati (SCL e SDA) e devono essere configurati in input o in output dal programmatore attraverso i bit corrispondenti nel registro di configurazione della porta dedicata. In registri utilizzati da questo modulo sono 5: ˆ SSP Control Register (SSPCON); ˆ SSP Control Register2 (SSPCON2); ˆ SSP Status Register (SSPSTAT); ˆ Serial Receive/Transmit Buffer (SSPBUF); ˆ SSP Shift Register (SSPSR) non direttamente accessibile; ˆ SSP Address Register (SSPADD). Una visione dettagliata dei registri SSPCON, SSPCON2 e SSPSTAT si triva nelle figure Il registro SSPCON permette il controllo delle operazioni del bus, per abilitare le funzioni del modulo SSP bisogna settare il bit SSP Enable, SSPEN (SSPCON<5>) e 4 bit di selezione modo (SSPCON<3:0>) permettono di selezionare una delle seguenti modalità: ˆ IIC Slave mode (indirizzo a 7 bit); ˆ IIC Slave mode (indirizzo a 10 bit); 77

39 Figura 3.20: Registro SSPSTAT [20] 78

40 Figura 3.21: Registro SSPCON [20] 79

41 Figura 3.22: Registro SSPCON2 [20] 80

42 ˆ IIC Master mode, clock=osc/4 (SSPADD+1) Prima di selezionare uno dei modi IIC, i pin SCL e SDA devono essere programmati come ingressi settando i bit TRIS appropriati, per poi selezionare la modalità IIC portando ad 1 il bit SSPEN. Il registro SSPSTAT contiene informazioni sullo stato del trasferimento dati, esse comprendono il rilevamento dei bit di START e di STOP, l informazione se il byte ricevuto è un dato o un indirizzo o se il prossimo byte rappresenta la parte finale di un indirizzo a 10 bit, se il trasferimento è in lettura o in scrittura. Il registro SSPBUF è quello sul quale viene scritto o da cui viene letto il dato trasferito. Il SSPSR shifta il dato dentro o fuori il dispositivo. Nelle operazioni di ricezione i registri SSPBUF e SSPSR creano un ricevitore dopiamente bufferato, la qual cosa permette di cominciare la ricezione del prossimo byte rima della lettura dell ultimo dato ricevuto. Quando viene ricevuto un byte completo, viene trasferito nel registro SSPBUF e viene settato il bit di flag SSPIF. Se viene ricevuto un altro byte completo prima che il bit SSPOV (SSPCON<6>) venga settato, il byte nel registro SSPSR viene perduto. Il registro SSPADD mantiene l indirizzo dello slave. Nel modo a 10 bit bisogna che l utente scriva il byte alto nell indirizzo ( A9 A8 0). Seguendo l indirizzo del byte alto bisogna caricare il byte basso all indirizzo (A7:A0) Modalità master La modalità master viene supportata dalla generazione di un interrupt ad ogni condizione di START o di STOP. I bit di START (S) e di STOP (P) sono azzerati da un reset oppure quando il modulo SSP viene disabilitato. Il possesso del bus può essere preso quando il bit P è settato oppure quando il bus è in IDLE e sia P che S sono a 0. Per quel che riguarda le linee SCL e SDA, in modalità master i corrispondenti pin di uscita sono sempre a basso livello come valore sulla porta, e per modificarli in 1 si deve impostare ad 1 (ricezione) il bit corrispondente alla direzione di quel pin. In pratica è stato realizzato un sistema che quando vale 1 impedisce di far scorrere corrente attraverso un eventuale linea tenuta a basso livello. L interrupt è generato dalle condizioni di START, STOP, byte trasferito; e poiché è possibile implementare sia la modalità master che la modalità slave, il software dovrà discriminare la sorgente dell interrupt. Quando si fa lavorare il PIC come master, sia i tempi che il dialogo vengono interamente gestiti dal programmatore. Se invece occorresse inserire il PIC in un circuito che ha già il modulo master i problemi non sarebbero certamente pochi, primo fra tutti il continuo dialogo con il master preesistente per capire se il dispositivo è quello indirizzato oppure no, con evidente perdita di tempo e di risorse. 81

43 Il diagramma a blocchi del modlo SSP nel caso che funzioni nella modalità IIC master è mostrato nella figura Figura 3.23: Schema a blocchi del modulo SSP (IIC Master Mode) [20] Il modo master viene abilitato settando e azzerando gli appropriati bit SSPM nel registro SSPCON e settando il bit SSPEN. Appena il modo master viene abilitato il programmatore ha a disposizione 6 opzioni: ˆ rivendicare una condizione di START su SDA e SCL; ˆ rivendicare una condizione di START ripetuto su SDA e SCL; ˆ scrivere sul registro SSPBSUF iniziando la trasmissione di un dato o di un indirizzo; ˆ generare una condizione di STOP su SDA e SCL; ˆ configurare la porta IIC per ricevere un dato; ˆ generare una condizione di acknowledge alla fine della ricezione di un byte dato. Il modulo SSP, quando configurato come IIC Master Mode non permette di accodare gli eventi, ad esempio il programmatore non può iniziare una condizione di 82

44 START e immediatamente scrivere sul registro SSPBUF per iniziare la trsmissione, prima che la condizione di START sia completata. In questo caso il SSPBF non sarà scritto, e il bit NCOL sarà settato, indicando che una scrittura sul SSPBUF non c è stata. Il dispositivo master genera tutti gli impulsi del clock seriale e le condizioni di START e STOP. Un trasferimento è terminato con una condizione di STOP o con una condizione di START ripetuta. Poiché la condizione di START ripetuta segna l inizio di un prossimo trasferimento seriale, il bus IIC non verrà rilasciato. Nella modalità Master Transmit il dato seriale viene posto in uscita attraverso SDA, mentre SCL manda in uscita il clock. Il primo byte trasmesso contiene l indirizzo dello slave ricevente, (7 bit) ed il bit Read/Write (R/W ). In questo caso il bit R/W sarà uno 0 logico. Dopo che ciascun byte è stato trasmesso viene ricevuto un bit di acknowledge. Le condizioni di START e di STOP sono degli output che servono ad indicare l inizio e la fine di un trasferimento seriale. Nella modalità Master Receiver il primo byte trasmesso contiene l indirizzo slave del dispositivo trasmittente (7 bit) e il bit R/W. In questo caso il bit R/W sarà un 1 logico. Così il primo byte trasmesso è un indirizzo slave a 7 bit seguito da un 1 ad indicare il bit di ricezione. Il baud rate generator è usato per settare la frequenza di clock SCL tra 100 khz, 400 khz o 1 MHz per le operazioni IIC. Il valore del baud rate generator è contenuto nei 7 bit più bassi del registro SSPADD. Il baud rate generator comincerà automaticamente a contare su una scrittura sul SSPBUF. Appena l operazione è completa (i.e. trasmissione dell ultimo bit dato seguita da ACK) il clock interno fermerà automaticamente il conteggio e il pin SCL rimarrà nell ultimo stato. Una tipica sequenza che si potrebbe seguire è la seguente: a) il programmatore genera una condizione di START settandil bit di abilitazione dello START, SEN (SSPCON2<0>); b) SSPIF è settato. Il modulo SSP aspetterà il tempo richiesto allo START prima che ogni altra operazione abbia luogo; c) il programmatore carica il SSPBUF con l indirizzo da trsmettere; d) l indirizzo viene shiftato fuori dal pin SDA fino a che tutti tutti gli 8 bit non sono trasmessi; e) il modulo SSP shifta nel bit ACK del dispositivo slave, e scrive il suo valore nel registro SSPCON2 (SSPCON2<6>); f) il modulo SSP genera un interrupt alla fine del 9 ciclo di clock settando il bit SSPIF; g) l utente carica il SSPBUF con 8 bit di dati; 83

45 h) il dato è shiftato fuori dal pin SDA fino a che tutti glil vengono trasmessi; i) il modulo SSP shifta nel bit ACK del dispositivo slave, e scrive il suo valore nel registro SSPCON2 (SSPCON2<6>); j) il modulo SSP genera un interrupt alla fine del 9 coclo di clock settando il bit SSPIF; k) il programmatore genera una condizione di STOP settando lo stop enable bit, PEN (SSPCON2<2>); l) un interrupt viene generato appena la condizione di STOP è completa Baud Rate Generator Nella modalità IIC, il valore per il BRG è messo nei 7 bit più bassi del registro SSPADD (figura 3.24). Figura 3.24: Schema a blocchi del baud rate generator [20] Quando il BRG è ricaricato con questo valore, comincia a contare verso il basso fino a 0 e si ferma quando è terminato un caricamento successivo. Nel modo master il BRG viene ricaricato automaticamente. Se sta avendo luogo una arbitrazione del clock, per esempio, il BRG sarà ricaricato fino a quando il pin SCL non verrà campionato alto (figura 3.25). 84

46 Figura 3.25: Temporizzazioni del baud rate generator con arbitrazione del clock [20] Temporizzazione della condizione di Start Per iniziare una condizione di START il programmatore setta lo Start condition enable bit, SEN (SSPCON2<0>). Se i pin SDA e SCL sono campionati alti, il baud rate generator è ricaricato con il contenuto di SSPADD<6:0>, e comincia il suo conteggio. Se SCL e SDA sono entrambi campionati alti quando il BRG finisce il conteggio (T BRG ), il pin SDA è portato basso. L azione dell SDA portato basso mentre SCL è alto rappresenta la condizione di START, e causa il settaggio del bit S (SSPSTAT<3>). In seguito a questo, il baud rate generator è ricaricato con il contenuto di SSPADD<6:0> e ricomincia il suo conteggio. Quando il BRG termina il conteggio (T BRG ) il bit SEN (SSPCON2<0>) sarà automaticamente cancellato dall hardware ed esso è sospeso lasciando la linea SDA bassa. La condizione di START è completa. Se all inizio della condizione di START i pin SDA e SCL sono già campionati bassi, o se durante la condizione di START la linea SCL è campionata bassa, si ha una collisione di bus: il bit di Bus Collision Interrupt Flag, BCLIF, viene settato, la condizione di START è terminata e il modulo IIC viene resettato nello stato IDLE. Se il programmatore scrive il SSPBUF quando è in progressione una sequenza di START, viene settato il bit il bit WCOL e il contenuto del buffer rimane inalterato. Poiché non è permesso l accodamento degli eventi, la scrittura sui 5 bit bassi di SSPCON2 è disabilitata finché la condizione di START è completa. 85

47 Figura 3.26: Temporizzazione del 1 bit di start [20] Temporizzazione della condizione di start ripetuta Una condizione di START Ripetuta si ha quando il bit RSEN (SSPCON2<1>) è programmato alto e il modulo logico IIC è nello stato IDLE. Quando il bit RSEN è settato, il pin SCL è rivendicato basso, il baud rate generator è caricato con il contenuto di SSPADD<5:0> e comincia il conteggio. Il pin SDA è liberato (portato alto) per un conteggio del BRG (T BRG ). Quando il baud rate generator finisce, se SDA è campionato alto, il pin SCL sarà rivendicato (portato alto). Quando il pin SCL è campionato alto il baud rate generator è ricaricato con il contenuto di SSPADD<6:0> e comincia il conteggio. SDA e SCL devono essere campionati alti per un T BRG. Questa azione è allora seguita da una rivendicazione del pin SDA (SDA=0) per un T BRG mentre SCL è alto. Dopo di ciò, il bit RSEN (SSPCON2<1>) sarà automaticamente cancellato e il baud rate generator non ricaricato, lasciando il pin SDA basso. Il bit S (SSPSTAT<3>) sarà settato non appena vine rilevata una condizione di START sui pin SDA e SCL. Il bit SSPIF non sarà settato fino a quando il baud rate generator viene spento. Se RSEN è programmato mentre qualche altro evento è in progressione, non produrrà effetti. Una collisione di bus durante durante una condizione di START ripetuta può accadere se: ˆ SDA è campionato basso quando SCL va da basso ad alto; ˆ SCL va basso prima che SDA sia rivendicato basso. Questo può indicare che un altro Master è in attesa di trasmettere un dato 1. Immediatamente dopo il settaggio del bit SSPIF, il programmatore può scrivere il SSPBUF con 7 bit indirizzo nel modo a 7 bit, o il primo indirizzo di default nel modo a 10 bit. Dopo che i primi 8 bit sono trasmessi ed un ACK ricevuto, il programmatore può allora trasmettere degli addizionali 8 bit di indirizzo (modo 10 bit) 86

48 o 8 bit di dato (modo 7 bit). Figura 3.27: Forma d onda di una condizione di start ripetuta [20] Trasmissione nella modalità Master La trasmissione di un byte dato, un indirizzo a 7 bit o la metà di un indirizzo a 10 bit è compiuto scrivendo semplicemente un valore sul registro SSPBUF. Questa azione setterà il bit Buffer Full Flag, BF, e permetterà al baud rate generator di cominciare il conteggio e iniziare la prossima trasmissione. Ciascun bit dell indirizzo/dato sarà shiftato fuori dal pin SDA dopo il fronte di caduta di SCL che è mantenuto basso per un conteggio di roll-over del baud rate generator (T BRG ). Quando il pin SCL è liberato alto, esso è mantenuto così per T BRG, il dato sul pin SDA deve rimanere stabile per questa durata e qualche hold time dopo il prossimo fronte di discesa di SCL. Dopo che l ottavo bit è shiftato fuori (il fronte di discesa dell ottavo clock), il flag BF viene cancellato e il Master libera SDA permettendo al dispositivo Slave attualmete indirizzato di rispondere con un bit ACK durante il tempo del nono bit, se c è un accopiamento di indirizzi o se il dato è propriamente ricevuto. Lo stato di ACK viene scritto nel bit ACKDT sul fronte di discesa del nono clock. Se il master riceve un acknowledge, il acknowledge status bit, ACKSTAT, viene cancellato, altrimenti il bit viene settato. Dopo il nono clock il bit SSPIF è settato e il master clock (baud rate generator) è sospeso fino a che il prossimo byte dato viene caricato nel SSPBUF lasciando SCL basso e SDA immutato (figura 3.28). Dopo la scrittura in SSPBUF, ciascun bit di indirizzo sarà shiftato fuori sul fronte di discesa di SCL fino a che tutti i 7 bit indirizzo e il bit R/W non sono completati. Sul fronte di discesa dell ottavo clock il master de-rivendicherà il pin SDA permettendo allo 87

49 slave di rispondere con un acknowledge. Sul fronte di discesa del nono clock il master campionerà il pin SDA per vedere se l indirizzo è stato recepito dallo slave. Lo stato del bit ACK è caricato nel bit di stato ACKSTAT (SSPCON2<6>). Dopo il fronte di discesa del nono clock di trasmissione dell indirizzo, il bit SSPIF è settato, il flag BF è cancellato, e il baud rate generator è spento fin quando un altra scrittura sul SSPBUF ha luogo, mantenendo SCL basso e permettendo ad SDA di flottare. Nel modo trasmettitore, il bit BF (SSPSTAT<0>) è settato quando la CPU scrive sul SSPBUF e è cancellato quando tutti gli 8 bit sono shiftati fuori. Se il programmatore scrive il SSPBF quando una trasmissione è già in progressione (i.e. SSPSR sta ancora shiftando fuori un byte dato), allora WCOL viene settato e il contenuto del buffer rimane inalterato (la scrittura non avviene). WCOL deve essere cancellato via software. In trasmissione, il bit ACKSTAT (SSPCON2<6>) è cancellato quando lo Slave ha inviato un acknowledge (ACK = 0), ed è settato quando lo Slave non restituisce l acknowledge (ACK = 1). Uno Slave invia un acknowledge quando ha recepito il suo indirizzo (compresa una chiamata generale), oppure quando ha ricevuto il suo dato senza errori Ricezione nella modalità Master La ricezione nel modo master è abilitata programmando il receive enable bit, RCEN (SSPCON2<3>). Il modulo SSP deve essere nello stato IDLE prima che il bit CREN sia settato, oppure RCEN non verrà considerato. Il baud rate generator comincia il suo conteggio, e su ogni rollover, lo stato del pin SCL cambia (da alto a basso e da basso ad alto), e il dato viene shiftato nel SSPSR. Dopo il fronte di discesa dell ottavo clock, il receive enable flag è automaticamente azzerato, il contenuto del SSPSR viene caricato nel SSPBUF, il flag BF settato, il flag SSPIF settato e il baud rate generator è sospeso dal conteggio mantenendo SCL basso. L SSP è adesso nello stato IDLE, aspettando il prossimo comando. quando il buffer è letto dalla CPU, il BF viene automaticamente cancellato. L utente può allora inviare un acknowledge alla fine della ricezione settando il bit di acknowledge sequence enable ACKEN (SSPCON2<4>) figura Nelle operazioni di ricezione il bit BF viene settato quando vengono caricati un byte indirizzo o dato in SSPBUF dal registro SSPSR, viene azzerato quando viene letto il registro SSPBUF. Il bit SSPOV viene settato quando vengono ricevuti 8 bit nel registro SSPSR, e il bit BF è già settato da una precedente ricezione. Se il programmatore scrive il registro SSPBUF quando una ricezione è già in atto (i.e. SSPSR sta ancora shiftando in un byte dato), allora il bit WCOL verrà settato ed 88

50 Figura 3.28: Temporizzazione della trasmissione a 7 o a 10 bit [20] 89

51 Figura 3.29: Temporizzazione della ricezione a 7 bit [20] 90

52 il contenuto del buffer rimarrà inalterato (non si ha scrittura) Temporizzazione di una sequenza di Acknoweledge Una sequenza di acknowledge è abilitata settando il bit di abilitazione sequenza di acknowledge ACKEN (SSPCON2<4>). Quando questo bit è settato il pin SCL è portato basso e il contenuto del acknowledge data bit è presentato sul bit SDA. Se il programmatore vuole generare un acknowledge allora il bit ACKDT potrebbe essere cancellato, altrimenti il programmatore potrebbe settare il bit ACK prima di cominciare una sequenza di acknowledge. Il baud rate generator allora conta per una periodo di rollover (T BRG ) e il pin SCL viene derivendicato (tirato alto). Quando il pin SCL viene campionato alto (arbitrazione di clock) il baud rate generator conta per T BRG. Il pin SCL è allora tirato basso. Dopo ciò il bit ACKEN è automaticamente cancellato, il baud rate generator è spento e il modulo SSP va nel modo IDLE (figura 3.30). Figura 3.30: Forma d onda della sequenza di acknowledge [20] Se il programmatore scrive il SSPBUF quando è in atto una sequenza di acknoledge il bit WCOL verrà settato ed il contenuto del buffere sarà inalterato. 91

53 3.7.8 Temporizzazione della condizione di Stop Un bit di STOP è rivendicato sul pin SDA alla fine di una ricezione/trasmissione settando il bit Stop sequence enable PEN (SSPCON2<2>). Alla fine di una trasmissione ricezione la linea SCL è mantenuta bassa dopo dopo il fronte di discesa del 9 clock. Quando il bit PEN è settato il master rivendicherà la linea SDA bassa. Quando la linea SDA è campionata bassa il baud rate generator è ricaricato e conta verso il basso fino a 0, finito il conteggio il pin SCL sarà portato alto ed un T BRG (conteggio di rollover del BRG) dopo il pin SDA sarà derivendicato. Quando il pin SDA è campionato alto mentre SCL è alto, il bit P (SSPSTAT<4>) viene settato. Un T BRG dopo il bit PRN è cancellato e il bit SSPIF è settato (figura 3.31). Ogni volta che il firmware decide di prendere il controllo del bus esso stabilirà per prima cosa se il bus è occupato testando i bit S e P nel registro SSPSTAT. Se il bus è occupato allora la CPU può essere interrotta (notified) quando è rilevato un bit di STOP (i.e. il bus è libero). Figura 3.31: Condizione di STOP in ricezione o in trasmissione [20] Arbitrazione del clock Una arbitrazione di clock si ha quando il master, durante una ricezione/trasmissione, o una condizione di START o di STOP ripetuto derivendica il pin SCL (SCL può 92

54 flottare alto), allora il baud rate generator (BRG) viene sospeso dal conteggio fino a quando SCL è effettivamente campionato alto. In questo caso il BRG è caricato con il contenuto di SSPADD<6:0> e comincia il conteggio. Così si assicura che il tempo alto del SCL sarà sempre almeno un conteggio di rollover del BRG nel caso che il clock sia mantenuto basso da un dspositivo esterno (figura 3.32). Figura 3.32: Arbitrazione di clock nella modalità trasmettitore master [20] Considerazioni sulla connessione del bus I 2 C Un dispositivo può essere collegato al bus IIC secondo la modalità mostrata in figura 3.33 Per dispositivi bus IIC standard-mode, il valore dei resistori RP e RS nella figura dipende dai seguenti parametri: ˆ tensione di alimentazione; ˆ capacità del bus; ˆ numero di dispositivi connessi (corrante di ingresso + corrente di dispersione (leakage)). La tensione di alimentazione limita il minimo valore del resistore Rp dovuto allo specificato limite della corrente di sink di 3 ma a V OLMAX = 0.4V per le rappresentazioni di uscita specificate. Per esempio con una tensione di alimentazione V DD = 5V ± 10% e V OLMAX = 0.4V a 3 ma, R P min = ( )/0.003 = 1.7kΩ. Il margine di rumore desiderato di 0.1V DD per il livello basso, limita il massimo valore di RS. I resistori sono opzionali e usati per migliorare la suscettibilità ESD. 93

55 Figura 3.33: Esempio di un dispositivo sul bus IIC [20] La capacità del bus è la capacità è la capacità totale del filo, delle connessioni e dei pin, questa capacità limita il massimo valore di RP dovuto allo spaecificato tempo di salita. Dopo aver concluso l analisi delle priferiche del PIC16F877 di particolare interesse per il progetto del nodo di sicurezza ci si potà occupare, nel seguente capitolo, della sua programmazione dando una breve descrizione della programmazione assembly e delle istruzioni specifiche del dispositivo. 94

USART PIC 16F876. R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 R-1 R/W-0 CSRC TX9 TXEN SYNC _ BRGH TRMT TX9D Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

USART PIC 16F876. R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 R-1 R/W-0 CSRC TX9 TXEN SYNC _ BRGH TRMT TX9D Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 USART PIC 16F876 L USART (Universal Synchronous Asynchronous Receiver Trasmitter) è uno dei due moduli di I/O seriali, esso è conosciuto anche come Serial Comunications Interface (SCI). L USART può essere

Подробнее

Architettura del PIC 18F452

Architettura del PIC 18F452 Controllo Digitale a.a. 2005-2006 Architettura del PIC 18F452 Ing. Federica Pascucci PIC 18F452 Caratteristiche Frequenza operativa: 40 MHz Memorie: Program FLASH memory: 32 KBytes, 16 K-istruzioni memorizzabili

Подробнее

A/D CON PIC 16F877. Sommario INTRODUZIONE... 2 SELEZIONARE I BANCHI... 2 ADCON0... 4 ADCS1, ADCS0... 4 CH2, CH1 E CH0... 5 GO/DONE... 6 ADON...

A/D CON PIC 16F877. Sommario INTRODUZIONE... 2 SELEZIONARE I BANCHI... 2 ADCON0... 4 ADCS1, ADCS0... 4 CH2, CH1 E CH0... 5 GO/DONE... 6 ADON... A/D CON PIC 16F877 Sommario INTRODUZIONE... 2 SELEZIONARE I BANCHI... 2... 4 ADCS1, ADCS0... 4 CH2, CH1 E CH0... 5 GO/DONE... 6 ADON... 7 ESEMPIO 1... 7 ADCON1... 8 ADFM... 8 PGF3, PGF1 E PGF0... 9 ESEMPIO

Подробнее

LABORATORIO DI SISTEMI

LABORATORIO DI SISTEMI ALUNNO: Fratto Claudio CLASSE: IV B Informatico ESERCITAZIONE N : 1 LABORATORIO DI SISTEMI OGGETTO: Progettare e collaudare un circuito digitale capace di copiare le informazioni di una memoria PROM in

Подробнее

Lezione 8. Figura 1. Configurazione del registro INTCON

Lezione 8. Figura 1. Configurazione del registro INTCON Lezione 8 In questa puntata, ci dedicheremo all'impiego dei cosiddetti "interrupt", che tanto incutono temore ai più inesperti. Ma che cosa sono questi interrupt? Come abbiamo già visto, un programma non

Подробнее

INTRODUZIONE alla PROGRAMMAZIONE di MICROCONTROLLORI

INTRODUZIONE alla PROGRAMMAZIONE di MICROCONTROLLORI LUCIDI LEZIONI SISTEMI ELETTRONICI INDUSTRIALI www.dismi.unimo.it (People Associated Pavan ) www.microchip.com com (Datasheet PIC - DS30292) (Mid Range Family Manual DS33023) Università degli Studi di

Подробнее

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Compito fondamentale di un S.O. è infatti la gestione dell

Подробнее

Esame di INFORMATICA

Esame di INFORMATICA Università di L Aquila Facoltà di Biotecnologie Esame di INFORMATICA Lezione 4 MACCHINA DI VON NEUMANN Anni 40 i dati e i programmi che descrivono come elaborare i dati possono essere codificati nello

Подробнее

STRUTTURE DEI SISTEMI DI CALCOLO

STRUTTURE DEI SISTEMI DI CALCOLO STRUTTURE DEI SISTEMI DI CALCOLO 2.1 Strutture dei sistemi di calcolo Funzionamento Struttura dell I/O Struttura della memoria Gerarchia delle memorie Protezione Hardware Architettura di un generico sistema

Подробнее

CPU. Maurizio Palesi

CPU. Maurizio Palesi CPU Central Processing Unit 1 Organizzazione Tipica CPU Dispositivi di I/O Unità di controllo Unità aritmetico logica (ALU) Terminale Stampante Registri CPU Memoria centrale Unità disco Bus 2 L'Esecutore

Подробнее

8 Microcontrollori PIC

8 Microcontrollori PIC 8 Microcontrollori PIC 8.1 Descrizione generale Un microcontrollore è un dispositivo elettronico che opportunamente programmato è in grado di svolgere diverse funzioni in modo autonomo. Essenzialmente

Подробнее

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino Il Sistema Operativo Il Sistema Operativo è uno strato software che: opera direttamente sull hardware; isola dai dettagli dell architettura hardware; fornisce un insieme di funzionalità di alto livello.

Подробнее

I microcontrollori. In sostanza i pic hanno le seguenti caratteristiche:

I microcontrollori. In sostanza i pic hanno le seguenti caratteristiche: I microcontrollori Con il termine di microcontrollori si intende un sistema integrato simile ad un microprocessore ma contente su un unico chip oltre la CPU, anche la memoria RAM, memoria dati, memoria

Подробнее

Architettura del computer (C.Busso)

Architettura del computer (C.Busso) Architettura del computer (C.Busso) Il computer nacque quando fu possibile costruire circuiti abbastanza complessi in logica programmata da una parte e, dall altra, pensare, ( questo è dovuto a Von Neumann)

Подробнее

Ing. Paolo Domenici PREFAZIONE

Ing. Paolo Domenici PREFAZIONE Ing. Paolo Domenici SISTEMI A MICROPROCESSORE PREFAZIONE Il corso ha lo scopo di fornire i concetti fondamentali dei sistemi a microprocessore in modo semplice e interattivo. È costituito da una parte

Подробнее

Architettura hardware

Architettura hardware Architettura dell elaboratore Architettura hardware la parte che si può prendere a calci Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione

Подробнее

Dispensa di Informatica I.1

Dispensa di Informatica I.1 IL COMPUTER: CONCETTI GENERALI Il Computer (o elaboratore) è un insieme di dispositivi di diversa natura in grado di acquisire dall'esterno dati e algoritmi e produrre in uscita i risultati dell'elaborazione.

Подробнее

Comunicazione. Prof. Antonino Mazzeo. Corso di Laurea Specialistica in Ingegneria Informatica

Comunicazione. Prof. Antonino Mazzeo. Corso di Laurea Specialistica in Ingegneria Informatica Comunicazione Seriale Prof. Antonino Mazzeo Corso di Laurea Specialistica in Ingegneria Informatica UART/USART Intel 8251A Standard Universal Synchronous/Asynchronous Receiver/Trasmitter (USART) Progettata

Подробнее

Testi di Esercizi e Quesiti 1

Testi di Esercizi e Quesiti 1 Architettura degli Elaboratori, 2009-2010 Testi di Esercizi e Quesiti 1 1. Una rete logica ha quattro variabili booleane di ingresso a 0, a 1, b 0, b 1 e due variabili booleane di uscita z 0, z 1. La specifica

Подробнее

Architettura di un sistema di calcolo

Architettura di un sistema di calcolo Richiami sulla struttura dei sistemi di calcolo Gestione delle Interruzioni Gestione della comunicazione fra processore e dispositivi periferici Gerarchia di memoria Protezione. 2.1 Architettura di un

Подробнее

09-05-07. Introduzione ai microcontrollori PIC

09-05-07. Introduzione ai microcontrollori PIC 09-05-07 Introduzione ai microcontrollori PIC Daniele Beninato: Nicola Trivellin: [email protected] [email protected] Che cosa è un microcontrollore? Un microcontrollore è un sistema a microprocessore

Подробнее

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione Il sistema di I/O Hardware di I/O Interfacce di I/O Software di I/O Introduzione 1 Sotto-sistema di I/O Insieme di metodi per controllare i dispositivi di I/O Obiettivo: Fornire ai processi utente un interfaccia

Подробнее

Gestione della memoria centrale

Gestione della memoria centrale Gestione della memoria centrale Un programma per essere eseguito deve risiedere in memoria principale e lo stesso vale per i dati su cui esso opera In un sistema multitasking molti processi vengono eseguiti

Подробнее

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU Lezione n.7 Il moltiplicatore binario e il ciclo di base di una CPU 1 SOMMARIO Architettura del moltiplicatore Architettura di base di una CPU Ciclo principale di base di una CPU Riprendiamo l analisi

Подробнее

Lezione 1 Caratteristiche principali del PIC16C84 L'hardware

Lezione 1 Caratteristiche principali del PIC16C84 L'hardware Lezione 1 Nella prima lezione del corso, cercheremo di comprendere come sia fatto internamente il controller più conosciuto di Microchip, ovvero il PIC16C84 poi evoluto nel PIC16F84. Sebbene i microcontroller

Подробнее

DMA Accesso Diretto alla Memoria

DMA Accesso Diretto alla Memoria Testo di rif.to: [Congiu] - 8.1-8.3 (pg. 241 250) 08.a DMA Accesso Diretto alla Memoria Motivazioni Organizzazione dei trasferimenti DMA Arbitraggio del bus di memoria Trasferimento di un blocco di dati

Подробнее

Sistemi di Elaborazione a Microprocessore 8259. (Controllore Program m abile delle Interruzioni) M. Rebaudengo - M. Sonza Reorda

Sistemi di Elaborazione a Microprocessore 8259. (Controllore Program m abile delle Interruzioni) M. Rebaudengo - M. Sonza Reorda 8259 (Controllore Program m abile delle Interruzioni) M. Rebaudengo - M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica 1 M. Rebaudengo, M. Sonza Reorda Generalità L'8259 è stato progettato

Подробнее

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti Il processore: unità di lo Architetture dei Calcolatori (lettere A-I) L unità di lo L unità di lo è responsabile della generazione dei segnali di lo che vengono inviati all unità di elaborazione Alcune

Подробнее

C. P. U. MEMORIA CENTRALE

C. P. U. MEMORIA CENTRALE C. P. U. INGRESSO MEMORIA CENTRALE USCITA UNITA DI MEMORIA DI MASSA La macchina di Von Neumann Negli anni 40 lo scienziato ungherese Von Neumann realizzò il primo calcolatore digitale con programma memorizzato

Подробнее

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini. Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio

Подробнее

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche Input/Output n Grande varietà di periferiche gestiscono quantità di dati differenti a velocità diverse in formati diversi n Tutti più lenti della CPU e della RAM n Necessità di avere moduli di I/O Moduli

Подробнее

introduzione I MICROCONTROLLORI

introduzione I MICROCONTROLLORI introduzione I MICROCONTROLLORI Definizione Un microcontrollore è un dispositivo elettronico programmabile Può svolgere autonomamente diverse funzioni in base al programma in esso implementato Non è la

Подробнее

Introduzione all acquisizione Dati

Introduzione all acquisizione Dati Introduzione all acquisizione Dati Laboratorio di Robotica Industriale Evoluzione della strumentazione Introduzione all acquisizione dati - 2 Trend nella strumentazione Introduzione all acquisizione dati

Подробнее

Modulo plug&play MKMB-3-e-3. Interfaccia Modbus/RTU per contatori Iskraemeco MT831 / MT860

Modulo plug&play MKMB-3-e-3. Interfaccia Modbus/RTU per contatori Iskraemeco MT831 / MT860 Modulo plug&play MKMB-3-e-3 Interfaccia Modbus/RTU per contatori Iskraemeco MT831 / MT860 Informazioni generali Il modulo MKMB-3-e-3 realizza un interfaccia seriale RS485 con protocollo Modbus/RTU. Limitazioni

Подробнее

ARCHITETTURE MICROPROGRAMMATE. 1. Necessità di un architettura microprogrammata 1. Cos è un architettura microprogrammata? 4

ARCHITETTURE MICROPROGRAMMATE. 1. Necessità di un architettura microprogrammata 1. Cos è un architettura microprogrammata? 4 ARCHITETTURE MICROPROGRAMMATE. 1 Necessità di un architettura microprogrammata 1 Cos è un architettura microprogrammata? 4 Struttura di una microistruzione. 5 Esempi di microprogrammi 9 Esempio 1 9 Esempio

Подробнее

Architettura del calcolatore

Architettura del calcolatore Architettura del calcolatore La prima decomposizione di un calcolatore è relativa a due macro-componenti: Hardware Software Architettura del calcolatore L architettura dell hardware di un calcolatore reale

Подробнее

SISTEMI DI ACQUISIZIONE

SISTEMI DI ACQUISIZIONE SISTEMI DI ACQUISIZIONE Introduzione Lo scopo dei sistemi di acquisizione dati è quello di controllo delle grandezze fisiche sia nella ricerca pura, nelle aziende e, per i piccoli utenti. I vantaggi sono:

Подробнее

Verificare il funzionamento delle memorie RAM Saper effettuare misure di collaudo. Dip switch Pulsante n.a. Octal tri-state buffer IC2 = MM 2114

Verificare il funzionamento delle memorie RAM Saper effettuare misure di collaudo. Dip switch Pulsante n.a. Octal tri-state buffer IC2 = MM 2114 SCH 31 Scrittura/lettura RAM Obiettivi Strumenti e componenti Verificare il funzionamento delle memorie RAM Saper effettuare misure di collaudo S1 S5 P1 IC1 = 74LS244 Dip switch Pulsante n.a. Octal tri-state

Подробнее

Protocolli di Comunicazione Elettronica dei Sistemi Digitali L-A Università di Bologna, Cesena

Protocolli di Comunicazione Elettronica dei Sistemi Digitali L-A Università di Bologna, Cesena Protocolli di Comunicazione Elettronica dei Sistemi Digitali L-A Università di Bologna, Cesena Aldo Romani A.a. 2005-2006 UART UART Universal Asynchronous Receiver/Transmitter Clock implicito e trasmissione

Подробнее

Laboratorio di Informatica

Laboratorio di Informatica per chimica industriale e chimica applicata e ambientale LEZIONE 4 La CPU e l esecuzione dei programmi 1 Nelle lezioni precedenti abbiamo detto che Un computer è costituito da 3 principali componenti:

Подробнее

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Подробнее

CONVERTITORI DIGITALE/ANALOGICO (DAC)

CONVERTITORI DIGITALE/ANALOGICO (DAC) CONVERTITORI DIGITALE/ANALOGICO (DAC) Un convertitore digitale/analogico (DAC: digital to analog converter) è un circuito che fornisce in uscita una grandezza analogica proporzionale alla parola di n bit

Подробнее

CONTATORI ASINCRONI. Fig. 1

CONTATORI ASINCRONI. Fig. 1 CONTATORI ASINCRONI Consideriamo di utilizzare tre Flip Flop J K secondo lo schema seguente: VCC Fig. 1 Notiamo subito che tuttigli ingressi J K sono collegati alle Vcc cioe allo stato logico 1, questo

Подробнее

ARCHITETTURA DI RETE FOLEGNANI ANDREA

ARCHITETTURA DI RETE FOLEGNANI ANDREA ARCHITETTURA DI RETE FOLEGNANI ANDREA INTRODUZIONE È denominata Architettura di rete un insieme di livelli e protocolli. Le reti sono organizzate gerarchicamente in livelli, ciascuno dei quali interagisce

Подробнее

CLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO

CLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO CLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO 1 Domanda [1 punto] Dato il formato in virgola mobile su 32 bit così definito (precisione singola): o 1

Подробнее

Nicola Amoroso. Corso introduttivo sui microcontrollori A. S. 2007 2008. Microcontrollori Microchip PIC 8 bit. namoroso@mrscuole.

Nicola Amoroso. Corso introduttivo sui microcontrollori A. S. 2007 2008. Microcontrollori Microchip PIC 8 bit. namoroso@mrscuole. Corso introduttivo sui microcontrollori A. S. 2007 2008 Microcontrollori Microchip PIC 8 bit Nicola Amoroso [email protected] NA L2 1 Microcontrollori Microchip PIC 8 bit PIC: Peripheral Interface

Подробнее

Struttura del calcolatore

Struttura del calcolatore Struttura del calcolatore Proprietà: Flessibilità: la stessa macchina può essere utilizzata per compiti differenti, nessuno dei quali è predefinito al momento della costruzione Velocità di elaborazione

Подробнее

clock DATA BUS ADDRESS BUS CONTROL BUS In realtà il bus del microprocessore si compone di 3 bus diversi: Bus indirizzi Bus di controllo

clock DATA BUS ADDRESS BUS CONTROL BUS In realtà il bus del microprocessore si compone di 3 bus diversi: Bus indirizzi Bus di controllo Schede a microprocessore Seconda parte Mondo esterno clock MEMORIA CPU PERIFERICA ADATTATORE DATA BUS ADDRESS BUS CONTROL BUS In realtà il bus del microprocessore si compone di 3 bus diversi: Bus dati

Подробнее

Circuiti amplificatori

Circuiti amplificatori Circuiti amplificatori G. Traversi Strumentazione e Misure Elettroniche Corso Integrato di Elettrotecnica e Strumentazione e Misure Elettroniche 1 Amplificatori 2 Amplificatori Se A V è negativo, l amplificatore

Подробнее

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Подробнее

Sistema acquisizione dati

Sistema acquisizione dati 12 Sistema acquisizione dati 3.1 Introduzione: Per convertire i segnali analogici trasmessi dai sensori in segnali digitali dobbiamo usare i convertitori analogici digitali o più comunemente chiamati ADC(Analog-to-Digital

Подробнее

Laboratorio di Informatica

Laboratorio di Informatica per chimica industriale e chimica applicata e ambientale LEZIONE 4 - parte II La memoria 1 La memoriaparametri di caratterizzazione Un dato dispositivo di memoria è caratterizzato da : velocità di accesso,

Подробнее

LA CORRENTE ELETTRICA

LA CORRENTE ELETTRICA L CORRENTE ELETTRIC H P h Prima che si raggiunga l equilibrio c è un intervallo di tempo dove il livello del fluido non è uguale. Il verso del movimento del fluido va dal vaso a livello maggiore () verso

Подробнее

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Подробнее

OSCILLATORI AL QUARZO: CONTASECONDI

OSCILLATORI AL QUARZO: CONTASECONDI ... OSCILLATORI AL QUARZO: CONTASECONDI di Maurizio Del Corso [email protected] Come può un cristallo di quarzo oscillare ad una determinata frequenza? Quale spiegazione fisica c è dietro a

Подробнее

Il sensore ad ultrasuoni

Il sensore ad ultrasuoni Il sensore ad ultrasuoni Caratteristiche elettriche Alimentazione: 5 Vcc Il sensore rileva oggetti da 0 cm fino a 6,45 metri. Tre diverse possibiltà per leggere il dato di uscita del sensore: 1. lettura

Подробнее

Circuiti sequenziali e elementi di memoria

Circuiti sequenziali e elementi di memoria Il Livello Logicoigitale I circuiti sequenziali Corso ACSO prof. Cristina SILVANO Politecnico di Milano Sommario Circuiti sequenziali e elementi di memoria Bistabile SR asincrono Temporizzazione e clock

Подробнее

Memoria Virtuale. Anche la memoria principale ha una dimensione limitata. memoria principale (memoria fisica) memoria secondaria (memoria virtuale)

Memoria Virtuale. Anche la memoria principale ha una dimensione limitata. memoria principale (memoria fisica) memoria secondaria (memoria virtuale) Memoria Virtuale Anche la memoria principale ha una dimensione limitata. Possiamo pensare di superare questo limite utilizzando memorie secondarie (essenzialmente dischi) e vedendo la memoria principale

Подробнее

Lezione 4. Figura 1. Schema di una tastiera a matrice di 4x4 tasti

Lezione 4. Figura 1. Schema di una tastiera a matrice di 4x4 tasti Lezione 4 Uno degli scogli maggiori per chi inizia a lavorare con i microcontroller, è l'interfacciamento con tastiere a matrice. La cosa potrebbe a prima vista sembrare complessa, ma in realtà è implementabile

Подробнее

Sistemi Operativi. 5 Gestione della memoria

Sistemi Operativi. 5 Gestione della memoria Gestione della memoria Compiti del gestore della memoria: Tenere traccia di quali parti della memoria sono libere e quali occupate. Allocare memoria ai processi che ne hanno bisogno. Deallocare la memoria

Подробнее

Trasmissione di dati al di fuori di un area locale avviene tramite la commutazione

Trasmissione di dati al di fuori di un area locale avviene tramite la commutazione Commutazione 05.2 Trasmissione di dati al di fuori di un area locale avviene tramite la Autunno 2002 Prof. Roberto De Prisco -05: Reti a di circuito Università degli studi di Salerno Laurea e Diploma in

Подробнее

PLC Programmable Logic Controller

PLC Programmable Logic Controller PLC Programmable Logic Controller Sistema elettronico, a funzionamento digitale, destinato all uso in ambito industriale, che utilizza una memoria programmabile per l archiviazione di istruzioni orientate

Подробнее

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo Sistema Operativo Fondamenti di Informatica 1 Il Sistema Operativo Il Sistema Operativo (S.O.) è un insieme di programmi interagenti che consente agli utenti e ai programmi applicativi di utilizzare al

Подробнее

Il Sistema Operativo

Il Sistema Operativo Il Sistema Operativo Il Sistema Operativo Il Sistema Operativo (S.O.) è un insieme di programmi interagenti che consente agli utenti e ai programmi applicativi di utilizzare al meglio le risorse del Sistema

Подробнее

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Manuale Amministratore Legalmail Enterprise Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Pagina 2 di 16 Manuale Amministratore Legalmail Enterprise Introduzione a Legalmail Enterprise...3

Подробнее

Progetto e realizzazione di un sistema che rileva la temperatura a distanza

Progetto e realizzazione di un sistema che rileva la temperatura a distanza Progetto e realizzazione di un sistema che rileva la temperatura a distanza Obiettivo e specifiche del progetto 1. Monitoraggio in tempo reale della temperatura in una stanza (Tacq= 4 sec, Input range=

Подробнее

Sistema operativo: Gestione della memoria

Sistema operativo: Gestione della memoria Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e

Подробнее

Laboratorio di Ingegneria del software Sistema di controllo di un ascensore Requisisti preliminari

Laboratorio di Ingegneria del software Sistema di controllo di un ascensore Requisisti preliminari Laboratorio di Ingegneria del software Sistema di controllo di un ascensore Requisisti preliminari A.A. 2012 2013 1 Introduzione Questo documento raccoglie i requisiti preliminari per il software di controllo

Подробнее

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16. Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16 Pietro Frasca Lezione 15 Martedì 24-11-2015 Struttura logica del sottosistema di I/O Processi

Подробнее

MANUALE UTENTE Fiscali Free

MANUALE UTENTE Fiscali Free MANUALE UTENTE Fiscali Free Le informazioni contenute in questa pubblicazione sono soggette a modifiche da parte della ComputerNetRimini. Il software descritto in questa pubblicazione viene rilasciato

Подробнее

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. *+33(GLWRU GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. Il programma si basa su un architettura di tasti funzionali presenti

Подробнее

ELETTRONICA Tema di Sistemi elettronici automatici Soluzione

ELETTRONICA Tema di Sistemi elettronici automatici Soluzione ELETTRONICA Tema di Sistemi elettronici automatici Soluzione La traccia presenta lo sviluppo di un progetto relativo al monitoraggio della temperatura durante un processo di produzione tipico nelle applicazione

Подробнее

Sistemi Elettronici #1. Sistemi Elettronici. Definizioni e concetti generali. Sistemi Elettronici Laurea Triennale in Elettronica A.A.

Sistemi Elettronici #1. Sistemi Elettronici. Definizioni e concetti generali. Sistemi Elettronici Laurea Triennale in Elettronica A.A. Sistemi Elettronici Definizioni e concetti generali Concetti generali Il microcontrollore è un dispositivo che raggruppa su un unico chip un processore ed un insieme di dispositivi CPU Memoria RAM Memoria

Подробнее

Manuale Terminal Manager 2.0

Manuale Terminal Manager 2.0 Manuale Terminal Manager 2.0 CREAZIONE / MODIFICA / CANCELLAZIONE TERMINALI Tramite il pulsante NUOVO possiamo aggiungere un terminale alla lista del nostro impianto. Comparirà una finestra che permette

Подробнее

Organizzazione della memoria

Organizzazione della memoria Memorizzazione dati La fase di codifica permette di esprimere qualsiasi informazione (numeri, testo, immagini, ecc) come stringhe di bit: Es: di immagine 00001001100110010010001100110010011001010010100010

Подробнее

Capitolo 11 -- Silberschatz

Capitolo 11 -- Silberschatz Implementazione del File System Capitolo 11 -- Silberschatz Implementazione del File System File system: Definizione dell aspetto del sistema agli occhi dell utente Algoritmi e strutture dati che permettono

Подробнее

Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014

Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014 Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014 Ricorda... Il ciclo di esecuzione di un istruzione è composto da sei fasi: FETCH DECODE ADDRESS

Подробнее

Il Sistema Operativo (1)

Il Sistema Operativo (1) E il software fondamentale del computer, gestisce tutto il suo funzionamento e crea un interfaccia con l utente. Le sue funzioni principali sono: Il Sistema Operativo (1) La gestione dell unità centrale

Подробнее

Corso di Sistemi di Elaborazione delle informazioni

Corso di Sistemi di Elaborazione delle informazioni Corso di Sistemi di Elaborazione delle informazioni Sistemi Operativi Francesco Fontanella Complessità del Software Software applicativo Software di sistema Sistema Operativo Hardware 2 La struttura del

Подробнее

Architettura di un calcolatore

Architettura di un calcolatore 2009-2010 Ingegneria Aerospaziale Prof. A. Palomba - Elementi di Informatica (E-Z) 7 Architettura di un calcolatore Lez. 7 1 Modello di Von Neumann Il termine modello di Von Neumann (o macchina di Von

Подробнее

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione Airone Gestione Rifiuti Funzioni di Esportazione e Importazione Airone Funzioni di Esportazione Importazione 1 Indice AIRONE GESTIONE RIFIUTI... 1 FUNZIONI DI ESPORTAZIONE E IMPORTAZIONE... 1 INDICE...

Подробнее

Excel. A cura di Luigi Labonia. e-mail: [email protected]

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it Excel A cura di Luigi Labonia e-mail: [email protected] Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo

Подробнее

Strutturazione logica dei dati: i file

Strutturazione logica dei dati: i file Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer

Подробнее

Introduzione alle misure con moduli multifunzione (DAQ)

Introduzione alle misure con moduli multifunzione (DAQ) Facoltà di Ingegneria Università degli Studi di Firenze Dipartimento di Elettronica e Telecomunicazioni Introduzione alle misure con moduli multifunzione (DAQ) Ing. Andrea Zanobini - Maggio 2012 Dipartimento

Подробнее

ELETTRONICA. L amplificatore Operazionale

ELETTRONICA. L amplificatore Operazionale ELETTRONICA L amplificatore Operazionale Amplificatore operazionale Un amplificatore operazionale è un amplificatore differenziale, accoppiato in continua e ad elevato guadagno (teoricamente infinito).

Подробнее

Gestione dei segnali analogici nei sistemi di automazione industriale con PLC.

Gestione dei segnali analogici nei sistemi di automazione industriale con PLC. Gestione dei segnali analogici nei sistemi di automazione industriale con PLC. Nelle automazioni e nell industria di processo si presenta spesso il problema di gestire segnali analogici come temperature,

Подробнее

La microarchitettura. Didattica della strumentazione digitale e sistemi a microprocessore anno accademico 2006 2007 pagina 1

La microarchitettura. Didattica della strumentazione digitale e sistemi a microprocessore anno accademico 2006 2007 pagina 1 La microarchitettura. anno accademico 2006 2007 pagina 1 Integer Java virtual machine Ogni microprocessore può avere una microarchitettura diversa, ma la modalità di funzionamento per certi aspetti è generale.

Подробнее

CORSO DI CALCOLATORI ELETTRONICI I CdL Ingegneria Biomedica (A-I)

CORSO DI CALCOLATORI ELETTRONICI I CdL Ingegneria Biomedica (A-I) CORSO DI CALCOLATORI ELETTRONICI I CdL Ingegneria Biomedica (A-I) DIS - Università degli Studi di Napoli Federico II Codifica delle Informazioni T insieme delle informazioni da rappresentare E insieme

Подробнее

Introduzione al PICmicro 16F877 PIC16F877

Introduzione al PICmicro 16F877 PIC16F877 Introduzione al PICmicro 16F877 I PICmicro (o più brevemente PIC) sono circuiti integrati prodotti dalla Microchip Technology Inc. che implementano microcontrollori (µc), cioè dei componenti che integrano

Подробнее

Memorie ROM (Read Only Memory)

Memorie ROM (Read Only Memory) Memorie ROM (Read Only Memory) Considerando la prima forma canonica, la realizzazione di qualsiasi funzione di m variabili richiede un numero di porte AND pari al numero dei suoi mintermini e di prolungare

Подробнее

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Подробнее

Gestione Risorse Umane Web

Gestione Risorse Umane Web La gestione delle risorse umane Gestione Risorse Umane Web Generazione attestati di partecipazione ai corsi di formazione (Versione V03) Premessa... 2 Configurazione del sistema... 3 Estrattore dati...

Подробнее

Registri. «a2» 2013.11.11 --- Copyright Daniele Giacomini -- [email protected] http://informaticalibera.net

Registri. «a2» 2013.11.11 --- Copyright Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net «a2» 2013.11.11 --- Copyright Daniele Giacomini -- [email protected] http://informaticalibera.net Registri Registri semplici....................................... 1823 Registri a scorrimento..................................

Подробнее

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile Problemi connessi all utilizzo di un numero di bit limitato Abbiamo visto quali sono i vantaggi dell utilizzo della rappresentazione in complemento alla base: corrispondenza biunivoca fra rappresentazione

Подробнее

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Подробнее