LE INTERRUPT. UTILIZZO PRATICO CON IL PIERIN PIC18 1
|
|
- Monica Dolce
- 5 anni fa
- Visualizzazioni
Transcript
1 Steve Blackbird (TardoFreak) LE INTERRUPT. UTILIZZO PRATICO CON IL PIERIN PIC18 22 June 2013 Introduzione Nel precedente articolo ho cercato di spiegare cosa sono le interrupt, in questo vorrei spiegare come si possono implementare in pratica. Per l' implementazione utilizzerò il PIERIN PIC18 spiegando nel dettaglio come viene implementata nel programma Demo. Il funzionamento del programma di Demo è semplice ed implementa un' interrupt ciclica che gestisce un solo timer (software) che conta all' indietro fino ad arrivare a zero per poi fermarsi (non diventa negativo). Questo timer software viene decrementato ogni millisecondo. Per fare questo è necessario, indispensabile utilizzare una interrupt? La risposta è NO! Si sarebbe potuto benissimo scrivere il programma semplicemente usando il timer senza interrupt. Se però servissero diversi timer software allora si che avrebbe senso implementare una interrupt ciclica. E' stata comunque implementata a scopo didattico per fornire un esempio di come si gestisce una interrupt, ed ora torna buona per questo articolo. I timer software L' idea che sta alla base dei timer software è questa: utilizzo un solo timer la cui interrupt interrompe il normale funzionamento ogni tot di tempo (in questo caso ogni ms) per decrementare più variabili numeriche che, osservate a livello di programma principale, si comportano come dei timer. Dicevo prima che utilizzare un' interrupt ciclica per un solo timer software ha poco senso, in effetti è vero. Ma se di timer ne avessi bisogno di 2, 3 o1 0, 20 allora si che sarebbe la scelta ottimale! Con poche righe di codice e poco lavoro per il micro potrei benissimo implementare una cinquantina di timer. Se poi il programma del micro ha a che fare con lampeggi, ritardi "umani" la scelta dei timer software è quasi obbligatoria perché semplifica enormemente la vita. Pensiamo ad esempio ad un antifurto. E' pieno di timer: Due timer per la zona ritardata. Quando esco di casa e devo inserire l' antifurto ho bisogno di una zona che, anche se rileva la mia presenza mi lasci del tempo per uscire (che può essere lungo visto che appena uscito di caso LE INTERRUPT. UTILIZZO PRATICO CON IL PIERIN PIC18 1
2 sono ancora nei paraggi) o per entrare e disinserire l' antifurto (tempo più breve). Un timer per l' indicatore di inserzione. Quando inserisco l' antifurto devo avere una qualche segnalazione che mi dica che è inserito e che mi sta dando il tempo per uscire, oppure quando rientro che mi indichi che devo disinserire l' antifurto. Quale indicazione migliore di un LED lampeggiante? Per implementare il lampeggio serve un timer. Un timer per l' allarme. Non posso far suonare l' allarme 24 ore su 24! Dopo un certo tempo deve smettere altrimenti il vicinato mi darebbe fuoco alla casa (e farebbe bene) Se ho comprato un combinatore telefonico questi dovrà essere attivato da un impulso, un contatto che rimane chiuso per un certo tempo (per esempio 500ms). Anche per questo c'è bisogno di un timer. Notare bene che tutti questi ritardi sono ritardi "umani", si va da 200 ms. giù di lì per il lampeggio del LED ad alcuni minuti per l' uscita di casa o per l' attivazione della sirena, quindi i timer possono benissimo avere una risoluzione di 10 ms, ad esempio e tutto fila liscio. Il timer 2 L' interrupt ciclica, nel programma di demo, viene generata dal timer 2. Perché si è utilizzato proprio il timer 2 e non l' 1 o il 3? Perché il timer 2 è un timer con comparatore ed anche perché il timer 2 è il più semplice. Vediamolo nel dettaglio. Timer2.jpg Esaminiamo nel dettaglio come funziona questo aggeggio Il clock (in basso a sinistra) è preso direttamente dal clock del sistema (frequenza dell' oscillatore diviso 4) ed entra in un prescalere il cui rapporto di divisione può essere di 1:1, 1:4 o 1:16 e viene selezionato tramite due bit T2CKPS<1.0> del registro di controllo T2CON. Quindi nel nostro caso possiamo scegliere di fargli arrivare direttamente i 12MHz oppure 3MHz o LE INTERRUPT. UTILIZZO PRATICO CON IL PIERIN PIC18 2
3 750KHz. Altre possibilità non ce ne sono. E' molto semplice ma anche limitato proprio dalla sua semplicità ma a noi basta ed avanza. L' uscita del prescaler va ad incrementare ad ogni impulso il registro ad 8 bit del timer TMR2 che conta in avanti. Il comparatore confronta continuamente il contenuto del registro del timer con il registro PR2 (in basso a destra) Quando il contenuto del timer e del PR2 sono identici il comparatore genera un impulso che nello schema a blocchi è indicato come TMR2/PR2 Match (proprio sopra il comparatore) che fa due cose: azzera il timer e manda un impulso al postscaler. A dire il vero invia anche l' impulso alla periferica per il PWM ma questo, per ora, non ci interessa. Il postscaler (in alto) è anche lui un contatore che genera un impulso dopo aver ricevuto un tot di impulsi dal comparatore. Il numero di impulsi da ricevere per mandarne via uno è programmabile tramite i 4 bit T2OUTPS<3.0> del registro di controllo T2CON. In pratica possiamo fare in modo che l' uscita del postscaler sia attiva dopo, chessò, 3 impulsi o 12 impulsi, insomma da 1 a 16. Impostare questi bit a 0 vuol dire che l' uscita Set TMR2IF (in alto a destra) viene attivata dopo il primo TMR2/PR2 Match. L' uscita Set TMR2IF non fa altro che mettere ad 1 e lasciarlo così quello che è il flag dell' interrupt. Come funziona l' interrupt L' interrupt del timer 2 innanzi tutto funziona solo se è abilitata. Dopo il reset tutte le interrupt sono disabilitate e si abilitano settando opportunamente i bit di abilitazione. Nel caso del timer 2 il bit di abilitazione si trova nel registro PIE1 (Peripheral Interrupt Enable) ed è il bit TMR2IE. Qundi se vogliamo utilizzare questa interrupt dovremo quindi mettere ad 1 questo bit. Il PIC18F47J53 ha la possibilità (ma non si è obbligati a farlo) di impostare la priorità dell' interrupt. Di priorità ce ne sono solo due: alta e bassa. Nel caso del programma Demo non c' era bisogno di impostare il micro per gestire anche le priorità proprio perché di interrupt ce n'è una sola ma si è voluto farlo a scopo didattico. Quindi, oltre ad abilitare l' interrupt, dobbiamo anche impostare la priorità e questo viene fatto tramite il bit TMR2IP del registro IPR1 (Interrupt Priority Register). Settando questo bit la priorità sarà alta mentre resettandolo la priorità sarà bassa. Analizziamo come funziona tutto l' ambaradan. Il micro è li, bello paciarotto, che sta eseguendo il suo programma principale come io in questo momento sto scrivendo questo articolo. Il blocco del timer mette ad 1 il bit TMR2IF. Visto che l' interrupt è abilitata questa viene generata. Nel mio caso sarebbe come se squillasse il telefono. LE INTERRUPT. UTILIZZO PRATICO CON IL PIERIN PIC18 3
4 Il micro salva automaticamente il contesto e si fionda nella funzione di servizio delle interrupt (bassa o alta). Nel caso del programma Demo nella funzione di servizio delle priorità basse E qui arriva il bello (o il brutto, dipende dai punti di vista) il micro deve capire chi diamine ha generato l' interrupt. Questa è una particolarità dei PIC, negli ATmega non funziona così, ogni interrupt ha la sua funzione di servizio. Il PIC no e quindi, per capire chi è stato ad interrompere il suo lieto fare deve andarsi a guardare i flag di interrupt. Ovvio che si guardano solo i flag che interessano. Nel Demo l' unico flag che interessa è il TMR2IF. Si potrebbe anche evitare di andarlo a testare ma si fa lo stesso perché se è vero che in questo programma di interrupt ce n'è una sola, in altri programmi ce ne possono essere molte di più. Una volta capito che il rompiscatole è stato il timer 2 fa quello che deve fare per servire l' interrupt. Nel nostro caso se la variabile che funge da timer software ha un valore maggiore di 0 la decrementa. Resetta il bit TMR2IF. Questo deve sempre essere fatto alla fine. A questo punto è finita l' esecuzione della funzione di servizio. Il micro recupera automaticamente il contesto e torna a fare quello che stava facendo prima felice e contento. L' implementazione E siamo giunti al punto in cui andiamo a vedere nello specifico come si scrive un programma che usa l' interrupt del timer 2 analizzando il sorgente del programma Demo. Programmazione del timer Al reset tutte le periferiche sono inattive (Deo Gratias) e quindi bisogna in qualche modo programmarle, settare bit a destra ed a sinistra per far fare loro quello che vogliamo. La prima affermazione (le periferiche sono disattive al reset) fa però a pugni con quello che si legge nel sorgente del programma infatti la prima istruzione relativa all' inizializzazione del timer è // De-inizializza il timer2. Non sarebbe necessario perché il micro esce // allo stato di RESET ma è comunque buona pratica de-inizializzare sempre // le periferiche per non tralasciare nessun bit. timer2_deinit(); In effetti la chiamata alla funzione timer2_deinit è assolutamente inutile in questo caso. Però questo è un modo di fare che si usa con microcontrollori più potenti e complessi come i Cortex-M o bestioni del genere. E visto che al mondo non esistono solo i PIC18, oggi si lavora con un micro semplice ma un domani si lavorerà magari LE INTERRUPT. UTILIZZO PRATICO CON IL PIERIN PIC18 4
5 con un micro più complesso e potente penso che sia meglio prendere da subito la buona abitudine di fare in questo modo: scrivere e chiamare una funzione di deinizializzazione prima di inizializzare una periferica. Per carità, non si è obbligati a farlo ma io lo suggerisco, anche solo per prendere una buona abitudine. Andiamo avanti // Inizializza il timer 2 per interrupt ogni millisecondo. // prescaler divide per 16 T2CONbits.T2CKPS = 2; // Postscaler divide per 5 T2CONbits.T2OUTPS = 4; // Imposta il valore comparatore a 150 PR2 = 150; vogliamo che il timer generi una interrupt ogni milllisecondo. Il nostro clock di sistema è di 12MHz (frequenza dell' oscillatore divisa per 4). Impostando il prescaler a 2 (cioè divide per 16) avremo un clock che entra dentro al registro del timer con frequenza 750KHz. Nel registro di comparazione PR2 impostiamo il valore di 150. Questo vuol dire che dopo 150 conteggi a 750KHz il comparatore genererà un impulso, cioè ogni 200 us. Per avere una interrupt ogni millisecondo non ci resta che impostare il postscaler a 5 in modo che generi una interrupt ogni 5 match ed il gioco è fatto. Abilitazione delle interrupt Dopo avere opportunamente inizializzato il timer, prima di farlo partire, dobbiamo istruire il micro a gestire interrupt con priorità sia alta che bassa ed abilitarle tutte. // Selezione ed abilitazione delle interrupt // Ora che si sono inizializzate tutte le periferiche si possono abilitare // Oppurtunamente le interrupt // abilita le interrupt a bassa priorita' RCONbits.IPEN = 1; // abilta tutte le interrupt a priorità bassa INTCONbits.GIEL = 1; // Abilita tutte le interrupt in generale INTCONbits.GIEH = 1; Non ci resta altro da fare che far partire il timer mettendo ad 1 il bit TMR2ON del registro T2CON. // Con le interrupt abilitate possiamo ora far partire il timer 2 // Accende il timer T2CONbits.TMR2ON = 1; LE INTERRUPT. UTILIZZO PRATICO CON IL PIERIN PIC18 5
6 Da questo momento in poi il timer sta funzionando e genererà continuamente una interrupt ogni millisecondo. La funzione di servizio "Signore e signori è il comandante che vi parla. In questo momento stiamo sorvolando la funzione di servizio delle interrupt, zona di turbolenze. Vi preghiamo di ritornare ai vostri posti ed allacciare le cinture di sicurezza. Il personale di bordo sarà a vostra disposizione. Grazie per avere scelto PIERIN-AIR per i vostri spostamenti" In fondo tanto turbolenta non lo è, diamoci uno sguardo // // Funzione di servizio delle interrupt a BASSA priorità // #pragma interruptlow lowpriorityinterrupt void lowpriorityinterrupt() { // Verifica quale flag ha causato l' interrupt // Esegui la parte di codice di servizio dell' interrupt // Azzera il flag che ha causato l' interrupt //... // Gestione dell' interrupt del timer 2 if(pir1bits.tmr2if) { // gestione del timer software. Il timer software deve decrementarsi // fino ad arrivare a 0. Una volta arrivato a 0 resta fermo a 0. if (timer_delay) timer_delay--; } } // Resetta il flag che ha generato l' interrupt PIR1bits.TMR2IF = 0; La prima istruzione è una direttiva del compilatore per dire che l' interrupt di priorità bassa interruptlow sarà gestita dalla funzione lowpriorityinterrupt il cui prototipo (da scrivere prima di questa #pragma) è contenuto nel file mappa_int.h. Questo perché il PIERIN può funzionare con il suo bootloader oppure abbinato al Pickit e quindi sono necessarie alcune compilazioni condizionate contenute, appunto, nel file mappa_int.h Subito dopo troviamo la dichiarazione della funzione di servizio della interrupt. All' interno ci sono alcuni commenti che spiegano già come fare per scrivere LE INTERRUPT. UTILIZZO PRATICO CON IL PIERIN PIC18 6
7 correttamente la funzione, cosa che poi è fatta più avanti dopo la riga di commento // Gestione dell' interrupt del timer 2 if(pir1bits.tmr2if) e' l' istruzione che testa il bit TMR2IF per sapere se è stato il timer 2 a generare l' interrupt. Nel caso che sia lui allora si procede con if (timer_delay) timer_delay--; timer_delay è una variabile di tipo unsigned int e dichiarata come volatile. Nota di programmazione: la classe di memorizzazione volatile obbliga il compilatore a leggere sempre il valore della variabile. Questo perché l' eventuale ottimizzatore potrebbe dare per scontato che la variabile, una volta letta, non cambi di valore. La si è dichiarata così perché questa variabile potrebbe essere modificata da un momento all' altro e non si può sapere a priori in quale punto del programma principale arriverà la interrupt. in ogni caso l' operazione che si fa è semplice: se questa variabile è diversa da 0 la si decrementa, altrimenti la si lascia stare a 0. Otteniamo così una variabile a cui possiamo dare un valore in qualsiasi punto del programma principale sapendo che verrà decrementata ogni millisecondo fino ad arrivare a 0. Quindi se gli daremo un valore di 100 sapremo che quando il suo valore sarà 0 vuol dire che sono passati 100 ms. La cosa interessante è che noi potremmo utilizzare quante variabili vogliamo per far fare loro il timer e quindi, mediante l' utilizzo di un solo modulo timer, noi potremmo avere un numero a piacere di timer software. Come ultima istruzione PIR1bits.TMR2IF = 0; azzera il flag che ha generato l' interrupt. La funzione è terminata e quindi il micro ritornerà a fare il suo lavoro di sempre. Conclusioni L' interrupt sul timer è una di quelle classiche che si trovano un po' ovunque, ed è anche ottima per capire come usare le interrupt e perché. In particolare la interrupt ciclica torna utile per diverse applicazioni, un esempio è quello riportato nell' articolo che parla del PWM facile. Si può anche facilmente implementare un orologio, oppure usarla come base tempi per il pilotaggio di display in multiplexing o per la scansione di tastiere a matrice. Insomma le applicazioni sono tante. Un ultima considerazione su quando usare le interrpt. Vedo a volte alcuni principianti che vorrebbero usare le interrupt per leggere un valore, ad esempio dall' ADC. In quel caso non serve implementare una interrupt, anzi è controproducente perché ci si va ad incasinare la vita per niente. Nel caso dell' ADC, lo si fa partire, si aspetta LE INTERRUPT. UTILIZZO PRATICO CON IL PIERIN PIC18 7
8 che abbia finito la conversione e poi si legge il risultato. Le interrupt ci stanno come la bagna caoda sul tiramisù. Certamente ci sono casi particolari in cui si usano anche con l' ADC ma non è la norma, almeno fino a quando si parla di programmi per uso amatoriale o didattico. Le interrupt si devono usare solo quando servono altrimenti se ne fa a meno. Come ho detto all' inizio del articolo il programma di Demo si può fare benissimo senza implementare l' interrupt, basterebbe sapere, andando a testare il bit TMR2IF, che questo ha raggiunto il valore del comparatore e che quindi è trascorso il tempo di un millisecondo direttamente dal programma principale. Come ho detto all' inizio del articolo il compito del programma Demo non è solo quello di fare quello che deve fare ma anche di dare qualche un esempio di come si usano le interrupt. Sperando di aver dato un contributo per l' apprendimento delle interrupt (perdonatemi errori ed inesattezze e magari fatemeli notare) non mi resta che augurare a tutti BUONA SPERIMENTAZIONE! Estratto da " index.php?title=userspages:tardofreak:le-interrupt-utilizzo-pratico-con-il-pierinpic18" LE INTERRUPT. UTILIZZO PRATICO CON IL PIERIN PIC18 8
PIC18F47J53 COME FARE UN PWM FACILE E
Steve Blackbird (TardoFreak) PIC18F47J53 COME FARE UN PWM FACILE E MULTICANALE 11 June 2013 Di tanto in tanto capita che qualche utente del forum richieda un circuito per variare in modo lineare o PWM
GENERATORE DI BASE TEMPI
Steve Blackbird (TardoFreak) GENERATORE DI BASE TEMPI 4 October 2010 Non è passato neanche un anno dalla mia iscrizione in questo bellissimo sito ed in questo, seppur breve periodo, frequentando il forum
LE INTERRUPT. TEORIA "SOFT" PER I NEOFITI 1
Steve Blackbird (TardoFreak) LE INTERRUPT. TEORIA "SOFT" PER I NEOFITI 22 June 2013 Introduzione Mi capita abbastanza di sovente vedere che molti neofiti aspiranti microcontrollisti hanno qualche difficoltà
Nicola Amoroso. Corso introduttivo sui microcontrollori A. S La programmazione dei PIC TIMERS.
Corso introduttivo sui microcontrollori A. S. 2007 2008 TIMERS Nicola Amoroso namoroso@mrscuole.net NA L7 1 Timers I timer sono precisi contatori, che possono essere configurati per incrementarsi su fronti
CONTATORE/TIMER PROGRAMMABILE CTC Z80 1. Piedinatura 2. Struttura interna 4. Modo timer 5. Modo Counter 8. Programmazione del CTC 13
CONTATORE/TIMER PROGRAMMABILE CTC Z80 1 Piedinatura 2 Struttura interna 4 Modo timer 5 Modo Counter 8 Programmazione del CTC 13 Gerarchia di priorità delle interruzioni 17 Interfacciamento 17 Contatore/Timer
TUTORIAL GPL_BENZINA CON PIC16F1826 (UTILIZZO DELL ADC)
TUTORIAL GPL_BENZINA CON PIC16F1826 (UTILIZZO DELL ADC) Tutorial di Maroncelli Matteo e Zoffoli Federico, 5A. Creare un programma che simula gli indicatori di livello da serbatoi GPL e Benzina. Attraverso
Gestione Degli INTERRUPT
Gestione Degli INTERRUPT Il PIC 16F876 possiede vari tipi di Interrupt. Si parla di 14 differenti sorgenti di interrupt, ma molto facilmente nella programmazione se ne terranno in considerazione ben pochi:
Davide Gennaretti, Matteo Nicolini
Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II Facoltà di Ingegneria Elettronica Cesena Cosa sono i microcontrollori? Piccoli computer concentrati in un chip Un Datapath
Architettura degli elaboratori A.A
Architettura degli elaboratori A.A. 2018-2019 Prima prova di verifica intermedia 2 nov 2018 Compito Tipo A Indicare in alto a destra su tutti i fogli ricevuti il proprio nome, cognome, numero di matricola
Corso introduttivo sui microcontrollori. Un sistema tastierino a matrice 4x4 da collegare alla nostra demoboard AnxaPic.
Corso introduttivo sui microcontrollori Un sistema tastierino a matrice 4x4 da collegare alla nostra demoboard AnxaPic Nicola Amoroso namoroso@mrscuole.net na_16f88_key4x4 1 Colleghiamo un tastierino a
Inizializzare oggetti
Inizializzare oggetti Uso della Classe Software per TLC - AA 2008/2009 1 Costruttori e polimorfismo Uso della Classe Un codice migliore Software per TLC - AA 2008/2009 2 Costruttori ed Ereditarietà Output:
Facciamo lampeggiare un led
Facciamo lampeggiare un led Passiamo a fare qualche esercizio, il più semplice per iniziare a programmare con Arduino è il canonico esercizio blink, che trovate anche negli esempi del programma. Si tratta
Nicola Amoroso. Corso introduttivo sui microcontrollori PIC PWM.
Corso introduttivo sui microcontrollori PIC PWM Generare segnali PWM con il PIC16F877 Tecniche e consigli Nicola Amoroso namoroso@mrscuole.net na_pwm 1 uc Pic PWM Un segnale PWM (Pulse Width Modulation
GESTIONE DEI TEMPI CON IL TIMER1 DEL PIC16F876
GESTIONE DEI TEMPI CON IL TIMER1 DEL PIC16F876 6.0 TIMER1 MODULE The Timer1 module is a 16-bit timer/counter consisting of two 8-bit registers (TMR1H and TMR1L), which are readable and writable. The TMR1
Indovina la lettera...
Indovina la lettera... La lezione di oggi consiste nel preparare un programma che chiede all'utente di indovinare quale sia il carattere generato dal programma stesso in modo casuale. Il numero totale
Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22
Lezione 21 e 22 - Allocazione dinamica delle matrici - Generazione di numeri pseudocasuali - Funzioni per misurare il tempo - Parametri del main - Classificazione delle variabili Valentina Ciriani (2005-2008)
TCP - TIMER CICLICO PROGRAMMABILE
OWNER s MANUAL MANUALE ISTRUZIONI (per firmware v. 2.0 B) TCP - TIMER CICLICO PROGRAMMABILE 2018 by Valter Narcisi www.narcisivalter.it A1 PROGRAMMABLE CYCLIC TIMER with PIC16F628A CARATTERISTICHE / FEATURES
Vogliamo far lampeggiare i led collegati come in figura ai bit della porta D del PIC 18F8722 presente sulla demo board in dotazione al laboratorio.
Lampeggio di 8 led Vogliamo far lampeggiare i led collegati come in figura ai bit della porta D del PIC 18F8722 presente sulla demo board in dotazione al laboratorio. Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1
PIERIN PIC18 - MISURARE LA TEMPERATURA CON
Steve Blackbird (TardoFreak) PIERIN PIC18 - MISURARE LA TEMPERATURA CON GLI NTC 30 June 2013 Introduzione Quando si uniscono la conoscenza dell' elettronica, la matematica e la possibilità di far funzionare
Centralina controllo pompa
Centralina controllo pompa INDICE 1 Il progetto...4 2 Gestione...6 2.1 TaskA_Main...6 2.2 TaskB_CpuClock...8 2.3 TaskC_InOut...12 2.4 Task ausiliari...13 2.5 Parametri ritentivi...13 3 Sonar...14 3.1 TaskD_Sonar...17
Introduzione alle macchine a stati (non definitivo)
Introduzione alle macchine a stati (non definitivo) - Introduzione Il modo migliore per affrontare un problema di automazione industriale (anche non particolarmente complesso) consiste nel dividerlo in
Note su. Interruzioni. e Multi Rate Timer
Introduzione alla progettazione di sistemi embedded a microcontrollore Note su Interruzioni e Multi Rate Timer prof. Stefano Salvatori A.A. 2017/2018 Eccetto dove diversamente specificato, i contenuti
Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni
Componenti principali Componenti e connessioni Capitolo 3 CPU (Unita Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro 1 2 Architettura di Von Neumann Dati e instruzioni in memoria
Raccolta Test di Laboratorio di Sistemi a Microcontrollore
Raccolta Test di Laboratorio di Sistemi a Microcontrollore prof. Corrado Santoro 1 Digital I/O 1. Quale delle seguenti istruzioni permette di porre a 0 la linea PC4? GPIOC->ODR &= (int32_t)0x10; GPIOC->ODR
Panoramica del progetto DMBoard ICS
Panoramica del progetto DMBoard ICS Sommario 1. HARDWARE... 1 1.1 Cos è DMBoard ICS... 2 1.2 DMBoard ICS come strumento didattico... 2 2. SOFTWARE... 2 2.1 Cos è DMDesign... 2 2.2 Cos è DMstate... 3 2.3
Corso di programmazione Arduino DI MALVEZZI DAVIDE
Corso di programmazione Arduino DI MALVEZZI DAVIDE Argomenti Pin digitali e pin analogici Gestione di timer e bottoni Utilizzo della porta seriale Oggetto String Controllo di schermi LCD Utilizzo dell
Il Theremin con il microcontrollore
Il Theremin con il microcontrollore Possiamo costruire uno strumento simile al Theremin utilizzando un dispositivi programmabile come il microcontrollore e un sensore di distanza (ultrasuoni). A secondo
Le reti sequenziali sincrone memorizzano il proprio stato in dei FF-D
Reti Sincrone Le reti sequenziali sincrone memorizzano il proprio stato in dei FF-D Le variabili di stato future sono quelle all ingresso dei FF-D mentre le variabili di stato presente sono le uscite dei
La ripetizione. Cicli ed iterazioni. Flusso di esecuzione ciclico. La ripetizione. Flusso di esecuzione ciclico. Errore frequente
oncetto di ciclo Struttura di un ciclo Numero di iterazioni note Numero di iterazioni ignote icli ed iterazioni 5 lusso di esecuzione ciclico È spesso utile poter ripetere alcune parti del programma più
PIC E DISPLAY A 7 SEGMENTI CON
Steve Blackbird (TardoFreak) PIC E DISPLAY A 7 SEGMENTI CON MULTIPLEXING 12 September 2010 Display a 7 segmenti I display a LED a 7 segmenti fecero apparizione più di 30 anni fa nelle prime calcolatrici
Programmazione orientata agli oggetti. Ivan Lanese
Programmazione orientata agli oggetti Ivan Lanese Argomenti Programmazione orientata agli oggetti Classi Oggetti Costruttori Scrivere grosse applicazioni La gran parte delle applicazioni sono GROSSE Windows
Il processore Intel 8086
Il processore Intel 8086 Il processore Intel 8086, introdotto sul mercato nel giugno 1978 è stato il primo microprocessore a 16 bit; esso fu utilizzato nel 1981 per il Personal Computer IBM XT. È il progenitore
Non Food Dispenser MANUALE D USO DELLA SCHEDA ELETTRONICA CON LETTORE DI BADGE. Sinapsi NON-Food REV. 3 DEL 15/07/08
Non Food Dispenser MANUALE D USO DELLA SCHEDA ELETTRONICA CON LETTORE DI BADGE Sinapsi NON-Food REV. 3 DEL 15/07/08 INDICE 1. CARATTERISTICHE GENERALI... 3 2. SELEZIONE DEI MENÙ... 3 1. Lingua... 4 2.
Informatica per Statistica Riassunto della lezione del 21/10/2011
Informatica per Statistica Riassunto della lezione del 1/10/011 Igor Melatti Costrutti del linguaggio C: ripasso Si consideri il programma C alla Figura 1 ci sono due dichiarazioni di funzioni, insertion
Informatica per Statistica Riassunto della lezioni del 14/11/2012 e 16/11/2012
Informatica per Statistica Riassunto della lezioni del 14/11/2012 e 16/11/2012 Igor Melatti Cenni sui puntatori in C Per ogni variabile normale dichiarata, il compilatore riserva una precisa quantità di
Componenti principali
Componenti e connessioni Capitolo 3 Componenti principali n CPU (Unità Centrale di Elaborazione) n Memoria n Sistemi di I/O n Connessioni tra loro Architettura di Von Neumann n Dati e instruzioni in memoria
Analisi dei dati con Excel
Analisi dei dati con Excel memo I primi rudimenti Operazioni base Elementi caratteristici di excel sono: la barra delle formule con la casella nome ed il bottone inserisci funzione, nonché righe, colonne
Componenti e connessioni. Capitolo 3
Componenti e connessioni Capitolo 3 Componenti principali CPU (Unità Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro Architettura di Von Neumann Dati e instruzioni in memoria (lettura
ESPRESSIONI. Ivan Lanese
ESPRESSIONI Ivan Lanese Argomenti Espressioni Spaziatura e commenti Per domani Domani sarete divisi in 2 gruppi Il gruppo coi portatili qui in aula Controllate di essere in grado di avviare Eclipse sul
Nicola Amoroso. Corso introduttivo sui microcontrollori A. S La programmazione dei PIC InterruptS.
Corso introduttivo sui microcontrollori A. S. 2007 2008 InterruptS Nicola Amoroso namoroso@mrscuole.net NA L8 1 Interrupts Gli interrupts sono dei componenti software-hardware, interni al microcontrollore,
Lezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione
Lezione 5 e 6 - Concetto di blocco - Controllo del flusso di un programma - Costrutti per la scelta if e switch - Costrutti while e for - Operatori in C Fabio Scotti (2004-2009) Laboratorio di programmazione
Guida alla Settima Esercitazione
Guida alla Settima Esercitazione curata da Ilaria Casale La seguente esercitazione è divisa in due parti. Nella prima parte si comprenderà come gestire la periferica GPIO per generare un'interruzione.
CONTROLLARE UN SERVOCOMANDO A DISTANZA. 1
Massimo Peino (mpeino) CONTROLLARE UN SERVOCOMANDO A DISTANZA. 30 January 2012 Introduzione Quest'articolo segue all'articolo "CONTROLLARE UN SERVOCOMANDO CON UN PIC". Secondo me vi conviene darci un occhiata
Qualsiasi programma in C++ segue lo schema:
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
Il signor Rigoni DAL MEDICO
5 DAL MEDICO Per i giornali, Aristide Rigoni è l uomo più strano degli ultimi cinquant anni, dal giorno della sua nascita. È un uomo alto, forte, con due gambe lunghe e con una grossa bocca. Un uomo strano,
PIERIN PIC18 UNBOXING
brabus PIERIN PIC18 UNBOXING 20 June 2013 Dopo pochi giorni dall'"ordine ufficiale" su EY, l'ambito PIERIN PIC18 è arrivato anche a casa mia! PIERIN_1.jpg L'oggetto è indubbiamente pratico e versatile,
PROGRAMMAZIONE AVANZATA PER POMPE DPZ
PROGRAMMAZIONE AVANZATA PER POMPE DPZ FRONTALINO COMANDI R 0/4--20 20--0/4 % n:1 1:n 1:c C RS-485 Level Flow Pause STOP Memory Alarm Start Stop Mode AREA DEL DISPLAY icona illuminata significato Level
Esercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento
Architettura degli Elaboratori, a.a. 2005-06 Esercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento Esercizio 1 (svolto) a) Compilare in assembler Risc (Cap. V) un programma
PIC18F47J53 UN MODULO IN C PER
Steve Blackbird (TardoFreak) PIC18F47J53 UN MODULO IN C PER PILOTARE DISPLAY LCD 18 June 2013 Introduzione Se è vero che un programma in C lo si può scrivere all' interno di un unico file è anche vero
LAMPEGGIO LED TRAMITE TIMER INTERRUPT - PARTE 4 1
Danilo B (ildani) LAMPEGGIO LED TRAMITE TIMER INTERRUPT - PARTE 4 15 January 2013 Introduzione Questa è la quarta ed ultima parte dell'articolo Lampeggio led tramite Timer Interrupt. Non lampeggia Come
Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);
Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i
ISA Input / Output (I/O) Data register Controller
ISA Input / Output (I/O) Numerose Periferiche di tanti tipi diversi, collegati alla CPU mediante BUS diversi. Solo Input (tastiera, mouse), producono dati che la CPU deve leggere. Solo Output (Schermo),
Corso Arduino Maggio Nicola Corna Lezione 2 - segnali analogici, audio e video
Corso Arduino 2015 25 Maggio 2015 Nicola Corna nicola@corna.info Lezione 2 - segnali analogici, audio e video Nicola Corna Arduino 2015 Lezione 2 1 / 43 Segnali analogici L altra volta abbiamo lavorato
Sauna (Bagno Turco) + Radio FM Stereo + Faro alogeno 10W
Via Moriconi n 4/B 60035 Jesi (AN) P.IVA 00738790427 Tel. 0731 605587 Fax 0731 607757 e-mail: info@aes-elettronica.com Sauna (Bagno Turco) + Radio FM Stereo + Faro alogeno 10W Caratteristiche Pannello
Programmare con le interruzioni (2)
Programmare con le interruzioni (2) G. Lettieri 12 Aprile 2018 Nelle Figure 1 e 2 riportiamo una versione diversa dell esempio visto la volta precedente. Tutta l elaborazione è stata spostata direttamente
Voglio scrivere un romanzo (parte 2)
Ecco, utilizzando "Blocco note", ho incominciato a scrivere il mio "romanzo". Ma che brutto! Non riesco a dare una forma accettabile al mio romanzo: se lo dovessi presentare a qualcuno per farmelo pubblicare,
Programmazione orientata agli oggetti. Ivan Lanese e Cosimo Laneve
Programmazione orientata agli oggetti Ivan Lanese e Cosimo Laneve Argomenti Programmazione orientata agli oggetti Classi Oggetti Costruttori Programmazione orientata agli oggetti È un paradigma di programmazione
Appunti di C - Puntatori 1
Appunti di C - Puntatori 1 1 Introduzione Una variabile in C è caratterizzata da: un TIPO un NOME un VALORE un INDIRIZZO Esempi: dichiara una variabile di TIPO int (quindi intero), di NOME a, di VALORE
Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.
Cicli e array Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione all ambiente
Laboratorio su Programmazione Concorrente in C. Problemi classici e derivati Dalla Ottava lezione di laboratorio in avanti
Laboratorio su Programmazione Concorrente in C Problemi classici e derivati Dalla Ottava lezione di laboratorio in avanti NOTA BENE: E INSISTO!!!!! Usare il comando man nomefunzionedilibreria per ottenere
Manualetto. Aggiornato al 31/07/2014
Sistema emulato Periferiche 8086 Manualetto s165178 @ studenti.polito.it Aggiornato al 31/07/2014 Canali del sistema emulato Routine Descrizione Canale Indice IVT ISR_PA_IN L 8086 riceve un dato dalla
A = Quindi > b=a(:) b =
Una breve digressione. Se si vuole uscire da Matlab, occorre digitare ( come già riferito)il comando >> quit Se si vogliono utilizzare le variabili create per una successiva sessione di lavoro, prima di
TT 73 TEMPORIZZATORE ELETTRONICO DIGITALE A MICROPROCESSORE
TT 73 TEMPORIZZATORE ELETTRONICO DIGITALE A MICROPROCESSORE CARATTERISTICHE TECNICHE CARATTERISTICHE MECCANICHE Contenitore Plastico autoestinguente UL 94 V0 Dimensioni 72x72 mm DIN profondità 96 mm Peso
K51-AVR SCHEDA DI SPERIMENTAZIONE PER MICRO FAM ED AVR. Salvatore Damino. 28 Febbraio 2001 ELETTRONICA
K51-AVR SCHEDA DI SPERIMENTAZIONE PER MICRO FAM. 8051 ED AVR 4ª parte Salvatore Damino Per la prima volta, in questa serie di articoli, ci occuperemo di conoscere un componente che non lavora con il I2C-BUS
Curtarolo (Padova) Italy. Guida alla programmazione della centrale GUARDIAN
Curtarolo (Padova) Italy Guida alla programmazione della centrale GUARDIAN GENERALITÁ Per entrare in programmazione si deve digitare il codice installatore (default ) e attendere la comparsa della lettera
Stack e nidificazione dei sottoprogrammi Cos è un sottoprogramma? La chiamata di un sottoprogramma... 6
Stack e nidificazione dei sottoprogrammi... 2 Cos è un sottoprogramma?... 2 La chiamata di un sottoprogramma... 6 Lo stack... 9 Il nesting dei sottoprogrammi.... 12 Lo stack pointer... 17 Stack e nidificazione
Assegnazione di una variabile
Assegnazione di una variabile Per scrivere un valore dentro una variabile si usa l operatore di assegnazione, che è rappresentato dal simbolo =. Quindi, se scrivo int a; a = 12; assegno alla variabile
PROGRAMMATORE TIMER ONE 2 MANUALE D USO E DI PROGRAMMAZIONE
PROGRAMMATORE TIMER ONE 2 MANUALE D USO E DI PROGRAMMAZIONE Grazie per aver scelto il programmatore IRRIDEA serie TIMER ONE a batteria. Il programmatore serie TIMER ONE 2 è dotato della tecnologia di programmazione
Architettura dei sistemi di elaborazione: La memoria (parte 2)
Architettura dei sistemi di elaborazione: La memoria (parte 2) La cache è una memoria veloce e di piccole dimensioni posta fra la CPU e la memoria principale. Memoria Cache La cache e la memoria principale
Elap CM78N C-01 ISTRUZIONI PER LA CONFIGURAZIONE
CM78N CONTATORE ELETTRONICO PROGRAMMABILE A DUE PRESELEZIONI SOFTWARE C-01 ISTRUZIONI PER LA CONFIGURAZIONE Lo strumento può essere configurato dall utente per adattarsi a diversi modi di funzionamento.
Flip-flop e loro applicazioni
Flip-flop e loro applicazioni Reti sequenziali elementari (6) L'elemento bistabile Latch o flip-flop trasparenti Temporizzazione dei flip-flop trasparenti Architettura master-slave Flip-flop non trasparenti
ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }
ERRATA CORRIGE Pulizia del buffer di input: come fare? (1) Dopo aver richiamato getchar() per prelevare un carattere dal buffer di input, inseriamo una seconda chiamata a getchar(), senza assegnare il
Capitolo IX. Convertitori di dati
Capitolo IX Convertitori di dati 9.1 Introduzione I convertitori di dati sono circuiti analogici integrati di grande importanza. L elaborazione digitale dei segnali è alternativa a quella analogica e presenta
Manuale istruzioni. Attuatore per 2 tapparelle art Manuale per l'installatore
Manuale istruzioni Attuatore per 2 tapparelle art. 01524 Manuale per l'installatore Indice CARATTERISTICHE GENERALI E FUNZIONALITA' da pag. 5 OGGETTI DI COMUNICAZIONE E PARAMETRI ETS da pag. 6 OGGETTI
Espressioni con effetti collaterali
Espressioni con effetti collaterali Stefano Ferrari Università degli Studi di Milano stefano.ferrari@unimi.it Programmazione anno accademico 2016 2017 Operatore di assegnamento In C l assegnamento (=)
Corso sul PACCHETTO OFFICE. Modulo Excel
Corso sul PACCHETTO OFFICE Modulo Excel Docente: dott. Marco Cardani Lezione 3 La creazione di una tabella 1 3.1 La creazione di una tabella: la compilazione Corso PACCHETTO OFFICE Excel Le regole di compilazione
COME UTILIZZARE IL SENSORE DI TEMPERATURA TMP36
COME UTILIZZARE IL SENSORE DI TEMPERATURA TMP36 Oggi la sensoristica è ricca di dispositivi capaci di svolgere la conversione di grandezze fisiche in elettriche. Nello specifico, per quanto riguarda la
Strutture di Controllo
Strutture di Controllo Istruzioni condizionali e cicli http://www.dia.uniroma3.it/~roselli/ roselli@dia.uniroma3.it Credits Materiale a cura del Prof. Franco Milicchio Introduzione Fino ad ora, il nostro
Elettronica Sistemi Digitali 09. Flip-Flop
Elettronica Sistemi igitali 09. Flip-Flop Roberto Roncella Flip-flop e loro applicazioni Reti sequenziali elementari (6) L'elemento bistabile Latch o flip-flop trasparenti Temporizzazione dei flip-flop
Esercizio 2: Algebra dei Puntatori e Puntatori a Puntatori
Esercizio 2: Algebra dei Puntatori e Puntatori a Puntatori Salvatore Mandrà 7 Ottobre 2008 1 Esercizio L esercizio prevede l implementazione di funzioni per il prodotto di una matrice per un vettore, attraverso
Guida alla Seconda Esercitazione
Obiettivi Guida alla Seconda Esercitazione curata da Ilaria Casale Dopo aver svolto questa esercitazione si sarà appreso come: utilizzare i Timer di tipo general purpose dell'lpc1769 consultare al meglio
Programmazione orientata agli oggetti Ereditarietà
Programmazione orientata agli oggetti Ereditarietà Fondamenti di Informatica L-B 1 Programmazione basata su oggetti Il modello visto finora costituisce un sottoinsieme del modello orientato agli oggetti
APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO VI.2015
APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 15.VI.2015 VINCENZO MARRA Indice Esercizio 1 1 Definizione dei tipi P e T, e calcolo dell area.
MANUALE INSTALLAZIONE ed USO (VERSIONE 1.5)
SIRRB-NT SIRENA RADIO BIDIREZIONALE con batteria alcalina MANUALE INSTALLAZIONE ed USO (VERSIONE 1.5) Il presente manuale può essere soggetto a modifiche senza preavviso Questo apparecchio elettronico
Sigma XT. Centrale di comando Spegnimento. Manuale Utente. Codice modelli K11031M2, K11031F2. DOCUMENTO K (Man-1091)
Sigma XT Centrale di comando Spegnimento Manuale Utente Codice modelli K11031M2, K11031F2 DOCUMENTO K7247-03 (Man-1091) Issue 01 Sept. 2005 Edizione italiana 6/06 Condizione di allarme incendio LED di
Formato dei file. Definizione del formato immagine pbm. Il formato immagine pbm
Formato dei file Il formato immagine pbm Il formato immagine pbm consente di rappresentare immagini in bianco e nero. Ogni file rappresenta una immagine come un file testo. Definizione del formato immagine
Corso di BASCOM (Capitolo 1 5 ) Corso Teorico/Pratico di programmazione in BASCOM Autore: DAMINO Salvatore. D I S P L A Y L C D (3).
Corso di BASCOM 8051 - (Capitolo 1 5 ) Corso Teorico/Pratico di programmazione in BASCOM 8051. Autore: DAMINO Salvatore. D I S P L A Y L C D (3). GESTIONE DI UNA SEMPLICE CALCOLATRICE. Questo programma
Università degli Studi di Ferrara
Università degli Studi di Ferrara Corso di Laurea in Matematica - A.A. 2018-2019 Programmazione Lezione 10 Esercizi in C Docente: Michele Ferrari - michele.ferrari@unife.it Nelle lezioni precedenti Abbiamo
TERMOMETRO DIGITALE CON PIC18 PIERIN E NTC SENZA UTILIZZARE ADC 1
Luca Di Liello (Luca1995) TERMOMETRO DIGITALE CON PIC18 PIERIN E NTC SENZA UTILIZZARE ADC 15 September 2013 Una piccola introduzione Ecco che finalmente riesco a scrivere un bell'articolo sulla mia prima
PREFAZIONE... IX Lo scopo di questo libro... ix La metodologia di insegnamento... ix Panoramica sul libro... xiii
Sommario PREFAZIONE... IX Lo scopo di questo libro... ix La metodologia di insegnamento... ix Panoramica sul libro... xiii CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 1.1 Introduzione...
FREQUENZIMETRO FQ-16S3-800
FREQUENZIMETRO FQ-16S3-800 By Tecnovolt (tecnovolt.altervista.org) MANUALE UTENTE Frequenzimetro FQ-16S3-800 - tecnovolt.altervista.org 1 INDICE 1 - Introduzione pag. 3 2 - Collegamento e prima accensione
Introduzione alla programmazione in linguaggio C
Introduzione alla programmazione in linguaggio C Il primo programma in C commento Header della libreria Funzione principale Ogni istruzione in C va terminata con un ; Corso di Informatica AA. 2007-2008
ATTIVITÀ 1. Controllo con telecomando
Obiettivo ATTIVITÀ 1 Controllo con telecomando Costruire un programma che permetta il controllo del movimento del robot tramite telecomando Configurazione del robot Per il raggiungimento di questo obiettivo
La programmazione della scheda Arduino Prima di affrontare la programmazione della scheda Arduino è opportuno chiarire che il programma che scriviamo nell'ide si chiama sorgente, è un testo umanamente
Sistemi Operativi Anno Accademico 2011/2012. Segnali: Interrupt software per la gestione di eventi asincroni
Anno Accademico 2011/2012 Segnali: Interrupt software per la gestione di eventi asincroni Concetto di segnale Un segnale è un interrupt software Un segnale può essere generato da un processo utente o dal