overview PROGETTAZIONE ELETTRONICA CON MICROCONTROLLORI E PROGRAMMAZIONE IN C POLITECNICO DI MILANO PROGRAMMAZIONE C PER MICROCONTROLLORI

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "overview PROGETTAZIONE ELETTRONICA CON MICROCONTROLLORI E PROGRAMMAZIONE IN C POLITECNICO DI MILANO PROGRAMMAZIONE C PER MICROCONTROLLORI"

Transcript

1 PROGETTAZIONE ELETTRONICA CON MICROCONTROLLORI E PROGRAMMAZIONE IN C overview

2 PROGETTAZIONE ELETTRONICA CON MICROCONTROLLORI E PROGRAMMAZIONE IN C Sistemi Elettronici 19 Dicembre 2006 Politecnico di Milano overview

3 PROGETTAZIONE ELETTRONICA CON MICROCONTROLLORI E PROGRAMMAZIONE IN C Ing. Andrea Abba andrea_abba@virgilio.it Tel: Potrete scaricare: Questa Presentazione La presentazione dell Ing. Guerrieri riguardante l assembler. Il codice sorgente e i progetti in Proteus di tutti gli esempi proposti Le registrazioni audio di tutte le lezioni overview

4 OBBIETTIVI Cosa cambia programmando in C. Quando è meglio utilizzare il C rispetto all assembler. Cosa significa scrivere del codice C per microcontrollori Esempi pratici di circuiti con microcontrollori programmati in C Lettura del numero premuto su un tastierino numerico Utilizzo di un ADC per l acquisizione di valori analogici Timer conta-impulsi utilizzando gli interrupt Comunicazione seriale USART

5 Introduzione all programmazione in C per microcontrollori PIC

6 DESIGN FLOW - ASSEMBLER FILE.HEX SCRITTURA DEL MICRO SCRITTURA DEL CODICE ASSEMBLER COMPILAZIONE FILE.COD SIMULAZIONE E DEBUG FIRMWARE ERRATO

7 DESIGN FLOW LINGUAGGIO C SCRITTURA DEL MICRO C FILE.HEX SCRITTURA DEL CODICE C COMPILATORE TRADUCE IL C IN ASSEMBLER COMPILAZIONE FILE.COD SIMULAZIONE E DEBUG FIRMWARE ERRATO

8 AMBIENTE DI SVILUPPO - LINGUAGGIO C

9 AMBIENTE DI SVILUPPO - LINGUAGGIO C

10 AMBIENTE DI SVILUPPO - LINGUAGGIO C

11 AMBIENTE DI SVILUPPO - LINGUAGGIO C

12 AMBIENTE DI SVILUPPO - LINGUAGGIO C

13 PROTEUS

14 PROGRAMMATORE / DEMO-BOARD HEX

15 Linguaggio C vs. ASSEMBLER VANTAGGI DEL C 1. Portabilità del codice 2. Linguaggio strutturato 3. Tipi di dati predefiniti e user defined 4. Programmazione semplice ed intuitiva 5. Facilità di lettura del codice e debugging rapido 6. Il compilatore è in grado (il più delle volte) di ottimizzare il codice prodotto per il device scelto SVANTAGGI DEL C 1. Impossibilità di prevedere a priori (con assoluta certezza) il codice oggetto generato e di conseguenza non è sempre possibile garantire con precisione il tempo di esecuzione di una particolare porzione di codice

16 Linguaggio C vs. ASSEMBLER Codice C //Dichiara le variabili unsigned char a,b; unsigned char c; //Imposta il TRISB a 0 TRISB = 0x00; //Assegna i valori alle variabili a = 4; b = 7; //Esegui la somma c = a + b; //Copia il valore c sulla porta B PORTB = c; Codice Assembler ;Seleziona il banco di memoria 1 BSF STATUS, RP0 BCF STATUS, RP1 ;Cancella il TRISB CLRF TRISB ;Memorizza 4 nel WR MOVLW 04H ;Seleziona il banco di memoria 0 BCF STATUS, RP0 ;Memorizza in ram 4 nell indirizzo di ram 20 e 21 MOVWF 20H MOVWF 21H ;Metti nel WR il valore 0x07 MOVLW 07H ;Memorizza in ram 7 all indirizzo di ram 21 MOVWF 22H ;Esegui la somma tra il WR e la posizione 20 ADDWF 21H ;Copia il risultato nel WR MOVFW 21H ;Copia il WR sulla porta B MOVWF 06H

17 Linguaggio C vs. ASSEMBLER Codice C //Dichiara le variabili unsigned char a,b; unsigned char c; //Imposta il TRISB a 0 TRISB = 0x00; Portabilità: Affinché possa funzionare su un altra macchina è sufficiente definire due variabili TRISB e PORTB che puntino corrispondentemente al registro I/O select e al registro PORTA del nuovo microcontrollore //Assegna i valori alle variabili a = 4; b = 7; //Esegui la somma c = a + b; //Copia il valore c sulla porta B PORTB = c;

18 Linguaggio C vs. ASSEMBLER Codice Assembler ;Seleziona il banco di memoria 1 BSF STATUS, RP0 BCF STATUS, RP1 ;Cancella il TRISB CLRF TRISB ;Memorizza 4 nel Working Register MOVLW 0x04 ;Seleziona il banco di memoria 0 BCF STATUS, RP0 ;Memorizza in ram 4 nell indirizzo di ram 20 e 21 MOVWF 20H MOVWF 21H ;Metti nel WR il valore 0x07 MOVLW 07H ;Memorizza in ram 7 all indirizzo di ram 21 MOVWF 22H ;Esegui la somma tra il WR e la posizione 20 ADDWF 21H ;Copia il risultato nel WR MOVWF 21H ;Copia il WR sulla porta B MOVWF 06H Portabilità: Affinché possa funzionare su un altra macchina è necessario riscrivere completamente tutta la sintassi delle varie istruzioni. I registri siano mappati ad indirizzi differenti da micro a micro Dimensione e posizione della ram varia da architettura ad un altra Le risorse fra varie MPU sono tra di loro differenti IL CODICE ASSEMBLER NON E RIUTILIZZABILE, IL PIU DELLE VOLTE ANCHE PASSANDO DA UNA FAMIGLIA ALL ALTRA DELLA STESSA CASA.

19 Linguaggio C vs. ASSEMBLER Il compilatore C traduce il codice ad alto livello in un codice Assembler compatibile con il target device scelto. Un buon compilatore inoltre sa ottimizzare il software scritto in modo che venga eseguito il più velocemente possibile. ;Seleziona il banco di memoria 1 BSF STATUS, RP0 BCF STATUS, RP1 ;Cancella il TRISB CLRF TRISB ;Memorizza 4 nel WR MOVLW 04H ;somma 7 a WR e scrivi in WR ADDWL 07H ;Cambia il banco a 0 BCF STATUS, RP0 ;Copia il WR sulla porta B MOVWF 0006H Lo stesso codice assembler prima mostrato ottimizzato

20 Linguaggio C vs. ASSEMBLER In C non è necessario scrivere le istruzioni per il cambio di banco. Sarà il compilatore, ove necessario a inserirle. Il compilatore ottimizza la posizione delle istruzioni che accedono al register file in modo da minimizzare il numero di cambio banchi eseguiti //Imposta il TRISA TRISA = 0x01; //Scrivi su PORTA PORTA = 0xA5; //Imposta il TRISB TRISB = 0x00; //Scrivi sulla PORTB PORTB = 0x45; RESCHEDULING //Imposta il TRISA TRISA = 0x01; //Imposta il TRISB TRISB = 0x00; //Scrivi sulla PORTB PORTB = 0x45; //Scrivi su PORTA PORTA = 0xA5;

21 Linguaggio C vs. ASSEMBLER //Scelgo il banco 1 BSF STATUS, RP0 //Imposta il TRISA MOVLW 01H MOVWF TRISA //Scelgo il banco 0 BCF STATUS, RP0 //Scrivi su PORTA MOVLW A5H MOVWF PORTA //Scelgo il banco 1 BSF STATUS, RP0 //Imposta il TRISB MOVLW 00H MOVWF TRISB //Scelgo il banco 1 BCF STATUS, RP0 //Scrivi sulla PORTB MOVLW 45H MOVWF PORTB RESCHEDULING //Scelgo il banco 1 BSF STATUS, RP0 //Imposta il TRISA MOVLW 01H MOVWF TRISA //Imposta il TRISB MOVLW 00H MOVWF TRISB //Scelgo il banco 0 BCF STATUS, RP0 //Scrivi su PORTA MOVLW A5H MOVWF PORTA //Scrivi sulla PORTB MOVLW 45H MOVWF PORTB

22 LINGUAGGIO STRUTTURATO If (a==1) { } else { } switch(b) { case 1:. break; case 2:. break; default: } for(i = 0; i<100; i++) { tot+=n[i]; }

23 TIPI DI DATI typedef struct { char nome[8]; int eta; }t_persona;. unsigned char a; int b; double c; t_persona persona; a = 2; b = 1223; c = ((double)(a + b)) * 3.14; persona.nome Persona.eta = 5;

24 PROBLEMA DEL REALTIME Non posso conoscere a priori e con sicurezza con quante istruzioni assembler il compilatore tradurrà un istruzione C Esso dipende dalle ottimizzazioni abilitate, dalle istruzioni circostanti e dalla versione di compilatore Non posso quindi scrivere solamente in C delle funzioni time-critical come una routine di ritardo

25 CODICE C PER MICROCONTROLLORI Scrivere codice C per microcontrollori è formalmente simile a scrivere programmi per un PC. E importante ricordarsi che non si ha a disposizione una standard output e una standard input ma delle I/O Esistono vari compilatori C per PIC; generalmente i compilatori hanno in comune: Istruzioni del linguaggio identiche all ANSI C Tipi di dati supportati (bit, char, int, long, double) I vari compilatori spesso non hanno in comune alcune particolari istruzioni per accedere alle risorse hardware del microcontrollore.

