LABORATORIO DI SISTEMI A MICROCONTROLLORE

Anno accademico 2021/2022 - 3° anno - Curriculum Elaborazione Dati e Applicazioni
Docente: Corrado SANTORO
Crediti: 6
SSD: INF/01 - Informatica
Organizzazione didattica: 150 ore d'impegno totale, 102 di studio individuale, 24 di lezione frontale, 24 di esercitazione
Semestre:

Obiettivi formativi

  1. Conoscenza e capacità di comprensione (knowledge and understanding). Il corso di "Laboratorio di Sistemi a Microcontrollore" si prefigge l'obiettivo di fornire agli studenti le conoscenze sui principi, modelli, tecniche e strumenti per la programmazione dei sistemi embedded a microcontrollore.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

Modalità di svolgimento dell'insegnamento

L'insegnamento è svolto in aula alternando lezioni frontali con esercitazioni di laboratorio. Tutte le lezioni sono svolte utilizzando schede di sviluppo NUCLEO64 della STMicroelectronics sulle quali vengono fatti girare gli esempi svolti in aula. Il corso ha dunque una forte connotazione pratica e le lezioni sono caratterizzate da "live programming". Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus.


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:

  1. 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.
  2. Elementi di elettronica. Legge di Ohm. Leggi di Kirchhoff. Esempi di analisi circuitale. Partitore di tensione. Calcolo della resistenza di limitazione di un LED.
  3. 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.
  4. 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.
  5. 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.
  6. La periferica UART. Principio di funzionamento di una UART. Programmazione della periferica UART. Interrupt e polling. Trasmissione di un carattere. Ricezione di un carattere.
  7. 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.
  8. Periferiche di comunicazione. I2C, SPI, CAN.

Testi di riferimento



Programmazione del corso

 ArgomentiRiferimenti testi
1Definizione di MicrocontrolloreSlides del corso 
2Elementi di elettronica e analisi dei circuitiSlides del corso 
3La periferica di I/O digitaleSlides del corso 
4I Timer di una MCUSlides del corso 
5Pattern di programmazione dei sistemi a MCUSlides del corso 
6La periferica UART di una MCUSlides del corso 
7Il convertitore analogico-digitaleSlides del corso 

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

  • Prova scritta
  • Prova pratica al calcolatore

La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.


Esempi di domande e/o esercizi frequenti

Le prove d'esame sono reperibili presso la pagina web del corso e in ogni caso reperibili al link.