Sei sulla pagina 1di 41

Microcontrollori

Università di Padova – Prof. Paolo Magnone / Ing. Andrea Petucco

1
Obiettivi

• Essere in grado di programmare un microcontrollore in ambiente Arduino, utilizzando le


principali periferiche di ingresso/uscita (A/D, PWM e UART).

• Testo per approfondimenti: S. Buso, “Introduzione alle applicazioni industriali di Microcontrollori


e DSP”, Esculapio, 2018

2
Organizzazione del corso

PARTE 1

- Concetti di Microcontrollori e DSP. Architettura di un microcontrollore. Rappresentazioni numeriche.

- Memorie e Interrupt.

- Introduzione alle principali periferiche: Timer; PWM; ADC e DAC.

- Periferiche di comunicazione (RS232, I2C, CAN).

PARTE 2

- Implementazione di filtri digitali ed esempio su ARDUINO

- Comunicazione seriale RS232 con ARDUINO

- Controllo velocità di rotazione di una ventola con ARDUINO: Generazione segnale analogico (o PWM) come input della ventola; Acquisizione del
segnale di feedback e valutazione frequenza di rotazione. Caratteristica IV statica e risposta al gradino.

- Controllo di un motore passo-passo con ARDUINO: controllo posizione; controllo di velocità di rotazione con inseguimento traiettoria.

3
Verifica Finale

• Test della durata di 1 ora su entrambe le parti

• È possibile usare gli appunti del corso

4
Sistemi Digitali

Sistemi digitali necessari per il controllo di processi e per l’elaborazione dati

Turbina eolica
Campi di applicazione:

- Applicazioni civili (Elettrodomestici; Periferiche PC;


Fotocopiatrici; etc.)

- Applicazioni industriali (Automotive; Azionamenti


Elettrici; Automazione; Elettronica di potenza)

5
Microcontrollore
Microcontrollore

- Microprocessore ottimizzato per il controllo, temporizzazione, supervisione di processi, dispositivi o


apparati

- Basato su un’architettura a microprocessore e perciò in grado di eseguire un algoritmo secondo un


linguaggio di programmazione ad alto livello (C/C++).

- Presenza di numerose periferiche «on chip» (ADC, DAC, PWM, timer, porte di comunicazione, memorie).

- Dedicato all’elaborazione di dati o al controllo di processi in real-time.

- La specifica funzionalità è implementata dal software (l’hardware è fisso).

- Basso costo.

6
Microcontrollore vs. DSP
DSP

- Microprocessore ottimizzato per l’elaborazione di segnali real-time.

- È caratterizzato da un’elevata potenza di calcolo (ad esempio moltiplicazione tra numeri a


virgola mobile).

- Rispetto ad un microcontrollore sono presenti meno periferiche.

- Attualmente, con i progressi tecnologici, la differenza tra i due è sempre meno netta.

- Esistono anche in commercio i DSC (Digital Signal Controller)

7
Organizzazione Hardware

CPU: Unità di elaborazione centrale

Il programma di un elaboratore è tradotto in


una sequenza di codici binari (istruzioni) che
Memoria
Periferiche possono essere salvati in memoria, come dei
istruzioni e
di I/O semplici dati.
dati
Istruzioni e dati sono salvati nella stessa
memoria e condividono perciò un unico bus di
comunicazione con la periferica.
CPU
A differenza dei processori “general purpose”,
Bus sono presenti numerose periferiche di I/O che
n linee comunicano mediante il bus o attraverso linee
dedicate con la CPU.

8
Organizzazione Hardware

Organizzazione di Harvard
Il bus indirizzi permette si selezionare il
dato (o l’istruzione) a cui accedere (in
Bus istruzione lettura o scrittura)
Memoria
istruzioni
Bus indirizzi Memorie dedicate per istruzioni e dati,
CPU con conseguente aumento di
complessità (banalmente il numero di
Bus dati bus raddoppia). Introduzione di
Memoria parallelismo: è possibile leggere una
dati istruzione e contemporaneamente
Bus indirizzi
prelevare i dati dall’altra memoria.

9
CPU

Gli elementi che costituiscono la CPU sono:

- Unità aritmetico logica (ALU)


- Unità di controllo
- Banco di registri

10
ALU

Questa unità serve ad eseguire operazioni aritmetiche e logiche elementari.


Funzioni hardware comuni a tutti i microcontrollori/DSP :

- Somma di due numeri interi con segno;


- Operazioni logiche di AND/OR/NOT;
- Shift (scorrimento) dei dati verso sinistra e verso destra.

