presentazione arduino daypulafablabsardegna 140407051824-phpapp02

54
Il Cuore di Arduino Un sistema di sviluppo basato su microcontrollore Atmel AVR PaoloP http://forum.arduino.cc/index.php?action=profile;u=5 8300

Upload: a-t

Post on 12-Feb-2017

316 views

Category:

Technology


0 download

TRANSCRIPT

Il Cuore di ArduinoUn sistema di sviluppo basato su microcontrollore Atmel AVR

PaoloPhttp://forum.arduino.cc/index.php?action=profile;u=58300

ArgomentiArchitettura generale dei microcontrolloriAmbiente di sviluppo integratoCaratteristiche e elementi di Arduino UNOPrincipali caratteristiche del ATmega328PConcetti di porte e pin del microcontrollore Istruzioni per comandare i pin del microcontrollore

2

Il Team Arduino

Martino Mellis Cuartielles Igoe Banzi

Arduino con interfaccia RS-232

Il primo prototipo funzionante di ArduinoIl prototipo zero di Arduino, quando ancora si chiamava Programma 2003

Arduino NG (Nuova Generazione)

Arduino Duemilanove

Arduino Uno

Arduino Uno R3

http://arduino.cc/en/Main/Products

Cos Arduino?Piattaforma di sviluppo open sourceOpen Source HardwareOpen Source SoftwareEconomica e facilmente reperibileEspandibile tramite shield

https://github.com/arduino/ArduinoOpen Software

http://arduino.cc/en/Main/ArduinoBoardUnoOpen Hardware

Sistema di espansione a shield

http://shieldlist.org/

Prima di Arduino

Computer Software Eclipse AVR Studio 4 Porte Serial Parallel USB

Programmatore Interfaccia JTAG/ICE ISP Programmatore Bit-Bang ICSP AVRISP Mk II

Microcontrollore VersioneDIPSOICQFN FunzioniADC/DACPWMUSB

12

Arduino Uno R3

LEDConnettore USBJack Alimentazione

Connettori Pin DigitaliPulsante di RiavvioMicrocontrolloreAVR

ATmega328PConnettori Pin AnalogiciConnettori alimentazione

Convertitore USB-Seriale

Arduino IDE (integrated development environment)

L'ambiente di sviluppo integrato Arduino rende semplice la scrittura di codice e caricarlo sulla scheda.

Funziona su Windows, Mac OS X e Linux.

L'ambiente scritto in Java e basato su Processing, avr-gcc e altri software open source.

Il linguaggio di Arduino

Linguaggio C/C++Sintassi semplificata da funzioni di supporto alla programmazioneAstrazione dei nomi dei pin, passaggio ai numeriFacile da imparare e potenteFacilit di riutilizzo del codice C per altri progettiLibrerie scritte in C/C++Moltissimo codice di esempio (Tutorial Playground)Moltissime librerie gi pronte (GitHub GoogleCode)

Parole chiave del Cautodoubleintstructbreakelselongswitchcaseenumregistertypedefcharexternreturnunionconstfloatshortunsignedcontinueforsignedvoiddefaultgotosizeofvolatiledoifstaticwhile

Le funzioni di ArduinoDigital I/OpinMode()digitalWrite()digitalRead()

Analog I/OanalogReference()analogRead()analogWrite() -PWM

Due onlyanalogReadResolution()analogWriteResolution()

Advanced I/Otone()noTone()shiftOut()shiftIn()pulseIn()

Timemillis()micros()delay()delayMicroseconds()

Mathmin()max()abs()constrain()map()pow()sqrt()

Trigonometrysin()cos()tan()

Random NumbersrandomSeed()random()

Bits and ByteslowByte()highByte()bitRead()bitWrite()bitSet()bitClear()bit()

External InterruptsattachInterrupt()detachInterrupt()

Interruptsinterrupts()noInterrupts()

CommunicationSerialStream

USB (Leonardo and Due only)KeyboardMouse

http://it.wikipedia.org/wiki/MicrocontrolloreMicrocontrollore

Inelettronica digitaleilmicrocontrolloreomicrocontrolleroMCU(MicroController Unit) un dispositivo elettronico integratosu singolochip, nato come evoluzione alternativa alMicroprocessoreed utilizzato generalmente insistemi embedded ovvero per applicazioni specifiche dicontrollo digitale.

ANALOGINPUTS

AVRSviluppati da Atmel nel 1996Famiglia di Microcontrollori RISC(reduced instruction set computer)Istruzioni a lunghezza fissa, accesso alla memoria di tipo load-store con 32 registri general-purposePipeline a due stadi per velocizzare lesecuzioneEsecuzione della maggior parte delle istruzioni in un solo ciclo di clockFino a 12 volte pi veloce di una architettura standard CISCArchitettura Harvard

http://it.wikipedia.org/wiki/Architettura_di_von_NeumannArchitettura Von Neumann

http://it.wikipedia.org/wiki/Architettura_HarvardArchitettura Harvard

Surveyor SRV-1 Blackfin Robot

