LABORATORIO AVANZATO DI PROGRAMMAZIONE I
Anno accademico 2017/2018 - 3° anno - Curriculum A
Docente: Corrado SANTORO
Crediti: 6
Organizzazione didattica: 150 ore d'impegno totale, 102 di studio individuale, 48 di lezione frontale
Semestre: 1°
Crediti: 6
Organizzazione didattica: 150 ore d'impegno totale, 102 di studio individuale, 48 di lezione frontale
Semestre: 1°
Obiettivi formativi
- Conoscenza e capacità di comprensione (knowledge and understanding). Il corso di "Laboratorio Avanzato di Programmazione 1" si prefigge l'obiettivo di fornire agli studenti le conoscenze sui principi, modelli, tecniche e strumenti per la programmazione dei sistemi embedded a microcontrollore.
- Capacità di applicare conoscenza e comprensione (applying knowledge and understanding). Attraverso l'analisi di diversi casi di studio e tramite esercitazioni in laboratorio, il corso consente allo studente di ottenere le capacità di applicare le tecniche acquisite durante le lezioni teoriche nei contesti applicativi dove è richiesto l'utilizzo di sistemi embedded; sarà altresì in grado di comprendere come configurare un microcontrollore e le relative periferiche per l'applicazione specifica in cui esso dovrà essere impiegato.
- Autonomia di giudizio (making judgements). Le lezioni del corso e soprattutto le attività di laboratorio sono organizzate in modo da includere un'analisi critica di casi di studio, delle soluzioni impiegate, delle possibili varianti e dei pro e contro di queste ultime, al fine di consentire allo studente di acquisire un'adeguata autonomia di valutazione delle scelte tecniche.
- Abilità comunicative (communication skills). Le abilità comunicative dello studente saranno considerate soprattutto durante la prova d'esame al calcolatore, in cui lo studente è chiamato ad esporre le scelte implementative adottate e motivandole opportunamente.
- Capacità di apprendimento (learning skills). Le capacità di apprendimento degli studenti saranno valutate durante le esercitazioni di laboratorio, le quali hanno l'obiettivo di testare quanto e come gli studenti abbiano compreso il funzionamento dei sistemi a microcontrollore e quanto siano in grado di progettare adeguatamente il software per tali sistemi. La valutazione del livello di apprendimento sarà dunque utilizzato per approndire (qualora sia necessario) gli argomenti e le parti che si sono rivelati particolarmente ostici.
Prerequisiti richiesti
- Architettura degli elaboratori
- Programmazione in linguaggio C
- Ingegneria del software
- Algoritmi e strutture dati
Frequenza lezioni
La frequenza alle lezioni, per quanto non sia obbligatoria, è fortemente consigliata, in quanto le lezioni stesse sono spesso svolte in forma di laboratorio in cui gli studenti stessi, insieme al docente, sono chiamati a implementare applicazioni tipiche dei sistemi a microcontrollore.
Contenuti del corso
I contenuti sono riportati nella pagina del corso reperible a questo link e riassunti di seguito:
- Definizione di microcontrollore (MCU). Differenze tra CPU e MCU. Famiglie di MCU. Panoramica sulle periferiche di una MCU. Panoramica sui microcontrollori della famiglia STM32 e Microchip PIC.
- Elementi di elettronica. Legge di Ohm. Leggi di Kirchhoff. Esempi di analisi circuitale. Partitore di tensione. Calcolo della resistenza di limitazione di un LED.
- La periferica di I/O digitale. Gestione e programmazione delle porte di I/O. Lettura di un ingresso. Scrittura di un'uscita. Esempi di applicazioni.
- I Timer di una MCU. Principio di funzionamento di un timer hardware. Base dei tempi e prescaler. Uso dell'auto-reload. Eventi e Interrupt. Uso dei timer per la generazione di segnali PWM (pulse width modulation). Esempi di utilizzo con Timer e I/O digitale.
- Pattern di programmazione dei sistemi a microcontrollore. Macchina a stati finiti. Concetto di stato ed evento. Polling bloccante e non bloccante di eventi. Esempi di problemi con macchine a stati finiti.
- La periferica UART. Principio di funzionamento di una UART. Programmazione della periferica UART. Interrupt e polling. Trasmissione di un carattere. Ricezione di un carattere.
- Il convertitore analogico-digitale (ADC). Principio di funzionamento. Circuito sample-and-hold. Programmazione di un ADC converter. Sensori e conversione di unità fisiche. Esempi di problemi con ADC.
Testi di riferimento
- Slides del corso
- Dogan Ibrahim, PIC Microcontroller Projects in C - Basic to Advanced, Newnes
Programmazione del corso
* | Argomenti | Riferimenti testi | |
---|---|---|---|
1 | Definizione di Microcontrollore | Slides del corso | |
2 | * | Elementi di elettronica e analisi dei circuiti | Slides del corso |
3 | * | La periferica di I/O digitale | Slides del corso |
4 | * | I Timer di una MCU | Slides del corso |
5 | * | Pattern di programmazione dei sistemi a MCU | Slides del corso |
6 | * | La periferica UART di una MCU | Slides del corso |
7 | * | Il convertitore analogico-digitale | Slides del corso |
* Conoscenze minime irrinunciabili per il superamento dell'esame.
N.B. La conoscenza degli argomenti contrassegnati con l'asterisco è condizione necessaria ma non sufficiente per il superamento dell'esame. Rispondere in maniera sufficiente o anche più che sufficiente alle domande su tali argomenti non assicura, pertanto, il superamento dell'esame.
N.B. La conoscenza degli argomenti contrassegnati con l'asterisco è condizione necessaria ma non sufficiente per il superamento dell'esame. Rispondere in maniera sufficiente o anche più che sufficiente alle domande su tali argomenti non assicura, pertanto, il superamento dell'esame.
Verifica dell'apprendimento
Modalità di verifica dell'apprendimento
- Prova scritta
- Prova pratica al calcolatore