26 CODICE C PER MICROCONTROLLORI Attenzione. Scrivere codice C per microcontrollori non è come scriverlo per PC dove le risorse sono illimitate. RAM: ROM: CPU: 64byte 4Kbyte 1kword 256 kword Velocità limitata a qualche MIPS CPU a 8 bit (interi). Pipe-line estremamente semplice. Stack piccolissimo: 8 livelli. Non è possibile pensare alla ricorsione Il programmatore deve essere abile a sfruttare le poche risorse di cui dispone in modo tale che in nessun punto del firmware ci siano istruzioni inutili.

27 CODICE C PER MICROCONTROLLORI Attenzione. Scrivere codice C per microcontrollori non è come scriverlo per PC dove le risorse sono illimitate. RAM: ROM : CPU: 1 4 GByte 100GByte 2TByte Velocità: Migliaia di MIPS CPU a 32/64 bit con unità in virgola mobile. Pipe-line complessissima con branch prediction e trace cache Stack praticamente illimitato

28 CODICE C PER MICROCONTROLLORI RAM: 64byte 4Kbyte La mia applicazione deve acquisire valori e trovare massimo e minimo. I valori acquisiti devono essere memorizzati su una flash memory esterna. Leggi 1 valore Memorizza in RAM X Visualizza MAX - MIN Percorri il vettore ed estrai max e min Salva su flash i valori

29 CODICE C PER MICROCONTROLLORI Per ogni valore acquisito si verifica immediatamente se esso è il nuovo massimo o minimo X 100 Leggi 1 valore Memorizza in RAM X 128 Per ogni valore rileva Il max e min Molte flash possono essere scritte solo per pagine. Per questo vengono messi in RAM 128 valori (1 pag) Alla fine della lettura dei valori si aggiorna il display per mostrare il max e il min Salva una pagine su flash Visualizza MAX - MIN

30 CODICE C PER MICROCONTROLLORI ROM: 1kword 256 kword La mia applicazione deve acquisire visualizzare su un display a colori un immagine di risoluzione 800x x600pixel*24bit/14 = 720 kword Non posso memorizzare la mia immagine nella memoria interna del micro. SOLUZINE: Utilizzo una memoria esterna. La memoria interna è meglio utilizzarla solo per il programma

31 CODICE C PER MICROCONTROLLORI CPU: 8 bit interi Attenzione: il compilatore C è in grado di tradurre anche operazioni in virgola mobile e numeri lunghi 16, 32 bit. Le operazioni verranno però eseguite non tramite hardware dedicato (che non è presente nei PIC) Vengono tradotte in sequenze di operazioni a 8 bit Le operazioni in virgola mobile risultano estremamente lente CPU: Stack limitato Sullo stack possono essere impilate solo 8 parole. E quindi evidente che il numero di funzioni chiamabili prima dello stack overflow è limitato La ricorsione è impossibile E necessario linearizzare algoritmi ricorsivi

32 CODICE C PER MICROCONTROLLORI ESISTONO TANTI COMPILATORI C PER PIC MICRO HI-TECH PICC

33 CODICE C PER MICROCONTROLLORI ESISTONO TANTI COMPILATORI C PER PIC MICRO CCS PIC-C

34 CODICE C PER MICROCONTROLLORI ESISTONO TANTI COMPILATORI C PER PIC MICRO MICROCHIP MPLAB

35 CODICE C PER MICROCONTROLLORI ESISTONO TANTI COMPILATORI C PER PIC MICRO MIKROELETTRONICA - MIKROC

36 CODICE C PER MICROCONTROLLORI OBBIETTIVO: Vogliamo accendere un led collegato alla porta B (pin 0) HI-TECH PICC TRISB = 0x00; PORTB = 0x01; Imposto dei registri CCS PICC set_tris_b(0x00); output_b(0x01); Chiamo una funzione

37 HI-TECH PICC Per accedere alle risorse hardware bisogna impostare i vari registri in questo modo: NOME_REGISTRO = VALORE (8 bit) Impostazione del timer 0 per scatenare un interrupt su ogni overflow: T0CS = 0; //Sorgente clock FOSC/4 PSA = 0; //Non utilizzare il pre-scaler TMR0IE = 1; //Abilita IRQ sul timer0 TMR0IF = 0; //Cancella il flag IRQ sul TMR0 TMR0 = 0; //Metti a 0 il timer 0

38 HI-TECH PICC STRUTTURA DEL PROGETTO Include files INIT FILE (inizializzazione) MAIN FILE ISR FILE (interrupt) Funzioni Personali I/O DRIVER

39 HI-TECH PICC FLUSSO DI ESECUZIONE MAIN FILE void main() { init(); } while ( 1 ) { cnt = cnt +1;. CLRWDT(); } INIT FILE void init() { T0CS = 0; TNR0IE=1;. } void interrupt isr() { if (TMR0IF == 1) {.. puts( ciao ); } } SERIAL LIBRARY void puts(char *s); void putch( ); void getch( ); LCD LIBRARY void lcd_print( ); void lcd_clear(); void lcd_init( );

40 HI-TECH PICC

41 HI-TECH PICC HEX Codice C Compilatore Codice macchina utilizzato per programmare il micro COFF File che contiene il codice macchina e dei riferimenti istruzione per istruzione al codice assembler e C in modo da permettere il debug in Proteus

42 PROGRAMMATORE / DEMO-BOARD HEX

43 PROTEUS

44 PROTEUS E un simulatore funzionale del circuito La simulazione in modalità animazione non porta allo sviluppo di grafici (come Spice) ma a mostrare il vostro circuito funzionante come nella realtà. Permette di interagire con la simulazione a run-time Permette la simulazione mista di parti analogiche e digitali A1

45 Diapositiva 44 A1 Dopo questa slide aprirò proteus per fare vedere un esempio di circuito funzionate in modalità animazione e mostrare come il circuito regisce se premo i tasti Andrea; 23/10/2006

46 PROTEUS Tramite gli strumenti virtuali è possibile analizzare il circuito come se fossimo in un vero laboratorio

47 PROTEUS Il debugger permette di seguire passo passo l esecuzione del codice C/Assembler, inserire break-point, visualizzare in tempo reale lo stato di tutti i registri interni, delle variabili, della ram e anche delle periferiche esterne al micro.

48 PROTEUS E comunque possibile realizzare simulazioni nel dominio del tempo o della frequenza non a run-time.

49 PROGETTARE CON I MICROCONTROLLORI 1. Focalizzare l obbiettivo del progetto 2. Scegliere il microcontrollore più adatto in base alle prestazioni necessarie tenendo sempre presente i costi globali del progetto 3. Progettare lo schema elettrico del circuito 4. Scrivere il software 5. Verificare che il software scritto funzioni tramite Proteus (o altri simulatori) 6. Se è possibile verificare che il progetto funzioni su una demo-board sia dal punto di vista elettrico che funzionale 7. Produzione di un numero limitato di schede di test 8. Se tutto funziona come dovuto, si passa alla produzione massiccia del sistema.

50 PROGETTARE CON I MICROCONTROLLORI Scegliere il microcontrollore più adatto in base alle prestazioni necessarie tenendo sempre presente i costi globali del progetto Alcuni micro hanno costo superiori ad altri in quanto sono più preformanti o hanno integrato un maggior numero di periferiche: Ad esempio, volendo acquisire dei dati tramite USB ho due soluzioni: 18F4520 FT245 18F4550 USB 2.0 INTEGRATO $ 1k $ 1k = $ 7.13 $ 1k

51 PROGETTARE CON I MICROCONTROLLORI SCELTA DEL MICROCONTROLLORE Prestazioni RAM FLASH Numero di I/O Periferiche

52 PROGETTARE CON I MICROCONTROLLORI SCELTA DEL MICROCONTROLLORE Circuiti esterni collegati al micro

53 PROGETTARE CON I MICROCONTROLLORI SCELTA DEL MICROCONTROLLORE Pin organizzati in porte Pin dedicati a periferiche intere Pin dedicati ad alimentazioni, reset, clock Molti pin sono multiplexati fra le varie periferiche

54 Progetti coi microcontrollori

55 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO Vogliamo leggere e mostrare quale tasto viene premuto su di un tastierino numerico. In base al numero di linee che vogliamo usare per collegarvi i tasti, ci sono vari modi di procedere:

56 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO COLLEGAMENTO DIRETTO DEI PULSANTI AL MICRO Vantaggio: Permette di leggere più tasti premuti insieme Svantaggio: Utilizza tante I/O quanti sono i pulsanti collegati

57 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO COLLEGAMENTO DIRETTO DEI PULSANTI AL MICRO 8 binario 0b

58 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO COLLEGAMENTO MULTIPLEXATO: INTRODUZIONE A B C D FUNZIONAMENTO 1. Metto a +Vdd la linea A e vedo quale fra 1,2,3 è a Vdd 2. Metto a +Vdd la linea B e vedo quale fra 1,2,3 è a Vdd E così via

59 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO COLLEGAMENTO MULTIPLEXATO: INTRODUZIONE Vdd Gnd Gnd Gnd A B C D Gnd Gnd Vdd

60 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO COLLEGAMENTO MULTIPLEXATO: INTRODUZIONE Gnd Vdd Gnd Gnd A B C D Gnd Gnd Gnd

61 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO COLLEGAMENTO MULTIPLEXATO: INTRODUZIONE A B C D Vantaggio: Utilizzo meno linee del PIC (7 contro 12) Svantaggi: Devo avere una logica di decodifica del tasto Problema del tasto fantasma

62 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO COLLEGAMENTO MULTIPLEXATO: SCHEMA ELETTRICO

