Sei sulla pagina 1di 46

CORSO di ELECTRONIC DESIGN AND RAPID

PROTOTYPING

UNIVERSITA’ DEL SALENTO

Dip. Ingegneria dell’Innovazione

Prof. P. Visconti
http://forum.arduino.cc/index.php?action=profile;u=58300
Argomenti
 Architettura generale dei microcontrollori
 Ambiente di sviluppo integrato
 Caratteristiche e elementi di Arduino UNO
 Principali caratteristiche del ATmega328P
 Concetti di porte e pin del microcontrollore
 Istruzioni per comandare i pin del microcontrollore
Nascita di Arduino
 Nel 2005 un gruppo di ricerca del Italy’s Interaction
Institute of Ivrea ha sviluppato una piattaforma elettronica
basata su microcontrollore destinata a scopi didattici e di
ricerca denominata Arduino. Il nome deriva un bar posto nelle
vicinanze dell’istituto denominato Bar di Re Arduino.
 Dalla sua prima comparsa Arduino ha attirato l’attenzione di
studenti inventori e ingegneri, i quali hanno scritto e
condiviso codice e progettato soluzioni hardware dedicate a
tali schede
Nascita di Arduino
Il primo prototipo funzionante di Arduino

Il prototipo “zero” di Arduino, “quando


ancora si chiamava Programma 2003”
Arduino con interfaccia seriale RS-232
piuttosto che con interfaccia USB
Evoluzione di Arduino
Arduino NG (Nuova Generazione)
Millestone:
 2005 Prima versione della scheda
basata sul microcontrollore AVR
ATmega8 con programmazione e
scambio dati RS232.
 2006 Arduino NG (nuova
generazione).
 2008 Arduino Duemilanove versione
basata sul microcontrollore Atmel
ATmega 328 (raddoppia memoria on-
chip 32kB).
 2010 Arduino Uno basato su
microcontrollore Atmega 328.
Arduino Duemilanove  2010 Arduino Mega2560 basato sul
microcontrollore Atmega 2560 porta
la memoria programma on-chip a
disposizione della scheda fino a
256kB, mettendo a disposizione un
maggior numero di GPIO (54) e
aumentate interfacce di
comunicazione.
 2010 Arduino Uno R3 si differenzia
dalla versione 2009 per la presenza di
uno speciale convertitore USB/seriale
che è implementato da un
microcontrollore ATmega8U2 in cui è
integrato un transceiver USB
liberamente programmabile
Arduino Uno Arduino Uno R3

Arduino Leonardo Arduino Ethernet Arduino YUN


Arduino Mega 2560

Arduino Mini Arduino Due


Arduino NANO

http://arduino.cc/en/Main/Products
Cos’è Arduino?
Arduino è una piattaforma elettronica
hardware dotata di microcontrollore.
In aggiunta, Arduino include un
opportuno software di sviluppo
(Arduino IDE Integrated Development
Enviroment), all’interno del quale è
poter scrivere i programmi
(denominati sketch) che verranno
eseguiti dal microcontrollore.
Piattaforma di sviluppo open source
Open Source Hardware
Open Source Software
Economica e facilmente reperibile
Espandibile tramite «shield»
Open Hardware

http://arduino.cc/en/Main/ArduinoBoardUno
Sistema di espansione a shield
http://shieldlist.org/
Prima di Arduino…

Computer Programmatore Microcontrollore


• Software • Interfaccia • Versione
• Eclipse • JTAG/ICE •DIP
• AVR Studio 4 • ISP •SOIC
•QFN

•Porte •Programmatore •Funzioni


• Serial • Bit-Bang •ADC/DAC
• Parallel • ICSP •PWM
• USB • AVRISP Mk II •USB
Arduino Uno R3
LED
Pulsante di Riavvio Connettori Pin Digitali

Connettore
USB
Microcontrollore
AVR
Convertitore
ATmega328P
USB-Seriale

Jack Alimentazione

Connettori Pin Analogici


Connettori alimentazione
Arduino Uno R3
Alimentazione
La scheda Arduino Uno può essere alimentata attraverso la connessione USB oppure con un alimentatore esterno
tramite l'apposito plug.
Tutte le tensioni sono disponibili sui pin del connettore POWER
<Vin; restituisce la tensione applicata dall'alimentatore al plug e può
essere usato per alimentare altri circuiti che dispongano già di un
regolatore di tensione (ad esempio gli shield applicati al modulo);
<GND; è il contatto di massa (GND).
<5 V; fornisce i 5 volt prelevati dall'uscita del regolatore interno ed è utile
per alimentare altri circuiti compatibili con i 5 volt;
<3.3V; questo pin fornisce i 3,3 volt ricavati dal regolatore corrispondente
e consente di alimentare circuiti compatibili con tensioni di 3,3 volt (la
massima corrente prelevabile e di 150 mA);