In processori più evoluti (e costosi) sono presenti le seguenti risorse hardware:


- Moltiplicazione e/o divisione hardware tra interi (con segno);
- Unità dedicate all’elaborazione dati in formato floating point.

11
ALU

Altra caratteristica importante che differenzia non solo l’ALU, ma tutta l’architettura del
processore, riguarda il numero di bit.

Il numero di bit dell’architettura influenza la dimensione dei bus, l’organizzazione della


memoria, la dimensione dei registri, l’aritmetica dell’ALU, etc.

La maggior parte dei microcontrollori e DSP di recente costruzione è basata su architetture


a 32-bit.

12
Aritmetica dei processori
Numeri interi
Con n bit è possibile rappresentare 2n valori. Ad esempio:

n=8 
unsigned: N = 0, 1, 2, … 255;
signed (complemento a 2) N = - 128, -127, …, -1, 0, 1, …, 126, 127;

Per rappresentare numeri (senza segno) superiori a 255 è necessario concatenare più locazioni
di memoria (o registri). Ciò comporta un tempo di calcolo maggiore (necessarie più letture da
memoria e più operazioni per eseguire semplici operazioni quali la somma).
char 8 bits.

Esempi di interi short int 16 bits


int 16 bits
(signed oppure unsigned) long int 32 bits
long long int 64 bits
13
Aritmetica a virgola fissa

101.00011 Decimale equivalente:


Parte intera (3 cifre) Parte frazionaria (5 cifre) n 1
N  i
a 
i  m
2 i

Minima quantità frazionaria rappresentabile (ε):


2-m = 0.03125

Massimo valore intero rappresentabile (rappresentazione senza segno):


n.m
2n -ε = 8 - 0.03125
n: numero di cifre parte
La posizione della virgola definisce perciò il compromesso tra massimo intera
valore rappresentabile e risoluzione.

Anche in questo caso, aumentando il numero di bit a disposizione è m: numero di cifre parte
possibile aumentare l’accuratezza della rappresentazione binaria. frazionaria
14
Aritmetica a virgola fissa

Le operazioni aritmetiche (somma, sottrazione, moltiplicazione, divisione) tra numeri in virgola


fissa possono essere eseguite utilizzando la stessa aritmetica utilizzata per i numeri interi.

Le accortezze da tenere in considerazione sono le seguenti:

- Nel caso di somma è necessario allineare la virgola nei due addendi. Questo è possibile
operando degli shift a destra o a sinistra.

- Nel caso di moltiplicazione è necessario aggiustare a posteriori la posizione della virgola (si
veda la slide successiva).

15
Aritmetica a virgola fissa

Prodotto di numeri in virgola fissa


m1 bit: z1.n1 m2 bit: z2.n2

X
(m1+m2 bit): (z1+z2).(n1+n2)

Esempio: formato
2.4
01.0010 X 00.1010 = 0000.10110100
z1=2 n1=4 z2=2 n2=4 z1+z2=4 n1+n2=8 16
Aritmetica dei processori
Numeri in virgola mobile (floating point)
IEEE 754

S (segno) – 1 bit E (Esponente) – 8 bit M (Mantissa) – 23 bit

Numero decimale equivalente:

(−1)𝑆 ∙ 2𝐸−𝑘 ∙ 𝑀

Dove k rappresenta un offset implicito pari a 127

La notazione floating point consente di rappresentare numeri molto grandi (2127) e numeri molto piccoli (2-126) utilizzando
lo stesso numero di cifre significative

17
Aritmetica dei processori

È importante notare che la disponibilità hardware di apposite unità per la


moltiplicazione/divisione e per l’elaborazione floating point dei dati, così come il numero di
bit a disposizione, non limita l’accuratezza finale dei calcoli.

Ad esempio, utilizzando un’architettura a soli 8-bit in grado di eseguire sole


somme/sottrazioni tra interi, è possibile comunque eseguire prodotti o divisioni tra numeri
floating point (32-bit)

Per fare ciò, il compilatore (che traduce il linguaggio ad alto livello in linguaggio macchina)
trasforma una semplice operazione di prodotto/divisione in tante operazioni di
somme/sottrazioni e shift.

Questo ovviamente influenza notevolmente la velocità con cui sono eseguiti i calcoli e
quindi le prestazioni che si riescono ad ottenere con una data architettura interna.

18
Unità di Controllo

L’unità di controllo sovraintende al funzionamento sia del processore che dell’intero


microcontrollore. In particolare l’unità di controllo:

- Preleva le istruzioni dalla memoria e le decodifica;


