LABORATORIO DI SISTEMI A MICROCONTROLLORE

Anno accademico 2022/2023 - Docente: CORRADO SANTORO

Risultati di apprendimento attesi

  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
  • Sistemi operativi

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.
  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.
  9. Sistemi operativi real-time: FreeRTOS

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 pratica al calcolatore
  • Prova orale

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.