Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
cos
cosa si pu realizzare
Arduino: un successo italiano nel mondo
componenti elettronici e pinout
ATmega328: il cuore (e molto altro) di Arduino
generalit e caratteristiche
schema a blocchi del microcontrollore
descrizione dei singoli componenti
architettura AVR
introduzione e principio di funzionamento
datapath dellarchitettura
fasi del ciclo istruzione
diagramma a stati finiti
SEMERARO STEFANO
CALCOLATORI ELETTRONICI - 2014
INGEGNERIA DELLINFORMAZIONE UNIVERSITA DEL SALENTO
Arduino
SEMERARO STEFANO
CALCOLATORI ELETTRONICI - 2014
INGEGNERIA DELLINFORMAZIONE UNIVERSITA DEL SALENTO
Arduino pu:
interfacciarsi allambiente tramite sensori (luminosit,
temperatura, suoni, campi elettromagnetici, ),
interruttori, telecomandi,
effettuare elaborazione dei dati
interagire col mondo esterno tramite led, emettitori
acustici, motori, servomotori, pompe idrauliche,
segnali radio o infrarossi,
comunicare con altri dispositivi elettronici attraverso
la porta seriale
Tutto ci fa s che Arduino sia largamento usato in
ambiti quali la robotica, lautomazione, lentertainment,
il modellismo e in generale nella maggior parte dei
settori ingegneristici.
liquid lifebar
quadcopter
Nacque Arduino.
Componenti elettronici e
pinout
Arduino
ATmega328: il cuore (e molto altro) di Arduino
generalit e caratteristiche
schema a blocchi del microcontrollore
descrizione dei singoli componenti
SEMERARO STEFANO
CALCOLATORI ELETTRONICI - 2014
INGEGNERIA DELLINFORMAZIONE UNIVERSITA DEL SALENTO
Atmel ATmega328
Specifiche
LATmega328
allinterno di
Arduino
Diagramma
a blocchi
approfondito
FLASH
Memoria a stato solido,
autoprogrammabile, da 32kb.
Pu essere cancellata e riscritta
circa 10000 volte.
E la memoria che contiene le istruzioni che
devono essere eseguite dalla CPU
Mantiene le informazioni anche in assenza
di alimentazione.
SRAM (static random access memory)
Da 2kb. E una memoria volatile con bassi
tempi di lettura e consumo ridotto.
Qui vengono mantenute tutte le variabili e i
dati necessarie allesecuzione del
programma.
NON maniente i dati in caso di mancanza
di alimentazione.
Watchdog
Di tipo programmabile con oscillatore
interno.
Permette, una volta programmato dallo
sviluppatore, di intercettare loop infiniti o
situazioni di deadlock.
Power supervision
E il componente responsabile
dellalimentazione dellintegrato. Tra le sue
funzioni evidenziamo: 1) il mantenimento
della CPU in condizione di RESET fino al
raggiungimento di tensione richiesto 2) il
tamponamento della tensione in presenza
di glitch temporanei sullalimentazione.
A/D converter
E un convertitore analogico /
digitale a 6 canali, ognuno
da10-bit.
Permette di effettuare letture di
segnali analogici, avendo a disposizione
un valore di riferimento fornito dal pin
AREF.
Internal bandgap
In assenza di un livello di tensione sul pin
AREF produce un riferimento stabile,
indipendente da variazioni
nellalimentazione, nel carico e nella
temperatura di funzionamento, da fornire
al convertitore analogico digitale.
Analog comparator
Permette di generare un interrupt
(esecuzione asincrona di porzioni di
codice, vedi dopo) nel caso in cui un
segnale analogico supera una soglia
impostata dallo sviluppatore.
Arduino
architettura AVR
introduzione e principio di funzionamento
datapath dellarchitettura
fasi del ciclo istruzione
diagramma a stati finiti
SEMERARO STEFANO
CALCOLATORI ELETTRONICI - 2014
INGEGNERIA DELLINFORMAZIONE UNIVERSITA DEL SALENTO
Arduino
esempio di ADD, STOREWORD e JUMP
implementazione pipeline
SEMERARO STEFANO
CALCOLATORI ELETTRONICI - 2014
INGEGNERIA DELLINFORMAZIONE UNIVERSITA DEL SALENTO
Larchitettura AVR
LAVR unarchitettura hardware RISC a 8-bit nata sulla base
dellarchitettura Harvard nel 1996 ad opera di 2 studenti del Norwegian
Institute of Technology, Alf-Egil Bogen e Vegard Wollan e
successivamente venduta ad ATmel.
E stata una delle prime architetture ad utilizzare una memoria flash
on-chip per limmagazzinamento delle istruzioni, in opposizione alle ROM,
EPROM ed EEPROM usate solitamente nei microcontrollori.
Le origini del nome sono incerte, alcuni lo attribuiscono ad Advanced
Virtual RISC (in quanto pu vantare di un maggior numero di istruzioni
rispetto ad unarchitettura RISC standard), altri alle iniziali dei suoi ideatori,
seguite dalla lettera R di RISC.
I componenti principali
PROGRAM COUNTER
INSTRUCTION REGISTER
INTRUCTION DECODER
REGISTERS
ALU
SRAM MEMORY
STATUS CONTROLLER
Particolarit dellAVR
Per massimizzare
le prestazioni e
permettere di
aumentare il
numero di azioni
compiunte
parallelamente,
larchitettura
AVR utilizza
memorie e bus
seprati per il
programma e
per i dati.
Particolarit dellAVR
Tutte le istruzioni
dellarchitettura AVR
sono composte da un
numero di bit multiplo
di 16
(la maggior parte
sono esattamente da
16-bit).
Un potente sistema di
indirizzamento
permettere di
raggiungere
qualunque istruzione
del programma
attraverso le istruzioni
di JUMP e BRANCH.
Il registro di stato
Il registro di stato permette di
interrompere lesecuzione del
programma in presenza di
interrupt esterni, di mantenere
il risultato delloperazione
logica pi recente per
permettere le istruzioni di salto
condizionato senza impiegare
nuovamente lALU per la
verifica della condizione e di
verificare la presenza di
eccezioni (divisione per 0,
ecc) che modificano il
normale flusso del programma.
Vista dinsieme
del datapath
Program counter
Registro istruzione
Registro dellindirizzo di memoria
Prossimo valore program counter
Implementazione multiciclo
Ogni istruzione attraversa una e una sola
fase FETCH.
Ogni istruzione attraversa una o pi fasi
EXECUTE.
La maggior parte di esse (secondo
alcune statistiche l80% delle istruzioni
eseguite comunemente rientrano in
questa categoria) attraversano una sola
fase fetch.
Fase FETCH
Fase EXECUTE
La fase EXECUTE dipende dallo
specifico tipo di istruzione da
eseguire: in base ad esso infatti
verranno attivate diverse sezioni
del datapath.
In generale possiamo suddividere
le istruzioni in 3 categorie:
Logico/aritmetiche (tipo R)
Trasferimento di dati (tipo I)
Salto condizionato (JUMP) e
incondizionato (BRANCH)
Datapath
completo
(e reale)
Segnali di controllo
Implementazione pipeline
Implementazione pipeline
Arduino
SEMERARO STEFANO
CALCOLATORI ELETTRONICI - 2014
INGEGNERIA DELLINFORMAZIONE UNIVERSITA DEL SALENTO
Indici di prestazione e
consumi dellATmega328
Frequenza di clock massima: 20Mhz
Frequenza di clock di default: 16Mhz
Valore di throughput: 1 MIPS per Mhz
(16 MIPS alla frequenza di clock di
default)
Consumo di corrente a 1Mhz e 25C:
Modalit attiva: 0,2mA
Modalit power-save: 0,75A
Modalit power-down: 0,1A
Programmare lArduino:
USB vs ISP
Linterfaccia ISP (in-system programmer)
permette di scrivere direttamente la memoria
flash di Arduino, senza scomodare la CPU.
Uno dei (pochi) vantaggi di questa tipologia di
programmazione la possibilit di riprogrammare
il bootloader (la porzione di istruzioni che esegue
il bootstrap, ovvero lavvio del dispositivo),
negata con la programmazione USB.
Di contro richiedere un programmatore ed un
cavo ISP ed quindi in generale pi scomoda.
Programmare lArduino:
USB vs ISP
La programmazione tramite USB avviene, invece, nel seguente modo:
lintegrato ATmega16U2 funziona come convertitore USB-RS232 facendo
credere al computer collegato ad Arduino di avere a che fare con
uninterfaccia seriale.
Lintegrato, inoltre, dopo aver ricevuto uno specifico segnale di inizio
programmazione, resetta il microcontrollore ATmega328.
Il bootloader di questultimo, una volta avviato, rimane per pochi
millisecondi in ascolto di un secondo segnale di inizio programmazione.
Nel caso in cui questo segnale venga effettivamente ricevuto,
lATmega328 risponde con un segnale di acknowledgment che raggiunge
il computer e fa partire la programmazione vera e propria.
Con questa tipologia di programmazione si ha quindi bisogno di un
secondo integrato (lATmega16U2) ed il microcontrollore principale
(lATmega328) deve funzionare attivamente, attivando cio la sua CPU.
Nuovo
Salva
Apri
Apri console
seriale
Pin collegato
al LED
LED integrato
DEMO 1:
blinking led
DEMO 2: ultrasonic
proximity sensor
DEMO 2: ultrasonic
proximity sensor
Pin trigger
Pin echo
(agganciato
allinterrupt)
Linterfaccia seriale
Linterfaccia seriale di Arduino uninterfaccia FULL
DUPLEX bifilare, in cui il PIN 0 rappresenta il ricevitore e il
PIN 1 rappresenta il trasmettitore.
Essa permette di comunicare con altri dispositivi
elettronici che utilizzano lo stesso protocollo di
comunicazione (che prende il nome di RS-232)
La comunicazione attraverso linterfaccia
seriale :
SERIALE (non mi dire): i bit vengono
trasmessi in sequenza, uno dietro laltro;
ASINCRONA: non c un segnale di clock
che sincronizza la comunicazione (
necessario che i dispositivi si accordino
sulla velocit di trasferimento);
POINT-TO-POINT: ad ogni trasmettitore
associato un solo ricevitore.
Linterfaccia seriale
Lunit di misura che (spesso) viene usata per indicare la
velocit di trasferimento su di uninterfaccia seriale il
bps (che nel caso in questione di comunicazione binaria
coincide col baudrate) che corrisponde allinverso del
periodo che intercorre tra un bit e laltro.
Magic
box
Bluetooth
adapter HC-06
DEMO 3:
Android
bluetooth
communication
La DEMO andata a
buon fine?
SI NO
NOME BOARD
PREZZO UFFICIALE
PREZZO STREET
UNO REV.3
MEGA 2560
INTEL GALILEO
24
47
66
8 (clone)
12 (clone)
60
Riferimenti
Video introduttivi: https://www.youtube.com/watch?v=SyuLhEUImng /
w2itwFJCgFQ / ywfZsYApj_M
Storia di Arduino: http://spectrum.ieee.org/geek-life/hands-on/the-making-ofarduino
ATmega328 (datasheet): http://www.atmel.com/Images/doc8161.pdf
Architettura AVR: https://coefs.uncc.edu/sjkuyath/files/2012/04/Topic_3AVRarch.pdf
Datapath AVR:
http://web.engr.oregonstate.edu/~sinky/teaching/4.AVR_Microarchitecture.
pdf
AVR su Arduino: http://www.atmel.com/technologies/cpu_core/avr.aspx