- Invia gli opportuni segnali di controllo all’ALU, alla memoria, ai registri e alle
periferiche, che consentono di configurare gli stessi in base all’istruzione da
eseguire (ad esempio per l’esecuzione di una sottrazione, il segnale Cin del
sommatore sarà posto a 1).
- Gestisce le richieste di interrupt da parte delle periferiche.

19
Banco di registri

Un registro è composto da un insieme di flip-flops. Un flip-flop rappresenta a sua volta una


struttura sincrona elementare per immagazzinare un 1 bit di informazione.

Il sincronismo si riferisce alla capacità di operare in maniera coordinata con un apposito


segnale di riferimento, detto segnale di clock. Il segnale di clock è comune a tutti i
componenti del microcontrollore (memoria, periferiche di I/O, registri, etc.).

I registri rappresentano perciò delle unità di memoria, costituiti da tanti bit quanti sono
quelli dell’architettura considerata, con cui si interfaccia solitamente l’ALU. Questo significa
che, ad esempio, affinché si possa eseguire la somma tra due dati essi devono essere
contenuti in appositi registri.

Di conseguenza la numerosità dei registri in un processore è un elemento desiderabile.


20
Frequenza di clock e prestazioni di µC/DSP

La velocità con cui sono eseguite le istruzioni in un processore è dettata dalla frequenza
di clock. Tuttavia nel valutare le prestazioni di un microcontrollore o DSP, il tempo
richiesto per l’esecuzione di un dato algoritmo è anche funzione del set di istruzioni (in
linguaggio macchina) proprie dell’architettura considerata.

La scelta della massima frequenza di clock a cui un microcontrollore/DSP può operare è


legata a diversi fattori:
- Organizzazione interna del processore (grado di parallelismo disponibile);
- Dissipazione di potenza;
- Tecnologia CMOS utilizzata.

21
Memorie

0
1
2 Memoria
0 N: rappresenta la dimensione della
2M x N
1 . wordline. Essa raggruppa tipicamente uno
. . 2M righe/indirizzi
o più byte.
Indirizzo
(M bit) . . N colonne/bit
M: il suo valore massimo coincide con il
. . numero di bit dell’architettura considerata.
M-1
.
Ad esempio M=32  4G di indirizzi
2M-1

Decoder 0 1 2 ..... N-1


di riga
Buffer

dato a N bit
22
Memorie

Classificazione delle memorie in base alle loro funzionalità:

- Memorie non volatili. Le informazioni sono salvate in maniera permanente. Viene


perciò usata per salvare le istruzioni, ma può ospitare anche dati che necessitino di
rimanere in memoria in assenza di alimentazione. La tecnologia attualmente più
utilizzata è quella FLASH. Essa può essere sia programmata che cancellata
elettricamente.

- Memorie volatili. Le informazioni qui contenute necessitano di alimentazione per


essere immagazzinate. La tecnologia tipicamente utilizzata in un microcontrollore/DSP
è quella SRAM. Rispetto alla memoria FLASH è più veloce (sia in lettura che in
scrittura) ma presenta un costo ed una occupazione di area su silicio maggiore.
23
Periferiche di I/O

Le periferiche di I/O consentono di interfacciare il microcontrollore/DSP con il mondo esterno. Sono


presenti perciò sia unità di input che di output. Esse permettono di acquisire o generare sia segnali
analogici che digitali.

Le periferiche più comuni sono:


- Porte digitali di I/O ad uso generico;
- Convertitori A/D (Analogico/Digitale);
- Convertitori D/A (Digitale/Analogico);
- Comparatori analogici;
- Timer/Contatori;
- Modulatori PWM;
- Ingressi per encoder in quadratura;
- Periferiche per la comunicazione seriale (UART, USRT, SPI, I2C, CAN).

24
Conversione A/D
Composta da tre fasi: campionamento, quantizzazione e codifica.

•Campionamento (discretizzazione nel tempo)

Frequenza di campionamento:
V(t)
1
𝑓𝑠 = Il segnale V(t) viene valutato
𝑇𝑠 in istanti di tempo prefissati

Criterio di Nyquist: 𝑉 𝑘𝑇𝑠

𝑓𝑠 ≥ 2𝐵 con k intero positivo

TS t
Banda (max frequenza)
del segnale
25
Conversione A/D

•Quantizzazione (discretizzazione in ampiezza)


Passo di quantizzazione:
Segnale originale (campionato) Tensione di fondo scala
𝑉𝐹𝑆
𝑉𝑞 = 𝑛
2
numero di bit