AVRMemoria Flash programmabile, RAM, EEPROM interneSistema di programmazione interno (ISP)Variet di periferiche: I/O digitali, ADC, Timer, UART, RTC timer, pulse width modulator (PWM)Funzionamento fino a 20MHzAmpia gamma di tensioni di funzionamento: da 1.8 V a 6.0 V.Package variabile da 8 pin fino a 64 pin

FamiglieATtiny25-45-85, ATtiny24-44-84, ATtiny2313-4313 ...ATmega88, ATmega168, ATmega328P ...

Atmel ATmega328P

Versione PDIPPlastic Dual In-line Package

Versione SMDSurface-Mount Device

http://www.atmel.com/Images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet.pdfCaratteristiche ATmega328P

http://arduino.cc/en/Main/ArduinoBoardUnoCaratteristiche Arduino Uno

Tensione di lavoro dei pinI Microcontrollori sono fondamentalmente dei dispositivi digitali dove linformazione codificata in due stati discreti:HIGH or LOW (stato logici: 1 oppure 0)

Tensioni5 V (per HIGH)0 V (per LOW)

3.3 V (per HIGH)0 V (per LOW)

http://www.atmel.com/Images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet.pdfValori massimi

Porte e Pin del MicrocontrolloreCostituiscono il canale di comunicazione del flusso di informazioni da e per il microcontrollore

Es. PORTBPins PB0 PB7Possono non essere contiguiSpesso sono bidirezionali

28

Schema a blocchi - Architettura interna ATmega328

Schema ATmega328 PDIP

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

Nome Pin

Funzioni Speciali

NumeroPin

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

Periferiche interneMemoria FlashMemoria RAMMemoria EEPROMWatchDog TimerInterfaccia SerialeInterfaccia SPIInterfaccia I2CConvertitore Analogico DigitaleTimersPorte/Pin

Input

Output

Particolare della Porta D

Direzione dei dati nelle Porte e PinInputQuando si prendono le informazioni dal mondo esterno (sensori) verso la MCU

OutputQuando si invia un segnale per cambiare lo stato di un qualcosa di esterno alla MCU (accendere o spegnere un led, un motore, etc.)

allaccensione o al Reset i pin sono impostati di default come inputda programma possibile cambiare la direzione e lo stato dei pin in qualsiasi momentoogni porta I/O ha associati dei registri di memoria

34

Registri di memoria I/OSREG: Status RegisterSP: Stack Pointer RegisterGIMSK: General Interrupt Mask RegisterGIFR: General Interrupt Flag RegisterMCUCR: MCU General Control RegisterMCUSR: MCU Status RegisterTCNTO: Timer/Counter 0 RegisterTCCR0A: Timer/Counter 0 Control Register ATCCR0B: Timer/Counter 0 Control Register BOCR0A: Timer/Counter 0 Output Compare Register AOCR0B: Timer/Counter 0 Output Compare Register BTIMSK0: Timer/Counter 0 Interrupt Mask RegisterTIFR0: Timer/Counter 0 Interrupt Flag RegisterEEAR: EEPROM Address RegisterEEDR: EEPROM Data RegisterEECR: EEPROM Control RegisterPORTB: PortB Data RegisterDDRB: PortB Data Direction RegisterPINB: Input Pins on PortBPORTD: PortD Data RegisterDDRD: PortD Data Direction RegisterPIND: Input Pins on PortDSPI I/O Data RegisterSPI Status RegisterSPI Control RegisterUART I/O Data RegisterUART Status RegisterUART Control RegisterUART Baud Rate RegisterACSR: Analog Comparator Control and Status Register

Nell'architettura dei calcolatori un registro una piccola parte di memoria utilizzata per velocizzare l'esecuzione dei programmi fornendo un accesso rapido ai valori usati pi frequentemente, tipicamente, i valori correntemente in uso in una determinata parte di un calcolo. La maggior parte delle moderne architetture dei computer (RISC, o pi genericamente "architetture load-store") basata su un'architettura a pipeline che trae beneficio dal limitare l'accesso in memoria alle sole istruzioni load e store, utilizzando soltanto registri e costanti per l'esecuzione di tutte le altre istruzioni.

35

Registri della Porta B

PORTB: PortB Data RegisterDDRB: PortB Data Direction RegisterPINB: Pins Input on PortBBit76543210

Bit76543210

Bit76543210

Registri di una PortaCiascuna Porta I/O ha associati 3 registri:DDRx (dove x A, B, C)Data Direction Register Port xDetermina quali pin della porta sono input (0) e quali sono output (1)DDRB = 0x02; /* imposta il secondo pin della porta B come output */

PORTxPort Driver RegisterPORTB = 0x02; /* imposta il secondo pin della porta a livello alto e azzera gli altri */ PINxPort Pins RegistersLegge contemporaneamente lo stato di tutti e 8 i pin della portaunsigned short int x;x = PINB; /* Scrive lo stato della porta B nella variabile x */

37

Pilotare un LED (blink)#include #include

int main(void){DDRB = (1