63 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO COLLEGAMENTO MULTIPLEXATO: SOFTWARE void init(void){ //Imposta la porta B //In ingresso da RB4 a RB7 e in uscita da RB0 a RB3 TRISB = 0b ; PORTB = 0x00; //Imposta la porta D tutta in uscita TRISD = 0x00; PORTD = 0x00; } Inizializiamo le periferiche del miro Alla porta B colleghiamo i tasti: Impostiamo i bit 7,6,5,4 della porta B come ingressi Impostiamo i bit 3,2,1,0 come uscite Alla porta D colleghiamo il display Impostiamo tutta la porta D come uscita

64 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO COLLEGAMENTO MULTIPLEXATO: SOFTWARE E Premuto il tasto=5? Verifica il tasto premuto colonna=tasto riga = tasto/3 = 1 riga = 0 colonna=tasto%3=1 Accendi la riga 1 (PORTB = 0b ) Ritorna il valore logico presente sulla colonna RIGA 1 COLONNA 1

65 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO INGRESSI USCITE COLONNE RIGHE PORTA B

66 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO INGRESSI USCITE COLONNE RIGHE PORTA B = 0b Scrivo sulla porta B

67 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO INGRESSI USCITE COLONNE RIGHE PORTA B = 0b Leggo dalla porta B

68 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO INGRESSI USCITE 5 è premuto? P O R T B COLONNE RIGHE Se il sesto bit della porta B vale 1 allora il tasto 5 è premuto P O R T B? >> 4?????

69 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO TASTO 5 E PREMUTO?????? >> colonne (1)?????? & AND MASCHERA RISULTATO Il risultato = 1. Tasto 5 è premuto.

70 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO TASTO 6 E PREMUTO?????? >> colonne (2)??????? & AND MASCHERA RISULTATO Il risultato = 0. Tasto 6 NON è premuto.

71 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO COLLEGAMENTO MULTIPLEXATO: SOFTWARE unsigned char test_button(unsigned char button) { unsigned char row; //riga del pulsante unsigned char col; //colonna del punsante unsigned char out;//valore in uscita /* * Riga della tastiera da analizzare * (int)(bottone / 3) = riga * ex: pulsante 5 => 5/3 = 1 (cioè la seconda riga) */ row = (button / 3); /* * Stabiliamo la colonna * se la riga è 0 la colonna è esattamente il bottone premuto * altrimenti è il modulo della divisione di bottone/riga*3 */ if (row == 0) col = button; else col = (button % (row*3)); Verifica il tasto premuto La funzione controlla se il tasto specificato button è premuto oppure no. Funzionamento 1. Calcola la riga del tastierino dove si trova il tasto richiesto 2. Calcola la colonna dove si trova il tasto richiesto.

72 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO COLLEGAMENTO MULTIPLEXATO: SOFTWARE /* Carica la riga corrente sulla porta b * ex: riga 2 -> row=1 0b << 1 = 0b */ PORTB = 0b << row; /* Leggi i bit di ingresso della porta B per vedere * quale tasto di quella riga è premuto * * ex: premuto 1 tasto della 2 riga * PORTB = 0b * tasto riga * Shifto di colonne + 4 bit e mi posizione sulla prima colonna * e ottengo 0bxxxx0001. poi mascero con 0b in * modo che rimanga solo l'ultimo bit. quello sarà il risultato */ out = ((PORTB >> (col))>>4) & 0x01; return out; } Funzionamento 3. Metti a 1 la riga corrispondente al tasto da verificare 4. Verifica se il tasto alla colonna col è effettivamente premuto

73 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO COLLEGAMENTO MULTIPLEXATO: SOFTWARE Visualizzazione tasto premuto I = 0 Tasto I è premuto? SI PORTD = I+1 NO Non fare nulla Incrementa di 1 I SI I < 12 NO

74 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO COLLEGAMENTO MULTIPLEXATO: SOFTWARE Visualizzazione tasto premuto Serigrafia tastiera I corrispondente ad ogni tasto Numero = I + 1 se I < 9 PORTD = I +1 Lo 0 fa eccezione: corrisponde al numero 10

75 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO COLLEGAMENTO MULTIPLEXATO: SOFTWARE Lo 0 fa eccezione: corrisponde al numero 10 Tasto I è premuto? NO Non fare nulla SI I = 10? NO PORTD = I+1 SI PORTD = I+1 Incrementa di 1 I

76 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO COLLEGAMENTO MULTIPLEXATO: SOFTWARE //Inizializza le periferiche init(); while (1){ //Per sempre //Cancella il Watch-Dog CLRWDT(); //Controlla tutti i tasti for (i = 0; i<12; i++) { //Se ho premutoo il tasto mostralo sul display if (test_button(i)== 1) { if (i == 10) //L' 11 tasto è lo 0 mostra lo 0 in binario PORTD = 0x00; //0 else //Mostra i+1 sul display cioè il tasto premuto PORTD=i+1; } Main() 1. Controlla se l i-esimo tasto è effettivamente premuto 2. Se il tasto è premuto scrivi il valore di i (quindi il numero del tasto premuto) sulla porta D in formato BCD } }

77 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO COLLEGAMENTO MULTIPLEXATO: SOFTWARE Simulazione con Proteus

78 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO RESISTENZE PESATE: Introduzione Funzionamento Premendo un tasto si fa scendere il potenziale del nodo A La partizione fra Vdd e Gnd dipende dai valori delle resistenze Ogni pulsante è pesato con una resistenza differente Il micro, tramite l ADC, può verificare quale pulsante è premuto misurando la tensione al nodo A

79 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO RESISTENZE PESATE: Introduzione Vantaggio: Utilizza una sola linea del micro per più pulsanti Svantaggi: Richiede un micro con ADC Non posso premere più di un pulsante alla volta Numero di pulsanti limitati dalla precisione e stabilità termica delle resistenze e dalla risoluzione del micro

80 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO RESISTENZE PESATE: Progettazione resistenze Resistenze Pulsanti Valore di tensione MIN MAX Soglia Soglia ideale ADC R top (ohm) Tensione (V) 5 Tolleranza (%) 5 Risoluzione Max = 5v/256 = 20mV

81 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO RESISTENZE PESATE: Progettazione resistenze Nessun tasto premuto

82 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO RESISTENZE PESATE: Schema elettrico Il tasto premuto è visualizzato sulla barra di led che si accendono in progressione dal 1 all 8

83 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO RESISTENZE PESATE: L ADC del microcontrollore Ingressi multiplexati Riferimento di tensione selezionabili via software tra interno/esterno

84 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO RESISTENZE PESATE: L ADC del microcontrollore Modello equivalente di ogni pin in ingresso Bisogna tenere presente che il campionamento richiede, oltre al tempo di conversione dell ADC, un tempo addizionale necessario al sample and hold

85 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO RESISTENZE PESATE: L ADC del microcontrollore ADON Abilita il modulo ADC Registri necessari al controllo dell ADC ADCS1, ADCS0 Selezionano la frequenza di campionamento PCFG3, PCFG2, PCFG1, PCFG0 Scelgono quali pin del micro sono dedicati all acquisizione analogica ADIE Abilita / Disabilita l interrupt di fine conversione CHS2, CHS21, CHS0 Indicano da quale dei canali selezionati come analogici acquisire ADGO Avvia la conversione. Tramite verifica ADGO = 0 si può capire quando la conversione è finita

86 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO FREQUENZA DI CAPIONAMENTO INGRESSO DA CUI ACQUISIRE

87 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO AVVIA LA CONVERSIONE LA CONVERSIONE E IN CORSO? ABILITA IL MODULO ADC

88 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO RESISTENZE PESATE: L ADC del microcontrollore Esempio di configurazione del registro PCFG

89 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO RESISTENZE PESATE: L ADC del microcontrollore RA0 RA1 RA2 RA3 RA4 RA5

90 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO RESISTENZE PESATE: L ADC del microcontrollore Funzionamento ADC 1. Configuro gli ingressi dell ADC e attivo il modulo 2. Scelgo il canale da cui acquisire 3. Setto a 1 il registro ADGO NON USO INTERRUPT USO INTERRUPT 1. In un ciclo while continuo a controllare se il registro ADGO divine uguale a 0 2. Leggo il risultato della conversione tramite il registro ADRESH 1. Attendo lo scatenarsi di un Interrupt 2. Verifico il flag ADIF = 1 3. Leggo il risultato della conversione tramite i registro ADRESH Per una maggior precisione si più impostare l ADC ad una modalità a 10 o 12 bit. In tal caso il risultato della conversione sarà memorizzato in due registri: ADRESH e ADRESL

91 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO RESISTENZE PESATE: SOFTWARE void init(void){ TRISA = 0b ; //Frequenza di campionamento = fosc/32 ADCS1 = 1; ADCS0 = 1; //Configura i canali: AN0 analogico PCFG3 = 1; PCFG2 = 1; PCFG1 = 1; PCFG0 = 0; //Interrupt sull'adc ADIE = 0; //Disabilita l'irq sull'adc //Acquisisci sempre dal canale 1 CHS0 = 0; CHS1 = 0; CHS2 = 0; //Abilita il modulo ADC ADON = 1; TRISD = 0x00; PORTD = 0x00; } Inizializiamo le periferiche del miro Frequenza di campionamento fosc/32 Solo l AN0 è un ingresso analogico Acquisisco dal canale AN0 Disattivo l interrupt Imposto la porta D come uscita per collegarci i led

92 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO COLLEGAMENTO MULTIPLEXATO: SOFTWARE Avvia l acquisizione da RA0 ADGO = 1 La conversione è completata? (AGGO == 0) SI NO Controlla l intervallo di valori in cui cade la tensione letta Risultato conversione = ADRESH Accendi il led corrispondente al tasto premuto

93 I PROGETTO: LETTURA DEL TASTO PREMUTO SU DI UN TASTIERINO COLLEGAMENTO MULTIPLEXATO: SOFTWARE while (1){ //Avvia la conversione ADGO = 1; //Attendi che la conversione sia finita while (ADGO == 1) CLRWDT(); //Leggi il valore e accendi il led corrispondente val_letto = ADRESH; if ((val_letto > 230) && (val_letto < 250)) PORTD = 0b ; if ((val_letto > 204) && (val_letto < 230)) PORTD = 0b ; if ((val_letto > 179) && (val_letto < 204)) PORTD = 0b ; if ((val_letto > 153) && (val_letto < 179)) PORTD = 0b ; if ((val_letto > 107) && (val_letto < 153)) PORTD = 0b ; if (val_letto >250) PORTD = 0x00; } Main() 1. Avvia la conversione 2. Attendi che la conversione sia completa 3. Leggi il valore della linea analogica 4. Accendi il led corrispondente al tasto premuto

94 INTERRUPT FUNZIONAMENTO INTERRUPT L interrupt è un segnale interno al micro che causa l istantanea interruzione del codice in esecuzione per passare ad eseguire la routine di interrupt L interrupt viene scatenato da vari eventi: ogni PIC ha un set di interrupt diverso. PIC 16 1 solo interrupt Routine di decodifica dell Interrupt PIC 18 2 interrupt Alta Priorità Bassa Priorità Routine di decodifica dell Interrupt ALTO Routine di decodifica dell Interrupt BASSO

95 INTERRUPT FUNZIONAMENTO INTERRUPT: PIC 16F877 Tante periferiche scatenano un solo interrupt. E necessaria una funzione per capire chi è stato a scatenarlo. Esistono dei FLAG che vengono automaticamente settati a 1 quando la periferica scatena un interrupt (ad esempio TMR0IF per il timer 0). Tutti questi flag terminano con la dicitura IF Dopo aver verificato che un interrupt è stato scatenato è necessario porre il flag IF a 0 in modo che l interrupt possa di nuovo scatenarsi PIC 18

96 INTERRUPT FUNZIONAMENTO INTERRUPT: PIC 16F877 PORTA SERIALE RS232 TRASMISSIONE COMPLETA TXIF DATI NE BUFFER DI RICEZIONE - RXIF Routine di decodifica dell Interrupt TIMER TMR0IF ADC PIC 18 PIC 16 PORTB 1 solo interrupt Void interrupt isr() { GIE = 0; if (TMR0IF == 1) {.. TMR0IF = 0; } if (ADIF == 1) { ADIF = 0; }.. GIE =1; } ADC - ADIF CAMBIAMENTO DI STATO RB4..RB7 - RBIF

97 INTERRUPT FUNZIONAMENTO INTERRUPT: PIC 16F877 Per permettere ad una periferica di scatenare un interrupt è necessario abilitare un registro. Il registro da settare a 1 ha nome: NOME_PERIFERICAIE = 1 (ex: TMR0IE = 1) Interrupt Enable E inoltre necessario settare il registro GIE ad 1 Se la periferica che scatena l interrupt non è una periferica interna al core della CPU è inoltre necessario settare a 1 il registro PIE Peripheral Interrupt Enable Global Interrupt Enable

98 INTERRUPT GLOBAL INTERRUPT (GIE) PERIFERICAL INTERRUPT (PIE) Capture And Compare TIMER0 PORTA SERIALE RS232 TIMER1 PORTB ADC TIMER2

99 INTERRUPT FUNZIONAMENTO INTERRUPT: PIC 16F877 TIMER 0 E una periferica interna al core dell MPU TMR0IE = 1; //Abilita IRQ sul timer0 TMR0IF = 0; //Cancella il flag IRQ sul TMR0 GIE = 1; //Attivo gli interrupt TIMER 1 E una periferica esterna al core dell MPU E necessario attivare il flag PIE TMR1IE = 1; //Abilita IRQ sul timer0 TMR1IF = 0; //Cancella il flag IRQ sul TMR1 PIE = 1; //Attivo gli interrupt di periferiche esterne GIE = 1; //Attivo gli interrupt

100 INTERRUPT FUNZIONAMENTO INTERRUPT: PIC 16F877 Routine di decodifica dell Interrupt Void interrupt isr() { GIE = 0; if (TMR0IF == 1) {.. TMR0IF = 0; } if (ADIF == 1) { ADIF = 0; }.. GIE =1; } Mascheramento: Serve ad evitare che mentre si sta scatenando un interrupt sia possibile che se ne scateni una altro (che interromperebbe l interrupt in esecuzione) Si attiva disattivando GIE Si disattiva riattivando GIE

101 INTERRUPT FUNZIONAMENTO INTERRUPT: PIC 16F877 TIMER TMR0IF ADC ADC - ADIF PIC 18 PORTA SERIALE RS232 TRASMISSIONE COMPLETA TXIF DATI NE BUFFER DI RICEZIONE - RXIF PIC 16 PORTB 1 solo interrupt CAMBIAMENTO DI STATO RB4..RB7 - RBIF Routine di decodifica dell Interrupt Void interrupt isr() { GIE = 0; if (TMR0IF == 1) {.. TMR0IF = 0; } if (ADIF == 1) { ADIF = 0; }.. GIE =1; }

102 INTERRUPT FUNZIONAMENTO INTERRUPT: PIC 16F877 TIMER TMR0IF ADC ADC - ADIF PIC 18 PORTA SERIALE RS232 TRASMISSIONE COMPLETA TXIF DATI NE BUFFER DI RICEZIONE - RXIF PIC 16 PORTB 1 solo interrupt CAMBIAMENTO DI STATO RB4..RB7 - RBIF Routine di decodifica dell Interrupt Void interrupt isr() { GIE = 0; if (TMR0IF == 1) {.. TMR0IF = 0; } if (ADIF == 1) { ADIF = 0; }.. GIE =1; }

103 INTERRUPT FUNZIONAMENTO INTERRUPT: PIC 16F877 TIMER TMR0IF ADC ADC - ADIF PIC 18 PORTA SERIALE RS232 TRASMISSIONE COMPLETA TXIF DATI NE BUFFER DI RICEZIONE - RXIF PIC 16 PORTB 1 solo interrupt CAMBIAMENTO DI STATO RB4..RB7 - RBIF Routine di decodifica dell Interrupt Void interrupt isr() { GIE = 0; if (TMR0IF == 1) {.. TMR0IF = 0; } if (ADIF == 1) { ADIF = 0; }.. GIE =1; }

104 INTERRUPT FUNZIONAMENTO INTERRUPT: PIC 16F877 TIMER TMR0IF ADC ADC - ADIF PIC 18 PORTA SERIALE RS232 TRASMISSIONE COMPLETA TXIF DATI NE BUFFER DI RICEZIONE - RXIF PIC 16 PORTB 1 solo interrupt CAMBIAMENTO DI STATO RB4..RB7 - RBIF Routine di decodifica dell Interrupt Void interrupt isr() { GIE = 0; if (TMR0IF == 1) {.. TMR0IF = 0; } if (ADIF == 1) { ADIF = 0; }.. GIE =1; }

105 INTERRUPT FUNZIONAMENTO INTERRUPT: PIC 16F877 main Void main() { int a; int b; init(); a=1006; b=5; while (b < a) { b = b+2; PORTB = b >> 2; } MAIN IL PROGRAMMA ESEGUE IL MAIN. CONTINUA A PERCORRERE IL CICLO }

106 INTERRUPT FUNZIONAMENTO INTERRUPT: PIC 16F877 main Void main() { int a; int b; init(); a=1006; b=5; while (b < a) { b = b+2; PORTB = b >> 2; } MAIN }

107 INTERRUPT FUNZIONAMENTO INTERRUPT: PIC 16F877 main Void main() INTERRUPT { int a; int b; init(); a=1006; b=5; while (b < a) { b = b+2; PORTB = b >> 2; } MAIN VETTORE INTERRUPT }

108 INTERRUPT INTERRUPT FUNZIONAMENTO INTERRUPT: PIC 16F877 Routine di decodifica dell Interrupt Void interrupt isr() { GIE = 0; if (TMR0IF == 1) {.. TMR0IF = 0; } if (ADIF == 1) { ADIF = 0; }.. GIE =1; } TIMER0 VETTORE INTERRUPT TIMER1 Maschero Interrupt Quale periferica ha scatenato l interrupt? CCP1 ADC SERIALE PORTA B

109 INTERRUPT INTERRUPT FUNZIONAMENTO INTERRUPT: PIC 16F877 Routine di decodifica dell Interrupt Void interrupt isr() { GIE = 0; if (TMR0IF == 1) {.. TMR0IF = 0; } if (ADIF == 1) { ADIF = 0; }.. GIE =1; } TIMER0 VETTORE INTERRUPT TIMER1 Maschero Interrupt Quale periferica ha scatenato l interrupt? CCP1 ADC SERIALE PORTA B

110 INTERRUPT INTERRUPT FUNZIONAMENTO INTERRUPT: PIC 16F877 E importante ricordarsi di resetare il flag Routine di TMR0IF decodifica altrimenti l interrupt dell Interrupt associato al timer 0 non Void interrupt potra mai isr() più scatenarsi per { un nuovo evento. if (TMR0IF == 1) { puts( ciao ) n_interupt++; ADGO = 1; TMR0 = 211; TMR0IF = 0; } } VETTORE INTERRUPT Maschero Interrupt Quale periferica ha scatenato l interrupt? TIMER0 Riattivo Interrupt Ritorna al main

111 INTERRUPT FUNZIONAMENTO INTERRUPT: PIC 16F877 main Void main() { int a; int b; init(); a=1006; b=5; while (b < a) { b = b+2; PORTB = b >> 2; } MAIN VETTORE INTERRUPT }

112 INTERRUPT FUNZIONAMENTO INTERRUPT: PIC 16F877 In C non è necessario preoccuparsi di salvare i registri che verranno modificati dalla routine di interrupt. Sarà il compilatore a preoccuparsi del context saving

113 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE Vogliamo acquisire fino a 8 sorgenti analogiche a bassa velocità e mostrare il valore letto su una barra di led colorati La sorgente analogica da cui acquisite viene selezionata tramite due pulsanti UP-DOWN Il numero della sorgente che si sta monitorando è mostrato su di un display a 7 segmenti

114 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE COMPONENTI: DISPLAY A 7 SEGMENTI

115 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE COMPONENTI: DISPLAY A 7 SEGMENTI G F C DE B A

116 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE COMPONENTI: DISPLAY A 7 SEGMENTI Display a catodo comune Tutti i segmenti hanno la stessa massa. Per attivare il segmento g devo mettere a 1 il bit g quindi scrivere sulla porta b: 0bx Display a hanno comune Tutti i segmenti hanno la stessa vdd. Per attivare il segmento g devo mettere a 0 il bit g quindi scrivere sulla porta b: 0bx

117 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SCHEMA ELETTRICO SELEZIONA INGRESSO DISPLAY termometrico INGRESSO SELEZIONATO 4 sorgenti di test

118 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE Variabili Globali //Simboli da mostrare sul display a 7 segmenti extern const unsigned char seg_symbol[]; //Led da accendere unsigned int led_acceso; //Canale di Input selezionato unsigned char c_input;

119 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE ADC PORTA ingresso E necessario configurare tutti i registri dell ADC per ottenere il funzionamento voluto Frequenza di campionamento Canali analogici: AN0 AN4 Interrupt Abilitazione

120 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE TRISA = 0b ; ADC PORTA ingresso INGRESSI Frequenza di campionamento Canali analogici: AN0 AN4 Interrupt Abilitazione

121 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE ADC PORTA ingresso Frequenza di campionamento Canali analogici: AN0 AN4 Interrupt ADCS1 = 0; ADCS1 = 1; ADCS0 = 0; Abilitazione

122 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE ADC PORTA ingresso Frequenza di campionamento Canali analogici: AN0 AN4 Interrupt Abilitazione PCFG3 = 0; PCFG2 = 0; PCFG1 = 1; PCFG0 = 0;

123 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE ADC PORTA ingresso Frequenza di campionamento Canali analogici: AN0 AN4 ADC Interrupt Abilitazione ADIF = 0; Reset the interrupt flag ADIE = 1; Abilita l'irq sull'adc PEIE = 1; Abilita le periferical interrupt

124 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE ADC PORTA ingresso Frequenza di campionamento Canali analogici: AN0 AN4 Interrupt ADON = 1; Abilita il modulo ADC Abilitazione

125 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE TASTI PORTB ingresso E necessario associare l interrupt di variazione della porta B alla pressione dei tasti Interrupt sulla porta B

126 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE TASTI PORTB ingresso E necessario associare l interrupt di variazione della porta B alla pressione dei tasti Interrupt sulla porta B TRISB = 0b ;

127 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE TASTI PORTB ingresso RBIF = 0; Flag RBIF di IRQ cancellato RBIE = 1; Abilita l'irq sulla porta B GIE = 1; Abilita gli IRQ Interrupt sulla porta B

128 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE Mostra lo 0 sul display TRISC = 0x00; PORTC = seg_symbol[0]; Configura la porta coi led TRISD = 0x00; Tutti in uscita PORTD = 0x00; Spegni tutti i led

129 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE Avvia la prima conversione ADGO = 1;

130 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE Inizializzazione //Led che sono accesi led_acceso = 0b ; //Ingresso 1 c_input = 0; // Avvia l'adc //Configura il TRIS TRISA = 0b ; //Frequenza di campionamento = fosc/32 ADCS2 = 0; ADCS1 = 1; ADCS0 = 0; //Configura i canali: AN0...4 PCFG3 = 0; PCFG2 = 0; PCFG1 = 1; PCFG0 = 0; ADON = 1; //Abilita il modulo ADC //Interrupt sull'adc ADIF = 0;//Reset the interrupt flag ADIE = 1;//Abilita l'irq sull'adc PEIE = 1;//Abilita le periferical interrupt // Configura i tastini //Imposta come input l'rb7 e RB6 TRISB = 0b ; //Interrupt sui tasti RBIF = 0;//Flag RBIF di IRQ cancellato RBIE = 1;//Abilita l'irq sulla porta B GIE = 1; //Abilita gli IRQ // Configura la porta coi led TRISD = 0x00; //Tutti in uscita PORTD = 0x00; //Spegni tutti i led //Avvia la prima conversione ADGO = 1; //Mostra lo 0 sul display TRISC = 0x00; PORTC = seg_symbol[0];

131 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE Interrupt Interrupt Conversione ADC ultimata Cambio canale (pressione tasti)

132 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE Interrupt Interrupt Conversione ADC ultimata Cambio canale (pressione tasti) Salva in led_acceso il valore della conversione contenuto in ADRESH Riavvia la conversione Resetta il flag ADIF

133 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE Acquisizione Valori void interrupt my_isr(void) { //Interrupt per l'irq if (ADIF == 1) { //copia il valore della conversione //nella variabile led_acceso led_acceso = ADRESH; //avvia la conversione ADGO = 1; //Resetta il flag dell'irq ADIF = 0; } } Acquisizione Quando una conversione viene completata si scatena l interrupt Il flag ADIF viene settato a 1 Copio il valore contenuto in ADRESH nella variabile globale led_acceso Riavvio una nuova conversione che mi scatenerà di nuovo questa routine di interrupt appena verrà completata

134 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE Interrupt Interrupt Conversione ADC ultimata Cambio canale (pressione tasti) Incrementa / decrementa il canale (c_input) Mostra sul display il nuovo canale selezionato PORTC = seg_symbol[c_input];

135 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE Funzione Main if (RBIF == 1) { //Ho premuto su if (UP == 1) { //se non sono gia' al canale 7 if (c_input < 7) { c_input++; //Seleziona l'ingresso ADCON0 =(ADCON0 & 0b ) ((c_input << 3) & 0b ); }.. }

136 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE c_input <<3 ADCON x x x & & MASK MASK RISULTATO

137 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE Funzione Main. while (1){ CLRWDT(); PORTD = 0b >> (led_acceso>>5); } Funzionamento Carico sulla porta D il valore 0b Led_acceso è un valore che va da 0 a 255 Divido questo valore per 32 (>>5) e ottengo un valore compreso tra 0 e 7 Shifto il valore precaricato in PORTD del numero ottenuto con led_acceso/32 Mostro questi valore sulla barra colorata

138 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE Simbolo da mostrare seg_symbol 63, , 1 91, 2 79, 3 102, 4 109, 5 125, 6 7, 7 127,

139 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE Simbolo da mostrare seg_symbol 63, 0 6, , 2 79, 3 102, 4 109, 5 125, 6 7, 7 127,

140 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE Simulazione con Proteus

141 III PROGETTO: TIMER e CONTATORE IL TIMER DEL PIC Dispositivi interni al PIC che una volta avviati contano in avanti fino ad arrivare al loro valore di overflow Raggiunto l overflow il timer riprende di nuovo a contare da 0 Quando il timer satura, viene generato un interrupt

142 III PROGETTO: TIMER e CONTATORE IL TIMER DEL PIC: 16F877 3 TIMER: TIMER 0: 8 bit TIMER 1: 16bit (funziona anche da contatore) TIMER 2: 16bit * Si veda il datasheet per usare i timer in modo più avanzato Registri del TIMER 0: T0CS: sorgente del clock del timer 0 PSA: attivazione del prescaler PS2-PS0: valore del prescaler (divisore) TMR0: valore attuale del timer 0 T0IE: abilita l interrupt associato al timer 0 T0IF: si è scatenato l interrupt associato al timer 0

143 III PROGETTO: TIMER e CONTATORE IL TIMER DEL PIC: 16F877 Esterno ON/OFF ½ ¼ 1/256 T0IE Overflow TMR0 8 / 16 bit INTERRUPT TRM0IF Interrupt Signal Prescaler Select

144 III PROGETTO: TIMER e CONTATORE IL DISPLAY LCD MULTIPLEXATO A B C D E F G Il processo si basa sulla persistenza delle immagini sulla retina. Si mostra una cifra alla volta spegnendo le altre Il tutto funziona a patto di avere un refresh velocissimo

145 III PROGETTO: TIMER e CONTATORE IL DISPLAY LCD MULTIPLEXATO SEGS A B C D E F G Voglio mostrare 1234 Attivo il display 1 e carico sulle linee ABCDEFG il valore binario che mostri 1 sul display Attivo il display 2 e mostro 2 Così via DISPLAYS

146 III PROGETTO: TIMER e CONTATORE SOFTWARE TMR0 Interrupt Primo Evento SEG = seg_symbol[0] DISPLAY = 0b kHz TMR0 Interrupt Secondo Evento SEG = seg_symbol[2] DISPLAY = 0b TMR0 Interrupt Terzo Evento SEG = seg_symbol[3] DISPLAY = 0b TMR0 Interrupt Quarto Evento SEG = seg_symbol[0] DISPLAY = 0b

147 III PROGETTO: TIMER e CONTATORE OBBIETTIVO Vogliamo creare un contatore che avanzi automaticamente ad una frequenza prefissata e mostri il valore della conta su un display a 7 cifre. Vogliamo usare il minor numero possibile di linee I/O per controllare il display a 7 segmenti.

148 III PROGETTO: TIMER e CONTATORE SCHEMA ELETTRICO SEGS DISPLAYS

149 III PROGETTO: TIMER e CONTATORE SCHEMA ELETTRICO TIMER 0: Aggiorna a 10KHz la i display a 7 segmenti TIMER 1: Conta a 10Hz e incrementa una variabile interna da mostrare sul display

150 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE TIMER0 E necessario configurare tutti i registri del timer 0 Sorgente Prescaler Interrupt Reset

151 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE TIMER0 Devo scegliere come clock del timer quello che il sistema fornisce alle periferiche (clock principale/4) Sorgente Prescaler Interrupt Reset Fosc / 4 T0CS = 0; Sorgente clock FOSC/4

152 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE Non utilizzare il pre-scaler TIMER0 Sorgente Prescaler Interrupt 10Mhz 4 10kHz 256 BYPASS Reset PSA = 0; Non utilizzare il pre-scaler

153 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE TIMER0 Abilitiamo l Interrupt. Sorgente Prescaler TMR0IE = 1; Abilita IRQ sul timer0 TMR0IF = 0; Cancella il flag IRQ sul TMR0 Interrupt Reset

154 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE TIMER0 Facciamo partire il Timer da 0 Sorgente TMR0 = 0; Metti a 0 il timer 0 Prescaler Interrupt Reset

155 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE TIMER1 Temporizzazione Vogliamo che vada in overflow ogni 100ms per incrementare di 1 il numero sul display Interrupt Reset

156 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE TIMER1 Temporizzazione Interrupt Reset Vogliamo che vada in overflow ogni 100ms per incrementare di 1 il numero sul display Clock = 10 MHz Fosc/4 = 2MHz Prescaler = 1/8 * 2MHz = 250 KHz Overflow ogni 1/10s 1/10s * 250 KHz = = TMR1H = 158; TMR1L = 87;

157 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE TIMER1 Abilitiamo IRQ Temporizzazione TMR1IF = 0; Reset del flag TMR1IE = 1; Abilita l'irq Interrupt Reset

158 II PROGETTO: ACQUISIZIONE DI PIU SORGENTI ANALOGICHE SOFTWARE TIMER1 Abilitiamo IRQ Temporizzazione TMR1ON = 1; //Inizia a contare Interrupt Reset

159 III PROGETTO: TIMER e CONTATORE SOFTWARE Inizializzo il timer 0 //Configueriamo il timer 0 T0CS = 0; //Sorgente clock FOSC/4 PSA = 0; //Non utilizzare il pre-scaler TMR0IE = 1; //Abilita IRQ sul timer0 TMR0IF = 0; //Cancella il flag IRQ sul TMR0 TMR0 = 0; //Metti a 0 il timer 0 Interrupt GIE = 1; //Abilita IRQ PEIE = 1; //Abilita l interrupt di periferica //Il timer 1 è una periferica esterna al core //Il timer 0 è invece una periferica interna Inizializzo il timer 1 //Configuriamo il timer 1 T1CKPS0 = 0; //Prescale a 1/8 T1CKPS1 = 0; TMR1CS = 0; //Fonte del clock = fosc/4 //Voglio che vada in overflow ogni 1/10s /* * fosc/4 = MHz * /8 = prescaler * /10 = * = */ TMR1H = 158; TMR1L = 87; TMR1IF = 0; //Reset del flag TMR1IE = 1; //Abilita l'irq TMR1ON = 1; //Inizia a contare

160 III PROGETTO: TIMER e CONTATORE SOFTWARE Variabili Globali //Quale display devo aggiornare? char display_update; //Quale cifra devo aggiornare int cifra_update; //Cifre del display int cifra[4]; Inizializza tutte le periferiche //Primo display display_update = 0b ; //Cifre di partenza cifra[0] = 0; cifra[1] = 0; cifra[2] = 0; cifra[3] = 0; cifra_update = 0; //Metti a 0 tutta la porta C a cui è //collegato il display TRISC = 0x00; PORTC = 0x00;

161 III PROGETTO: TIMER e CONTATORE SOFTWARE display_update = quale di 4 display andiamo ora ad aggiornare 0b b b b cifra = quale numero mostrare Cifra[3] Cifra[2] Cifra[1] Cifra[0]

162 III PROGETTO: TIMER e CONTATORE SOFTWARE TIMER 0 arriva a 255: Overflow Interrupt scatenato da TIMER0 Procedura di Refresh dei display Preleva il valore numerico 0..9 della cifra da mostrare Cifra_da_mostrare = cifra[cifra_update] Dalla tabella dei simboli di cifra estrai i pin da attivere per visualizzare il numero contenuto in Cifra_da_mostrare SEGS = seg_symbol[cifra_da_mostrare] Accendi il display corrispondente alla cifra da mostrare DISPLAYS = display_update; Incrementa sia la cifra_da_mostrare che il display_update display_update = display_update << 1; cifra_update = cifra_update + 1; Verifica che cifra_da_mostrare sia < 4 e display_update < 0b

163 III PROGETTO: TIMER e CONTATORE SOFTWARE Voglio mostrare il numero 0230 Cifra[3] = 0 Cifra[2] = 3 Cifra[1] = 2 Cifra[0] = 0 Unità Decine Centinaia Migliaia t [us] cifra_update = 0 display_update =0b

164 III PROGETTO: TIMER e CONTATORE SOFTWARE 0230 Cifra[3] = 0 Cifra[2] = 3 Cifra[1] = 2 Cifra[0] = 0 Unità Decine Centinaia Migliaia cifra_da_mostrare = cifra[cifra_update] = cifra[0] = 0 SEGS = seg_symbol[cifra_da_mostrare] = seg_symbol[0] = 63 = 0b DISPLAYS = display_update = 0b display_update = display_update << 1 = 0b cifra_update = cifra_update + 1 = t [us] TIMER0 IRQ cifra_update = 0 display_update =0b

165 III PROGETTO: TIMER e CONTATORE SOFTWARE 0230 Cifra[3] = 0 Cifra[2] = 3 Cifra[1] = 2 Cifra[0] = 0 Unità Decine Centinaia Migliaia cifra_da_mostrare = cifra[cifra_update] = cifra[1] = 3 SEGS = seg_symbol[cifra_da_mostrare] = seg_symbol[3] = 79 = 0b DISPLAYS = display_update = 0b display_update = display_update << 1 = 0b cifra_update = cifra_update + 1 = t [us] TIMER0 IRQ cifra_update = 1 display_update =0b

166 III PROGETTO: TIMER e CONTATORE SOFTWARE 0230 Cifra[3] = 0 Cifra[2] = 3 Cifra[1] = 2 Cifra[0] = 0 Unità Decine Centinaia Migliaia cifra_da_mostrare = cifra[cifra_update] = cifra[2] = 2 SEGS = seg_symbol[cifra_da_mostrare] = seg_symbol[3] = 91 = DISPLAYS = display_update = 0b display_update = display_update << 1 = 0b cifra_update = cifra_update + 1 = t [us] TIMER0 IRQ cifra_update = 2 display_update =0b

167 III PROGETTO: TIMER e CONTATORE SOFTWARE 0230 Cifra[3] = 0 Cifra[2] = 3 Cifra[1] = 2 Cifra[0] = 0 Unità Decine Centinaia Migliaia cifra_da_mostrare = cifra[cifra_update] = cifra[3] = 0 SEGS = seg_symbol[cifra_da_mostrare] = seg_symbol[0] = 63 = 0b DISPLAYS = display_update = 0b display_update = display_update << 1 = 0b cifra_update = cifra_update + 1 = t [us] Reset: cifra_update = 0; display_update = 0b ; TIMER0 IRQ cifra_update = 3 display_update =0b

168 III PROGETTO: TIMER e CONTATORE SOFTWARE TMR0 Interrupt Primo Evento SEG = seg_symbol[0] DISPLAY = 0b kHz TMR0 Interrupt Secondo Evento SEG = seg_symbol[2] DISPLAY = 0b TMR0 Interrupt Terzo Evento SEG = seg_symbol[3] DISPLAY = 0b TMR0 Interrupt Quarto Evento SEG = seg_symbol[0] DISPLAY = 0b

169 III PROGETTO: TIMER e CONTATORE SOFTWARE Interrupt sul timer 0 if (TMR0IF == 1)//E' stato il timer a scatenare l'irq { DISPLAYS = 0;//Spegni il display cifra_da_mostrare = cifra[cifra_update]; //Ottieni la cifra da mostrare SEGS = seg_symbol[cifra_da_mostrare]; //cifra da aggiornare DISPLAYS = display_update; //attiva il display display_update = display_update << 1; //Shift a sinistra per attivare il display //successivo cifra_update = cifra_update + 1; //incremeta di 1 la cifra if (cifra_update > 3) cifra_update = 0; //reset alla prima cifra if (display_update > 0b ) //Ho sforato, reset { display_update = 0b ; //reset al primo display } TMR0 = 0; //Resetta il timer 0 TMR0IF = 0; //Resett il FLAG IRQ del Timer0 }

170 III PROGETTO: TIMER e CONTATORE SOFTWARE Conteggio: Il firmware deve contare da 0 a 9999 avanzando di 1 ogni 1/10s INTERRUPT TIMER1 Incremeta le unità cifra[3] ++; Unità > 9 Incrementa le decina cifra[2]++; Decine > 9 Incrementa le centinaia cifra[1]++; Cifra[3] = 0 Riparti da 0 con le unità Cifra[2] = 0 Riparti da 0 con le decine Centinaia > 9 Incrementa le migliaia cifra[0]++; Migliaia > 9 Fine SI Cifra[1] = 0 Riparti da 0 con le centinaia Cifra[0] = 0 Riparti da 0 con le migliaia Fine

171 III PROGETTO: TIMER e CONTATORE SOFTWARE Interrupt sul timer 1 if (TMR1IF == 1) { //Incrementa le unità cifra[3] = cifra[3] +1; //Incrementa le decine if (cifra[3] == 10) { cifra[3] = 0; cifra[2] = cifra[2] + 1; if (cifra[2] == 10) { cifra[2] = 0; cifra[1] = cifra[1] + 1; if (cifra[1] == 10) { cifra[1] = 0; cifra[0] = cifra[0] + 1; //Sono arrivato a 9999, devo //ripartire da 0 if (cifra[0] == 10) { cifra[0] = 0; } } } } TMR1H = 158; // Ripristina il timer 1 TMR1L = 87; //Reset il FLAG IRQ del Timer1 } TMR1IF = 0;

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

Dettagli

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

Dettagli

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

Dettagli

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: beninato@dei.unipd.it trive1@tin.it Che cosa è un microcontrollore? Un microcontrollore è un sistema a microprocessore

Dettagli

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

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per

Dettagli

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.

Dettagli

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

Dettagli

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

Dettagli

CORSO SERALE ( TDP ) DEMOBOARD FN1Z PER PIC 16F877/16F877A

CORSO SERALE ( TDP ) DEMOBOARD FN1Z PER PIC 16F877/16F877A ITIS M. PLANCK LANCENIGO DI VILLORBA (TV) A.S. 2006/07 CLASSE 4A/ SERALE Corso di elettronica e telecomunicazioni Ins. Zaniol Italo CORSO SERALE ( TDP ) DEMOBOARD FN1Z PER PIC 16F877/16F877A Presentazione

Dettagli

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

Dettagli

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

Dettagli

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

Dettagli

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

Dettagli

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) (Da effettuare non prima del 01/01/2011) Le istruzioni si basano su un azienda che ha circa 1000 articoli, che utilizza l ultimo

Dettagli

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

Dettagli

Programmazione di LCD su EasyPic5

Programmazione di LCD su EasyPic5 Programmazione di LCD su EasyPic5 Finalità del Progetto : Creare una interfaccia menù sull LCD interattiva tramite i pulsanti del PORTA, con la possibilità di leggere delle stringhe sull LCD che descrivono

Dettagli

Powered by: Relators:

Powered by: Relators: Powered by: Hacking Group Como www.hgcomo.org Relators: Beretta Matteo, matteo@hgcomo.org Pizzagalli Diego Ulisse ulisse@hgcomo.org Atmel AVR Studio 4 integra al suo interno un ambiente di programmazione

Dettagli

Chiave DTMF con PIC16F84. Angelo - IT9DOA

Chiave DTMF con PIC16F84. Angelo - IT9DOA Chiave DTMF con PIC16F84 Angelo - IT9DOA Mettendo in ordine la mia libreria ho avuto modo di rileggere degli appunti che trattano alcuni circuiti elettronici che ho realizzato diversi anni fa e di cui

Dettagli

Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella.

Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella. Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella.net Prestazioni Si valutano in maniera diversa a seconda dell

Dettagli

TUTORIAL: COME USARE UN LM35 PER MISURARE UNA TEMPERATURA SU TUTTA LA SCALA CENTIGRADA

TUTORIAL: COME USARE UN LM35 PER MISURARE UNA TEMPERATURA SU TUTTA LA SCALA CENTIGRADA TUTORIAL: COME USARE UN LM35 PER MISURARE UNA TEMPERATURA SU TUTTA LA SCALA CENTIGRADA Molte persone (io compreso) che comprano la prima volta un LM35, lo fanno perché sono spinti da come sia facile da

Dettagli

ROM Upgrade Utility (RUU) Prima dell aggiornamento fare attenzione se

ROM Upgrade Utility (RUU) Prima dell aggiornamento fare attenzione se ROM Upgrade Utility (RUU) Prima dell aggiornamento fare attenzione se 1. Il cavo USB è direttamente collegato al PC. 2. L adattatore di alimentazione è collegato al Mobile Device. 3. Le modalità Standby

Dettagli

Dispense di Informatica per l ITG Valadier

Dispense di Informatica per l ITG Valadier La notazione binaria Dispense di Informatica per l ITG Valadier Le informazioni dentro il computer All interno di un calcolatore tutte le informazioni sono memorizzate sottoforma di lunghe sequenze di

Dettagli

Architettura dei Microcontrollori Microchip PIC18F

Architettura dei Microcontrollori Microchip PIC18F Architettura dei Microcontrollori Microchip PIC18F A. Romani Elettronica dei Sistemi Digitali L-A Cos è un microcontrollore? Differenza tra Microprocessore e Microcontrollore à Microprocessore: normalmente

Dettagli

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

Dettagli

Informatica - A.A. 2010/11

Informatica - A.A. 2010/11 Ripasso lezione precedente Facoltà di Medicina Veterinaria Corso di laurea in Tutela e benessere animale Corso Integrato: Matematica, Statistica e Informatica Modulo: Informatica Esercizio: Convertire

Dettagli

Microtech Srl. GPS TRACKER v3.0

Microtech Srl. GPS TRACKER v3.0 Microtech Srl GPS TRACKER v3.0 Manuale d Uso Rev1-1 - Indice: Descrizione pag. 3 Caratteristiche. pag. 3 Accensione/Spegnimento.. pag. 4 Funzionamento pag. 4 Segnalazione di errore pag. 4 Segnalazione

Dettagli

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

Dettagli

MERIDESTER SOFTWARE DI COMUNICAZIONE PER PC

MERIDESTER SOFTWARE DI COMUNICAZIONE PER PC MERIDESTER SOFTWARE DI COMUNICAZIONE PER PC Requisiti del sistema sistema operativo Windows XP o Vista processore Pentium 4 o equivalente RAM 512 Mb Video 1024x768 Porta USB USB 1.1 o 2.0 full speed Scheda

Dettagli

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

Dettagli

TASTIERA DI COMANDO E CONTROLLO PER INVERTERS EL.-5000

TASTIERA DI COMANDO E CONTROLLO PER INVERTERS EL.-5000 ELCOM S.R.L. TASTIERA DI COMANDO E CONTROLLO PER INVERTERS EL.-5000 ( Rev. 0.3s ) MANUALE USO TASTIERA EL.-5000 I pulsanti hanno le seguenti funzioni: Comando di START abilitazione alla marcia con accensione

Dettagli

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

Dettagli

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Architettura del Calcolatore Macchina di von Neumann Il calcolatore moderno è basato su un architettura

Dettagli

Codifica: dal diagramma a blocchi al linguaggio C++

Codifica: dal diagramma a blocchi al linguaggio C++ Codifica: dal diagramma a blocchi al linguaggio C++ E necessario chiarire inizialmente alcuni concetti. La compilazione Il dispositivo del computer addetto all esecuzione dei programmi è la CPU La CPU

Dettagli

Procedura aggiornamento firmware H02

Procedura aggiornamento firmware H02 Procedura aggiornamento firmware H02 Sommario Introduzione... 3 Caratteristiche versione firmware... 3 Strumentazione necessaria e requisiti di base... 3 Procedura aggiornamento... 4 Appendice... 11 Risoluzione

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

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

Dettagli

Introduzione al MATLAB c Parte 2

Introduzione al MATLAB c Parte 2 Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 18 gennaio 2008 Outline 1 M-file di tipo Script e Function Script Function 2 Costrutti di programmazione

Dettagli

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

Dettagli

IRSplit. Istruzioni d uso 07/10-01 PC

IRSplit. Istruzioni d uso 07/10-01 PC 3456 IRSplit Istruzioni d uso 07/10-01 PC 2 IRSplit Istruzioni d uso Indice 1. Requisiti Hardware e Software 4 1.1 Requisiti Hardware 4 1.2 Requisiti Software 4 2. Installazione 4 3. Concetti fondamentali

Dettagli

La memoria - generalità

La memoria - generalità Calcolatori Elettronici La memoria gerarchica Introduzione La memoria - generalità n Funzioni: Supporto alla CPU: deve fornire dati ed istruzioni il più rapidamente possibile Archiviazione: deve consentire

Dettagli

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

Dettagli

Procedura aggiornamento firmware

Procedura aggiornamento firmware Procedura aggiornamento firmware Sommario Introduzione... 3 Caratteristiche versione firmware... 3 Strumentazione necessaria e requisiti di base... 3 Operazioni preliminari... 4 Procedura aggiornamento...

Dettagli

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

Dettagli

4.1 FAX EMAIL: Sollecito consegne via email (Nuova funzione)

4.1 FAX EMAIL: Sollecito consegne via email (Nuova funzione) - 36 - Manuale di Aggiornamento 4 MODULI AGGIUNTIVI 4.1 FAX EMAIL: Sollecito consegne via email (Nuova funzione) È stata realizzata una nuova funzione che permette di inviare un sollecito ai fornitori,

Dettagli

7^ parte : Acquisizione della temperatura con LM35 e visualizzazione su display LCD. Author: Ing. Sebastiano Giannitto (ITIS M.

7^ parte : Acquisizione della temperatura con LM35 e visualizzazione su display LCD. Author: Ing. Sebastiano Giannitto (ITIS M. 7^ parte : Acquisizione della temperatura con LM35 e visualizzazione su display LCD Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO) Esperienzan 6 Lo scopo del progetto è realizzare un termometro

Dettagli

Parte 1. Vettori di bit - AA. 2012/13 1.1

Parte 1. Vettori di bit - AA. 2012/13 1.1 1.1 Parte 1 Vettori di bit 1.2 Notazione posizionale Ogni cifra assume un significato diverso a seconda della posizione in cui si trova Rappresentazione di un numero su n cifre in base b: Posizioni a n

Dettagli

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

Dettagli

WG-TRANSLATE Manuale Utente WG TRANSLATE. Pagina 1 di 15

WG-TRANSLATE Manuale Utente WG TRANSLATE. Pagina 1 di 15 WG TRANSLATE Pagina 1 di 15 Sommario WG TRANSLATE... 1 1.1 INTRODUZIONE... 3 1 TRADUZIONE DISPLAY FILE... 3 1.1 Traduzione singolo display file... 4 1.2 Traduzione stringhe da display file... 5 1.3 Traduzione

Dettagli

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

Dettagli

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

Dettagli

Invio SMS. DM Board ICS Invio SMS

Invio SMS. DM Board ICS Invio SMS Invio SMS In questo programma proveremo ad inviare un SMS ad ogni pressione di uno dei 2 tasti della DM Board ICS. Per prima cosa creiamo un nuovo progetto premendo sul pulsante (Create new project): dove

Dettagli

Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati

Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati Informatica 3 Informatica 3 LEZIONE 10: Introduzione agli algoritmi e alle strutture dati Modulo 1: Perchè studiare algoritmi e strutture dati Modulo 2: Definizioni di base Lezione 10 - Modulo 1 Perchè

Dettagli

Procedura aggiornamento firmware. Prestige

Procedura aggiornamento firmware. Prestige Procedura aggiornamento firmware Prestige Sommario Introduzione... 3 Caratteristiche versione firmware... 3 Strumentazione necessaria e requisiti di base... 3 Procedura aggiornamento... 4 Appendice...

Dettagli

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.6. Unità di controllo microprogrammata

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.6. Unità di controllo microprogrammata Lezione n.6 Unità di controllo microprogrammata 1 Sommario Unità di controllo microprogrammata Ottimizzazione, per ottimizzare lo spazio di memoria occupato Il moltiplicatore binario Esempio di architettura

Dettagli

12 - timer da cucina display a 4 cifre

12 - timer da cucina display a 4 cifre 12 - timer da cucina display a 4 cifre Il display led da 4 cifre utilizzato in questo esercizio e il modello HS410561K-32. Questo modello, e caratterizzato da 4 anodi (uno per ogni cifra) e dai 8 catodi,

Dettagli

Una volta inseriti tutti i parametri necessari premere.

Una volta inseriti tutti i parametri necessari premere. Esercitazione n 1 Questa esercitazione guidata ha lo scopo di mostrare come creare un semplice progetto per pilotare l accensione e lo spegnimento di un led attraverso uno degli switch della XSA board.

Dettagli

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:

Dettagli

DL8 config REVISIONE DATA

DL8 config REVISIONE DATA DL8 config I s t r u z i o n i p e r l u s o REVISIONE DATA 1.0 Aprile 2009 INSTALLAZIONE DEI DRIVER 1. spegnere DL8; 2. collegare il cavo dati in dotazione al DL8 e ad una porta USB libera del PC (prendere

Dettagli

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12}; ESERCIZI 2 LABORATORIO Problema 1 Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12}; Chiede all'utente un numero e, tramite ricerca

Dettagli

Il processore. Il processore. Il processore. Il processore. Architettura dell elaboratore

Il processore. Il processore. Il processore. Il processore. Architettura dell elaboratore Il processore Architettura dell elaboratore Il processore La esegue istruzioni in linguaggio macchina In modo sequenziale e ciclico (ciclo macchina o ciclo ) Effettuando operazioni di lettura delle istruzioni

Dettagli

Matematica in laboratorio

Matematica in laboratorio Unità 1 Attività guidate Attività 1 Foglio elettronico Divisibilità tra numeri naturali Costruisci un foglio di lavoro per determinare se a è divisibile per b, essendo a e b due numeri naturali, con a

Dettagli

Procedura aggiornamento firmware

Procedura aggiornamento firmware Procedura aggiornamento firmware Sommario Introduzione... 3 Caratteristiche versione firmware... 3 Strumentazione necessaria e requisiti di base... 3 Operazioni preliminari... 4 Procedura aggiornamento...

Dettagli

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

Dettagli

Variabili e tipi di dato

Variabili e tipi di dato Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per

Dettagli

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it

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

Dettagli

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

Dettagli

Procedura aggiornamento firmware

Procedura aggiornamento firmware Procedura aggiornamento firmware Sommario Introduzione... 3 Caratteristiche versione firmware... 3 Strumentazione necessaria e requisiti di base... 3 Operazioni preliminari... 4 Procedura aggiornamento...

Dettagli

Calcolatori Elettronici A a.a. 2008/2009

Calcolatori Elettronici A a.a. 2008/2009 Calcolatori Elettronici A a.a. 2008/2009 PRESTAZIONI DEL CALCOLATORE Massimiliano Giacomin Due dimensioni Tempo di risposta (o tempo di esecuzione): il tempo totale impiegato per eseguire un task (include

Dettagli

Calcolo numerico e programmazione Architettura dei calcolatori

Calcolo numerico e programmazione Architettura dei calcolatori Calcolo numerico e programmazione Architettura dei calcolatori Tullio Facchinetti 30 marzo 2012 08:57 http://robot.unipv.it/toolleeo Il calcolatore tre funzionalità essenziali:

Dettagli

All interno del computer si possono individuare 5 componenti principali: SCHEDA MADRE. MICROPROCESSORE che contiene la CPU MEMORIA RAM MEMORIA ROM

All interno del computer si possono individuare 5 componenti principali: SCHEDA MADRE. MICROPROCESSORE che contiene la CPU MEMORIA RAM MEMORIA ROM Il computer è un apparecchio elettronico che riceve dati di ingresso (input), li memorizza e gli elabora e fornisce in uscita i risultati (output). Il computer è quindi un sistema per elaborare informazioni

Dettagli

5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record

5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record 5.3 TABELLE In un sistema di database relazionali le tabelle rappresentano la struttura di partenza, che resta poi fondamentale per tutte le fasi del lavoro di creazione e di gestione del database. 5.3.1

Dettagli

Procedura aggiornamento firmware

Procedura aggiornamento firmware Procedura aggiornamento firmware Sommario Introduzione... 3 Caratteristiche versione firmware... 3 Strumentazione necessaria e requisiti di base... 3 Operazioni preliminari... 4 Procedura aggiornamento...

Dettagli

BARCODE. Gestione Codici a Barre. Release 4.90 Manuale Operativo

BARCODE. Gestione Codici a Barre. Release 4.90 Manuale Operativo Release 4.90 Manuale Operativo BARCODE Gestione Codici a Barre La gestione Barcode permette di importare i codici degli articoli letti da dispositivi d inserimento (penne ottiche e lettori Barcode) integrandosi

Dettagli

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Dall Algoritmo al Programma Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni IL PROGRAMMA Gli algoritmi sono modelli di descrizione astratti e per controllarne il funzionamento devono essere

Dettagli

Come masterizzare dischi con Nero 11

Come masterizzare dischi con Nero 11 Come masterizzare dischi con Nero 11 Non c è dubbio che Nero è diventato un sinonimo di masterizzatore di dischi, data la lunga esperienza sul mercato. Molte persone pensano in questo programma nel momento

Dettagli

NOZIONI ELEMENTARI DI HARDWARE E SOFTWARE

NOZIONI ELEMENTARI DI HARDWARE E SOFTWARE CORSO INTRODUTTIVO DI INFORMATICA NOZIONI ELEMENTARI DI HARDWARE E SOFTWARE Dott. Paolo Righetto 1 CORSO INTRODUTTIVO DI INFORMATICA Percorso dell incontro: 1) Alcuni elementi della configurazione hardware

Dettagli

mendiante un ciclo e finché il segnale rimane alto, si valuta il tempo T3 usando il timer del microcontrollore e una variabile di conteggio.

mendiante un ciclo e finché il segnale rimane alto, si valuta il tempo T3 usando il timer del microcontrollore e una variabile di conteggio. Svolgimento (a) Il sensore di temperatura ha un uscita digitale a 9 bit, emettendo un codice binario proporzionale al valore Temp richiesto. Possiamo pensare si tratti di un dispositivo 1-Wire. Un sistema

Dettagli

Corso introduttivo sui microcontrollori A. S. 2007 2008. Programmare i PIC in C. Timers Interrupts Prerequisiti: Lezione7 Lezione8.

Corso introduttivo sui microcontrollori A. S. 2007 2008. Programmare i PIC in C. Timers Interrupts Prerequisiti: Lezione7 Lezione8. Corso introduttivo sui microcontrollori A. S. 2007 2008 Programmare i PIC in C Prerequisiti: Lezione7 Lezione8 Nicola Amoroso namoroso@mrscuole.net NA L15 1 Timers - Interrupts I timers e gli Interrupts

Dettagli

EasyPrint v4.15. Gadget e calendari. Manuale Utente

EasyPrint v4.15. Gadget e calendari. Manuale Utente EasyPrint v4.15 Gadget e calendari Manuale Utente Lo strumento di impaginazione gadget e calendari consiste in una nuova funzione del software da banco EasyPrint 4 che permette di ordinare in maniera semplice

Dettagli

Problem solving elementare su dati vettoriali

Problem solving elementare su dati vettoriali Problem solving elementare su dati vettoriali Introduzione Verifiche su sequenze di dati Selezione o ricerca di dati 2 2006 Politecnico di Torino 1 Introduzione (1/2) I problemi di verifica consistono

Dettagli

ESERCIZI - SERIE N.1

ESERCIZI - SERIE N.1 ESERCIZI - SERIE N.1 ACQUISIZIONE DELLO STATO DI SEGNALI ON/OFF Problema: acquisizione, da parte di un'unità di elaborazione realizzata con tecnologia a funzionalità programmata, di un'informazione proveniente

Dettagli

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

Dettagli

Domande frequenti su Eee Pad TF201

Domande frequenti su Eee Pad TF201 I6915 Domande frequenti su Eee Pad TF201 Gestione file... 2 Come accedere ai dati salvati nella scheda SD, microsd e in un dispositivo USB? 2 Come spostare il file selezionato in un altra cartella?...

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di un programma, cioè di una sequenza di istruzioni descritte nel linguaggio interpretabile dal calcolatore

Dettagli

1. opzione 1, ubuntu accanto a windows

1. opzione 1, ubuntu accanto a windows INSTALLARE UBUNTU LINUX Per installare Ubuntu, si possono scegliere 3 diverse opzioni: 1. installazione accanto (o al posto) di windows 2. installazione all'interno di windows tramite Wubi 3. installazione

Dettagli

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

Dettagli

www.filoweb.it STAMPA UNIONE DI WORD

www.filoweb.it STAMPA UNIONE DI WORD STAMPA UNIONE DI WORD Molte volte abbiamo bisogno di stampare più volte lo stesso documento cambiando solo alcuni dati. Potremmo farlo manualmente e perdere un sacco di tempo, oppure possiamo ricorrere

Dettagli

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

Dettagli

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

SISTEMI DI NUMERAZIONE E CODICI

SISTEMI DI NUMERAZIONE E CODICI SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema

Dettagli

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

Dettagli

SUITE BY11250. Pannello Misure BY11250

SUITE BY11250. Pannello Misure BY11250 Via Como, 55 21050 Cairate (VA) Pagina 1 di 8 SUITE BY11250 (1.0.0.1) Pannello Misure BY11250 (1.0.0.1) IMPORTANTE Pagina 2 di 8 Le immagini riportate nel presente manuale fanno riferimento alle versioni

Dettagli

Corso di Informatica Applicata. Lezione 7. Università degli studi di Cassino

Corso di Informatica Applicata. Lezione 7. Università degli studi di Cassino Università degli studi di Cassino Corso di Laurea in Ingegneria della Produzione Industriale Corso di Informatica Applicata Lezione 7 Ing. Saverio De Vito e-mail: saverio.devito@portici.enea.it Tel.: +39

Dettagli

ESERCITAZIONI PRATICHE: Ø Creazione di un decoder BCD/DEC con porte logiche. Ø Esercitazione con decoder 4511 e display 7 segmenti.

ESERCITAZIONI PRATICHE: Ø Creazione di un decoder BCD/DEC con porte logiche. Ø Esercitazione con decoder 4511 e display 7 segmenti. BCD 7 SEGMENTI Il display BCD 7 segmenti è un visualizzatore di numeri che possono andare da zero a nove, ed è un dispositivo optoelettrico, cioè fornisce luce all applicazione di tensione ai suoi capi.

Dettagli

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

Dettagli

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,

Dettagli

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C.:luxx:. PREMESSE In questa guida non verranno trattati i costrutti di flusso, le funzioni, o comunque le caratteristiche del linguaggio, che si danno come presupposte.

Dettagli

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi Capitolo Terzo Primi passi con Microsoft Access Sommario: 1. Aprire e chiudere Microsoft Access. - 2. Aprire un database esistente. - 3. La barra multifunzione di Microsoft Access 2007. - 4. Creare e salvare

Dettagli