Valore quantizzato:
V0 V1 V2 V3 𝑉 𝑘𝑇𝑠
𝑉𝑑 𝑘𝑇𝑠 = 𝑉𝑞 ∙ 𝑟𝑜𝑢𝑛𝑑 = 𝑉𝑞 ∙ 𝑁
𝑉𝑞

V0 V1 V2 V3 … Valori discreti (quantizzati) Nella fase di Codifica


N è trasformato in un
numero binario 26
Conversione A/D

Tradeoff Accuratezza – Velocità


Accuratezza: legata al numero di bit n
Velocità: legata al tempo di conversione

Accuratezza Velocità

A/D A/D A/D


Integrazione SAR Flash
27
Timer

La temporizzazione di eventi o processi in un microcontrollore è un’operazione


fondamentale. Essa è utile ogni qualvolta si vuole garantire un ritardo predefinito
nell’esecuzione di diverse parti del codice o quando è necessario coordinare il
funzionamento di diverse periferiche.

Sono possibili tue tipi di soluzione:


- Inserimento nel codice di opportuni cicli di attesa;
- Generazione automatica di «richieste» da parte di una periferica dedicata (Timer).

28
Timer

Il timer svolge di base la semplice funzione di contatore.

overflow
Caratteristiche principali:

7 - Numero di bit: definisce il massimo


6 conteggio (2n-1);
5
- Periodo di conteggio Tc=1/fc: solitamente è
4
possibile scegliere come frequenza quella
3 del clock principale, oppure scalarla
2 opportunamente di un fattore N (detto
1 prescaler)
Tc
0

29
Timer
Il valore massimo del conteggio può essere scelto arbitrariamente (nel range dei valori ammissibili). Questo è possibile
utilizzando un semplice comparatore (digitale) che confronta il valore di conteggio, con il valore impostato. Si ottiene
quindi una rampa la cui durata vale:

𝑐𝑜𝑢𝑛𝑡
𝑇= 𝑁 Possibilità di generare eventi di overflow con periodicità nota
𝑓𝑐𝑘

Altre funzioni specifiche di un timer.

- Compare: definizione di un valore intermedio con cui confrontare il valore di conteggio. Il superamento di tale valore
non causa l’azzeramento del timer, ma è in grado di modificare uno specifico pin di uscita (generazione di impulsi).

- Input Capture: al verificarsi di un evento esterno (che solitamente coincide con il fronte di un segnale digitale), il timer
(che nel frattempo lavora in modalità free-run) memorizza il valore di conteggio. La distanza temporale tra due eventi
consecutivi può essere quindi stimata sottraendo i corrispondenti valori di conteggio.

- PWM: Pulse Width Modulation.


30
PWM
La modulazione PWM è utilizzata per generare impulsi digitali, la cui larghezza (temporale) contiene l’informazione da
trasferire in uscita
𝑡𝑜𝑛
𝑉𝑑𝑒𝑚𝑜𝑑 = 𝑑 ∙ 𝑉𝑚𝑎𝑥 𝑑=
𝑇𝑃𝑊𝑀

rampa

duty
La rampa viene generata mediante un Timer,
Q t mentre duty rappresenta la parola binaria con
tON
𝑉𝑚𝑎𝑥 cui confrontare il conteggio.

TPWM t
31
PWM

La fase di demodulazione (ovvero di estrazione dell’informazione) avviene mediante un filtro passa-


basso, la cui frequenza di taglio dovrà valere:

𝑓𝑡 ≪ 𝑓𝑃𝑊𝑀

La scelta di ft (così come l’ordine del filtro) determina il ripple presente sul segnale a valle della
demodulazione.

La modulazione PWM prevede due tipologie di applicazione:

- Controllo di interruttori elettronici, come nel caso di convertitori o inverter con


demodulazione/filtraggio implicita nel sistema;

- Conversione D/A (in tal caso è richiesta l’implementazione del filtraggio per garantire la
demodulazione).
32
Comunicazione Seriale

In generale, è possibile distinguere due tipologie di trasmissione dati:


- Parallela
- Seriale

Sebbene la comunicazione parallela consenta in principio di raggiungere velocità di


trasmissione dati superiore, non è mai implementata in microcontrollori/DSP per via
della complessità hardware richiesta.

D’altro canto esistono diversi standard di comunicazione seriale implementati


tipicamente nei microcontrollori/DSP.

33
Comunicazione Seriale

Periferiche hardware presenti nei microcontrollori/DSP

UART USRT
Universal Asynchronous Receiver-Transmitter Universal Synchronous Receiver-Transmitter

Tx Rx
Tx Rx
Rx Tx
Periferica 1 Periferica 1 Periferica 1 Periferica 1
Rx Tx frame
clock

