Instytut Informatyki Politechnika Poznańska
AVR ang. Advanced Virtual RISC Twórcami są Alf Egil Bogen, Vegard Wollan RISC Architektura AVR została opracowana przez dwóch studentów w Norweskim Instytucie Technologii (NTH) a następnie dopracowana i rozwinięta w Atmel Norway, siostrzanej firmie Atmel Podział architektur RISC (ang. Reduced Instruction Set Computer) CISC (ang. Complex Instruction Set Computer) AVR mikrokontroler architektura RISC złożone instrukcje realizowane są przy pomocy zestawu prostych Pojedynczy cykl zewnętrznego zegara dla podstawowych instrukcji 32 rejestry robocze wszystkie rejestry są bezpośrednio połączone z ALU 01-2014 2
Architektura AVR RISC Pojedynczy cykl instrukcji: 8 MHz = 8 MIPS Duża liczba rejestrów ogólnego przeznaczenia (32) Każdy rejestr akumulatorem 3 pary rejestrów indeksowych Rejestry i IO są mapowane w pamięci SRAM 01-2014 3
The AVR is a Harvard architecture CPU Architektura Harwardzka (ang. Harvard Architecture) Architektura komputerowa, która fizycznie wykorzystuje oddzielne magistrale dla instrukcji i danych CPU może czytać instrukcje i dane w tym samym czasie i tym samym przyspiesza operacje wykonywania kodu Architektura von Neumanna (ang. Von Neumann Architecture) CPU może czytać z pamięci instrukcje lub dane sekwencyjnie - wspólna magistrala 01-2014 4
Architektura Harwardzka 01-2014 5
On Chip Debugger Two Wire Interface 01-2014 6
Arduino Powstało w 2005 r. w Instytucie Projektowania Interakcji we włoskim mieście Ivrea projekt stworzyli Massimo Banzi z instytutu w Ivrea oraz David Cuartielles z uniwersytetu wmalmö w Szwecji Opracowali mikrosterownik z myślą o projektach studentów sztuki i projektowania. Główne założenia to niska cena i łatwa w użyciu platforma David Mellis, student profesora Banziego, stworzył oprogramowanie Nazwa Arduino na pamiątkę lokalnego baru w Ivrea, chętnie odwiedzanego przez kadrę i studentów instytutu 01-2014 7
Arduino Jedna z pierwszych wersji Arduino Diecimila ( dzięsięć tysięcy po włosku) 01-2014 8
Arduino Nowsza wersja, jedna z najbardziej popularnych Arduino Duemilanove ( dwa tysiące dziewięć po włosku) Oferuje automatyczne przełączanie źródła zasilania pomiędzy portem USB a zasilaniem zewnętrznym 13 pinów cyfrowych wejść/ wyjść, w tym 6 PWM dla realizacji analogowych wyjść 6 pinów wejść analogowych Interfejs USB realizacja transmisji asynchronicznej oraz ładowanie i uruchamianie programu Do lutego 2009 r. mikrokontroler ATmega168, później ATmega328 16 kb lub 32 kb dla programu oraz 1 kb lub 2 kb dla danych Arduino bootloader 01-2014 9
Arduino Nowsza wersja, jedna z najbardziej popularnych Arduino Duemilanove ( dwa tysiące dziewięć po włosku) 01-2014 10
Arduino Arduino Lily 01-2014 11
Arduino Arduino Mega 01-2014 12
Arduino Arduino Nano 01-2014 13
Arduino Arduino Mini 01-2014 14
Arduino Arduino Due 01-2014 15
Arduino Aktualnie, najbardziej popularna wersja Arduino Uno ( jeden po włosku) 01-2014 16
Arduino Aktualnie, najbardziej popularna wersja Arduino Uno ( jeden po włosku) 01-2014 17
Arduino Arduino Uno z nakładką Ethernet 01-2014 18
Arduino Najnowsze opracowanie Uno Arduino Uno R3 01-2014 19
Arduino Najnowsze opracowanie Uno Arduino Uno R3 01-2014 20
Arduino Uno Mikrokontroler Atmega328 14 cyfrowych wejść / wyjść 6 wyjść może być używanych jako wyjścia PWM 6 wejść analogowych Rezonator kwarcowy 16 MHz W Uno, zamiast FTDI (interfejs USB stosowany we wcześniejszych wersjach Arduino) zastosowano mikrokontroler ATmega16U2 (w wersji R2 ATmega8U2) R2 zawiera rezystor podciągający linię HBW (ATmega8U2) do masy co ułatwia tryb DFU (ang. Device Firmware Update spec. prot. USB) 01-2014 21
Arduino Uno Najnowsze opracowanie Arduino Uno R3 R3 dodano piny SDA i SCL, które są blisko AREF i dwa nowe piny umieszczone blisko IOREF co upraszcza ekranowanie sygnałów magistrali. W umożliwi to współpracę z nakładkami zasilanymi z 5V i 3,3V R3 sprawniejszy RESET R3 powrót do ATmega16U2 jako interfejsu USB R3 zalecane napięcie zasilania 7 12 V (limit 6 20 V) Pamięć Flash 32 KB (0,5 KB) Pamięć SRAM 2 KB Pamięć EEPROM 1 KB 01-2014 22
Arduino Uno ATmega 168/328 01-2014 23
Arduino programowanie Język referencyjny Programy Arduino można podzielić na trzy główne części: struktury, wartości (zmienne i stałe) oraz funkcje Struktura setup () loop () Struktury sterowania if if else for switch case while do while break continue return goto 01-2014 24
Arduino programowanie Struktura Dalsza składnia ; (średnik) {} (nawiasy klamrowe) // (komentarz w jednej linii) /*/ (komentarz wieloliniowy) #define #include Operatory arytmetyczne = (operator przypisania) + (dodawanie) - (odejmowanie) * (mnożenie) / (dzielenie) % (modulo) 01-2014 25
Arduino programowanie Struktura Operatory porównania == (równy)!= (różny) < (mniejszy) > (mnożenie) <= (mniejszy lub równy) >= (większy lub równy) Operatory logiczne && (i) (lub)! (nie) Operatory wskaźnikowe * (operator adresowania pośredniego (wyłuskania ang. dereference operator)) & (operator adresu (odniesienia- ang. reference operator)) 01-2014 26
Arduino programowanie Struktura Operatory bitowe & (bitowe i) (bitowe lub) ^ (bitowe XOR) ~ (bitowe nie) << (przesunięcie bitów w lewo) >> (przesunięcie bitów w prawo) Operatory złożone ++ (inkrementacja) -- (dekrementacja) += (złożone przypisanie) -= (złożone przypisanie) *= (złożone przypisanie) /= (złożone przypisanie) &= (złożone przypisanie bitowe) = (złożone przypisanie bitowe) 01-2014 27
Arduino programowanie Zmienne Stałe HIGH LOW INPUT OUTPUT INPUT_PULLUP LED_BUILTIN true false integer constants floating point constants Typy danych void boolean char unsigned char byte int unsigned int word long unsigned long short float double string - (char array) String - (object) array 01-2014 28
Arduino programowanie Zmienne Konwersje char() byte() int() word() long() float() Zakres zmiennych i kwalifikatory Variable scope static volatile const Narzędzia sizeof() 01-2014 29
Arduino programowanie Funkcje Cyfrowe we/wy pinmode() digitalwrite() digitalread() Analogowe we/wy analogreference() analogread() analogwrite() - (PWM) Tylko Due analogreadresolution() analogwriteresolution() Zaawansowane we/wy tone() notone() shiftout() shiftin() pulsein() 01-2014 30
Arduino programowanie Funkcje Czasowe millis() micros() delay() delaymicroseconds() Matematyczne min() max() abs() constrain() map() pow() sqrt() Trygonometryczne sin() cos() tan() 01-2014 31
Arduino programowanie Funkcje Liczby pseudolosowe randomseed() random() Bity i Bajty lowbyte() highbyte() bitread() bitwrite() bitset() bitclear() bit() Przerwania zewnętrzne interrupts() nointerrupts() 01-2014 32
Arduino programowanie Funkcje Komunikacja Serial Stream USB (tylko Due i Leonardo) Keyboard Mouse Przerwania zewnętrzne interrupts() nointerrupts() Więcej? http://arduino.cc/en/reference/libraries 01-2014 33
Arduino programowanie Środowisko 01-2014 34
Arduino programowanie Ładowanie szkicu 01-2014 35
Arduino programowanie Wybór modułu 01-2014 36
Arduino programowanie Wybór portu 01-2014 37
Arduino programowanie Aplikacja Blink 01-2014 38
Arduino programowanie Aplikacja Blink 01-2014 39
Arduino programowanie Aplikacja Blink 01-2014 40
Arduino programowanie Aplikacja Blink - modyfikacja 01-2014 41
Arduino programowanie Aplikacja Blink - modyfikacja 01-2014 42
Arduino narzędzia Fritzing http://fritzing.org/download/ 01-2014 43
Dziękuję 44 09-2006