Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałRobert Sikorski Został zmieniony 6 lat temu
1
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
AMiW ATmega i Arduino Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
2
Mikrokontrolery AVR 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 Zygmunt Kubiak
3
Mikrokontrolery AVR 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 Zygmunt Kubiak
4
Mikrokontrolery AVR 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 Zygmunt Kubiak
5
Mikrokontrolery AVR Architektura Harwardzka Zygmunt Kubiak
6
Mikrokontrolery AVR On Chip Debugger Two Wire Interface 01-2014
Zygmunt Kubiak
7
Mikrokontrolery AVR Port Zygmunt Kubiak
8
Konfiguracja wejścia Mikrokontrolery AVR DDRx = 0 PINx 01-2014
Zygmunt Kubiak
9
Konfiguracja wejścia z pullup
Mikrokontrolery AVR Konfiguracja wejścia z pullup DDRx = 0 ATmega328 VZ= +5V PORTx=1 Arduino: digitalWrite(SW, HIGH); pinMode(SW, INPUT_PULLUP); PINx Zygmunt Kubiak
10
Konfiguracja wyjścia Mikrokontrolery AVR DDRx = 1 PORTx 01-2014
Zygmunt Kubiak
11
PWM - ang. Pulse With Modulation
Mikrokontrolery AVR PWM - ang. Pulse With Modulation Zygmunt Kubiak
12
Mikrokontrolery AVR 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 Zygmunt Kubiak
13
Mikrokontrolery AVR Arduino
Jedna z pierwszych wersji – Arduino Diecimila („dzięsięć tysięcy” po włosku) Zygmunt Kubiak
14
Mikrokontrolery AVR 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 Zygmunt Kubiak
15
Mikrokontrolery AVR Arduino
Nowsza wersja, jedna z najbardziej popularnych – Arduino Duemilanove („dwa tysiące dziewięć” po włosku) Zygmunt Kubiak
16
Mikrokontrolery AVR Arduino Arduino Lily Zygmunt Kubiak
17
Mikrokontrolery AVR Arduino Arduino Mega Zygmunt Kubiak
18
Mikrokontrolery AVR Arduino Arduino Nano Zygmunt Kubiak
19
Mikrokontrolery AVR Arduino Arduino Mini Zygmunt Kubiak
20
Mikrokontrolery AVR Arduino Arduino Due Zygmunt Kubiak
21
Mikrokontrolery AVR Arduino
Aktualnie, najbardziej popularna wersja – Arduino Uno („jeden” po włosku) Zygmunt Kubiak
22
Mikrokontrolery AVR Arduino
Aktualnie, najbardziej popularna wersja – Arduino Uno („jeden” po włosku) Zygmunt Kubiak
23
Mikrokontrolery AVR Arduino Arduino Uno z nakładką Ethernet 01-2014
Zygmunt Kubiak
24
Mikrokontrolery AVR Arduino Najnowsze opracowanie Uno – Arduino Uno R3
Zygmunt Kubiak
25
Mikrokontrolery AVR Arduino Najnowsze opracowanie Uno – Arduino Uno R3
Zygmunt Kubiak
26
Mikrokontrolery AVR 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) Zygmunt Kubiak
27
Mikrokontrolery AVR 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 Zygmunt Kubiak
28
Mikrokontrolery AVR Arduino Uno ATmega 168/328 Zygmunt Kubiak
29
Arduino programowanie
Mikrokontrolery AVR 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 Zygmunt Kubiak
30
Arduino programowanie
Mikrokontrolery AVR 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) Zygmunt Kubiak
31
Arduino programowanie
Mikrokontrolery AVR 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)) Zygmunt Kubiak
32
Arduino programowanie
Mikrokontrolery AVR 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) Zygmunt Kubiak
33
Arduino programowanie
Mikrokontrolery AVR 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 Zygmunt Kubiak
34
Arduino programowanie
Mikrokontrolery AVR Arduino programowanie Zmienne Konwersje char() byte() int() word() long() float() Zakres zmiennych i kwalifikatory Variable scope static volatile const Narzędzia sizeof() Zygmunt Kubiak
35
Arduino programowanie
Mikrokontrolery AVR 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() Zygmunt Kubiak
36
Arduino programowanie
Mikrokontrolery AVR Arduino programowanie Funkcje Czasowe millis() micros() delay() delayMicroseconds() Matematyczne min() max() abs() constrain() map() pow() sqrt() Trygonometryczne sin() cos() tan() Zygmunt Kubiak
37
Arduino programowanie
Mikrokontrolery AVR Arduino programowanie Funkcje Liczby pseudolosowe randomSeed() random() Bity i Bajty lowByte() highByte() bitRead() bitWrite() bitSet() bitClear() bit() Przerwania zewnętrzne interrupts() noInterrupts() Zygmunt Kubiak
38
Arduino programowanie
Mikrokontrolery AVR Arduino programowanie Funkcje Komunikacja Serial Stream USB (tylko Due i Leonardo) Keyboard Mouse Przerwania zewnętrzne interrupts() noInterrupts() Więcej? Zygmunt Kubiak
39
Arduino programowanie
Mikrokontrolery AVR Arduino programowanie Środowisko Zygmunt Kubiak
40
Arduino programowanie
Mikrokontrolery AVR Arduino programowanie Ładowanie szkicu Zygmunt Kubiak
41
Arduino programowanie
Mikrokontrolery AVR Arduino programowanie Wybór modułu Zygmunt Kubiak
42
Arduino programowanie
Mikrokontrolery AVR Arduino programowanie Wybór portu Zygmunt Kubiak
43
Arduino programowanie
Mikrokontrolery AVR Arduino programowanie Aplikacja Blink Zygmunt Kubiak
44
Arduino programowanie
Mikrokontrolery AVR Arduino programowanie Aplikacja Blink Zygmunt Kubiak
45
Arduino programowanie
Mikrokontrolery AVR Arduino programowanie Aplikacja Blink Zygmunt Kubiak
46
Arduino programowanie
Mikrokontrolery AVR Arduino programowanie Aplikacja Blink - modyfikacja Zygmunt Kubiak
47
Arduino programowanie
Mikrokontrolery AVR Arduino programowanie Aplikacja Blink - modyfikacja Zygmunt Kubiak
48
Mikrokontrolery AVR Arduino narzędzia Fritzing
Zygmunt Kubiak
49
Dziękuję Zygmunt Kubiak
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.