Nel caso di trasmissione asincrona, la comunicazione avviene senza che i clock di trasmettitore e ricevitore siano
sincronizzati tra loro.
D’altro canto la trasmissione sincrona, prevede la condivisone del clock.
34
Comunicazione Seriale

Parametri per la comunicazione seriale asincrona:

- Numero di bit all’interno di ogni singola trasmissione (da 5 a 8)


- Bit di start (1)
- Bit di stop (1, 1.5 o 2)
- Bit di parità (nessuno o 1)
- Velocità in bps, bit per secondo (1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200)

Lo standard fisico per la comunicazione seriale è RS232. Tuttavia, essendo esso sempre meno
presente nei PC, è comune utilizzare adattatori USB – RS232.

35
Interrupt
Il funzionamento delle periferiche di I/O non è «sincronizzato» con il funzionamento della CPU. Ogni qualvolta una nuovo
dato è disponibile (ad esempio nel caso di ADC o di periferiche seriali) o quando si vuole verificare il completamento di
un’operazione da parte di un determinata periferica è necessario prevedere un’opportuna operazione di sincronizzazione.
Si supponga ad esempio di voler generare un evento di overflow periodico con un timer, al fine di generare degli eventi
distanziati nel tempo di una quantità predefinita. Come è possibile segnalare alla CPU il raggiungimento dell’overflow?

𝑐𝑜𝑢𝑛𝑡
𝑇= 𝑁 overflow
𝑓𝑐𝑘

7 Esistono due possibili approcci:


6
5 1) Ciclo di polling (che prevede una interrogazione
4 periodica della periferica da parte della CPU)
3 2) Interrupt (la periferica invia una richiesta di
2 interruzione alla CPU mediante una linea dedicata)
1
Tc
0
36
Arduino

Arduino rappresenta una piattaforma software/hardware, basata su microcontrollore,


dedicata alla prototipizzazione rapida.

Il nome Arduino è perciò da attribuire non al microcontrollore, ma piuttosto


all’ambiente di sviluppo (ovvero l’insieme delle risorse sia hardware che software
dedicate alla programmazione dei microcontrollori).

Arduino 2
La peculiarità di Arduino è legata alla semplicità con cui le
periferiche, anche complesse, possono essere programmate.
Tuttavia, la semplicità di programmazione non sempre si concilia
con lo sfruttamento delle piene potenzialità…

37
Arduino

Specifiche tecniche di ARDUINO 2


Microcontroller AT91SAM3X8E
Operating Voltage 3.3V
Input Voltage (recommended) 7-12V
Input Voltage (limits) 6-16V
Digital I/O Pins 54 (of which 12 provide PWM output)
Analog Input Pins 12
Analog Output Pins 2 (DAC)
Total DC Output Current on all I/O lines 130 mA
DC Current for 3.3V Pin 800 mA
DC Current for 5V Pin 800 mA
Flash Memory 512 KB all available for the user applications
SRAM 96 KB (two banks: 64KB and 32KB)
Clock Speed 84 MHz
Length 101.52 mm
Width 53.3 mm
Weight 36 g
38
Arduino
Accendo alla documentazione del microcontrollore ATMEL (AT91SAM3X8E) è possibile
trovare informazioni più dettagliate circa le periferiche a bordo.

39
Arduino
Alimentazione
• USB (5V).
ARM Cortex M3 • Tramite alimentatore esterno connesso al power jack
• 32bit (tensione consigliata 7V-12V). La tensione viene regolata
dalla scheda a 5V.
• 84MHz
• Le porte di I/O lavorano a 3.3V. La corrente massima
• Moltiplicazione hardware erogata (o assorbita) dipende dal pin considerato. Essa
a 32bit (tra numeri interi) non supera comunque 15mA in modalità source e 9mA in
in un singolo ciclo di clock modalità sink.
• Divisione Hardware a 32
bit (tra numeri interi) non
su singolo ciclo

40
Arduino

Link utili

Overview e specifiche di Arduino 2


https://www.arduino.cc/en/Main/arduinoBoardDue

Download di Arduino IDE


https://www.arduino.cc/en/Main/Software

Tutorial per il primo utilizzo del software e della scheda


https://www.arduino.cc/en/Guide/ArduinoDue

Riferimento per il linguaggio di programmazione


https://www.arduino.cc/en/Reference/HomePage

Datasheet del microcontrollore


http://www.atmel.com/Images/Atmel-11057-32-bit-Cortex-M3-Microcontroller-SAM3X-SAM3A_Datasheet.pdf

41

Potrebbero piacerti anche