Alimentazione
Esterna

Connettore USB Alimentazione con


batteria
Come visibile nello schema, la fonte di alimentazione è selezionata automaticamente,
attraverso il circuito formato da uno dei due amplificatori operazionali contenuti
nell’integrato U1 LM358D e dal Mosfet T1 a canale P tipo FDN304.
Arduino Uno R3
Interfaccia seriale
Per l’interfaccia seriale come già detto nell’ scheda Arduino UNO non utilizza un chip FTDI (il FT232RL (o
alternativamente il CH340 o CH341) per convertire i segnali da USB a seriale TTL e viceversa. È invece utilizzato un
microcontrollore ATmega8U2 in cui è integrato un transceiver USB liberamente programmabile.

Programmazione con Atmega 8U2 Programmazione con CH340


In questo modo a differenza del chip della FDTI, per il quale era necessario installare appositi driver, con I'utilizzo
dell'integrato ATmega8U2 ciò non è più necessario, perché sono usati i driver comuni della periferica USB già
disponibili con il sistema operativo. La presenza del connettore ICSP1 permette agli utenti avanzati di riprogrammare il
processore, trasformando la scheda Arduino UNO in un diverso tipo di dispositivo USB. Per esempio si potrà usare
la scheda come tastiera, mouse, disco driver o come un'interfaccia MIDI, ecc Il clock del processore è fornito di
quarzo da 16 MHz Q1.
Microcontrollore

ANALOG
INPUTS

In elettronica digitale il microcontrollore o microcontroller o MCU (MicroController


Unit) è un dispositivo elettronico integrato su singolo chip, nato come evoluzione
alternativa al Microprocessore ed utilizzato generalmente in sistemi embedded ovvero
per applicazioni specifiche di controllo digitale.
http://it.wikipedia.org/wiki/Microcontrollore
AVR (Alf and Vegard RISC
processor)
• Sviluppati da Atmel nel 1996
• Famiglia di Microcontrollori RISC
(reduced instruction set computer)
• Istruzioni a lunghezza fissa, accesso alla memoria di tipo load-store con
32 registri general-purpose
• Pipeline a due stadi per velocizzare l’esecuzione
• Esecuzione della maggior parte delle istruzioni in un solo ciclo di clock
• Fino a 12 volte più veloce di una architettura standard CISC
Architettura Harvard
Architettura Von Neumann

Nella macchina di von Neumann:


• dati e istruzioni memorizzati in un’unica memoria che
permette lettura e scrittura;
• la memoria è costituita da celle uguali, indirizzate
dalla loro posizione;
• le istruzioni vengono eseguite in modo sequenziale.

http://it.wikipedia.org/wiki/Architettura_di_von_Neumann
Architettura Harvard

Surveyor SRV-1 Blackfin Robot

 L'architettura di Von Neumann si contrappone


all'architettura Harvard nella quale invece i dati
del programma e le istruzioni del programma sono
memorizzati in spazi di memoria distinti.
 Nello specifico i microcontrollori Atmel AVR
utilizzano una memoria flash per la
memorizzazione del programma, mentre una
memoria SRAM (Static RAM) per la
memorizzazione dei dati
http://it.wikipedia.org/wiki/Architettura_Harvard
AVRMicrocontroller(caratteristiche)
 Memoria Flash programmabile (almeno 10.000 volte) , RAM, EEPROM
interne (scrivibile almeno 100.000 volte)
 Sistema di programmazione interno (ISP)
 Varietà di periferiche: I/O digitali, ADC, Timer, UART, RTC timer, pulse
width modulator (PWM)…
 Clock fino a 20MHz
 Ampia gamma di tensioni di funzionamento: da 1.8 V a 6.0 V.
 Package variabile da 8 pin fino a 64 pin
 Watchdog con oscillatore interno autonomo
 POR (Power On Reset)
 Famiglie
 ATtiny25-45-85, ATtiny24-44-84, ATtiny2313-4313 ...
 ATmega88, ATmega168, ATmega328P ...
 XMega (sigle che iniziano con "ATXMega")
Atmel ATmega328P

Versione PDIP
Plastic Dual In-line Package

Versione SMD
Surface-Mount Device
Caratteristiche ATmega328P

http://www.atmel.com/Images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-
328-328P_datasheet.pdf
Caratteristiche Arduino Uno

http://arduino.cc/en/Main/ArduinoBoardUno
Tensione di lavoro dei pin
• I Microcontrollori sono fondamentalmente dei dispositivi digitali
dove l’informazione è ‘codificata’ in due stati discreti:
• HIGH or LOW (stato logici: 1oppure 0)

Tensioni
• 5 V (per lo stato HIGH)
• 0 V (per lo stato LOW)

• 3.3 V (per lo stato HIGH)


• 0 V (per lo stato LOW)
Valori massimi

http://www.atmel.com/Images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-
328-328P_datasheet.pdf
Schema a blocchi - Architettura interna ATmega328
Periferiche interne
• Memoria Flash (memoria
Programma)
• Memoria SRAM (memoria dati)
• Memoria EEPROM (memoria dati)
• WatchDog Timer
• Interfaccia Seriale
• Interfaccia SPI
• Interfaccia I2C
• Convertitore Analogico – Digitale
• Timers
• Porte/Pin
Memorie integrate
Architettura Harvard

Flash-program memory
• 32kB

 SRAM-data memory
• 2KB

 EEPROM
• Per dati da
conservare anche in
caso di rimozione
dell’alimentazione.
• Presenza su I/O bus
Memorie integrate
Flash memory (32KB) (indirizzi da 15bit)
• Utilizzata per la memoria programma-
sola lettura
• Non volatile
• Alloca i dati nella flash utilizzando l
l’attributo PROGMEM
 SRAM (2KB)
• Valori temporanei, stack,etc…
• Memoria volatile
• Dimensione limitata
 EEPROM (1KB)
• Dati a lungo termine
FLASH PROGRAM MEMORY
Visto che tutte le istruzioni AVR sono a 16bit o 32bit, la memoria flash per la
memorizzazione del programma è organizzato in 16K locazioni x 16 bit. Per motivi di
sicurezza del software la memora flash è divisa in due sezioni: la sezione destinata al
bootloader e la sezione destinata alla memoria del programma nel dispositivo. Il
program counter (PC) del ATmega328/P è largo 14bits, in modo da indirizzare le 16K
locazioni di memoria programma.
SRAM Data Memory
Le 2303 locazioni di memoria dati più basse indirizzano sia i Register File, la
memoria I/O, la memoria I/O estesa e i dati della SRAM. Le prime 32 locazioni
indirizzano i Register File, le successive 64 locazioni indirizzano la memoria I/O ,
dopo 160 locazioni della memoria I/O estesa, e i successivi 2K locazioni indirizzano i
dati della SRAM.

Ci sono 5 metodi di indirizzamento:


• Diretto;
• Indiretto con spostamento;
• Indiretto;
• Indiretto con pre-incremento;
• Indiretto con post-incremento
SRAM Data Memory
General Purpose Register
SRAM Data Memory
General Purpose Register
SRAM Data Memory
SRAM Data Memory
SRAM Data Memory
SRAM Data Memory
SRAM Data Memory
SRAM Data Memory
SRAM Data Memory
AVR CPU

• Caricamento istruzione
dalla memoria
programma (Fetch)
• Caricamento dati dalla
memoria dalla memoria
dai registri.

• Decodifica dell’istruzione
(Decode)
AVR CPU

• Esecuzione
istruzione (Execute)
AVR CPU
SRAM Data Memory
L’accesso alla memoria SRAM è eseguito in due cicli di clock come descritto nella
figura seguente:
Porte e Pin del Microcontrollore
Costituiscono il canale di Un insieme di pin
comunicazione del flusso di definisce una porta del
informazioni da e per il microcontrollore
microcontrollore.
Pin Digitali della scheda Arduino (pin
microcontrollore):
• Pins 0 – 7: PORT D [0:7] (pin 2-6,11-13)
• Pins 8 – 13: PORT B [0:5] (pin 14-19)
• Pins 14 – 19: PORT C [0:5] (pin 1, 23-28)
(configurabili anche come pin analogici)
• I pin digitali 0 e 1 sono RX and TX per la
comunicazione seriale
• il pin digitale 13 è connesso anche ad un
LED integrato sulla scheda
Es. PORTB
• Pins PB0 – PB7 Possono non essere contigui
• spesso sono bidirezionali.
Schema ATmega328 PDIP

Nome Numero
Pin Pin

Funzioni
Speciali

http://forum.arduino.cc/index.php/topic,146315.0.html
Schema atmega328 SMD

http://forum.arduino.cc/index.php/topic,146315.0.html

Potrebbero piacerti anche