Systemy Wbudowane. Arduino, AVR (wersja 2019) Arduino. Arduino. Oprogramowanie. Rys historyczny. Mikrokontroler

Podobne dokumenty
Systemy Wbudowane. Arduino, AVR. Arduino. Arduino. Arduino. Oprogramowanie. Mikrokontroler. Mikrokontroler Platforma Arduino. Arduino IDE: Arduino C:

Systemy Wbudowane. Arduino, AVR (wersja 2018) Arduino. Arduino. Oprogramowanie. Rys historyczny. Mikrokontroler

Systemy Wbudowane. Arduino, AVR (wersja ) Arduino. Arduino. Arduino. Oprogramowanie. Mikrokontroler

Systemy Wbudowane. Arduino C. Arduino C - stałe. Arduino C - Stałe. Arduino C - Stałe. Funkcje matematyczne. Arduino C - Stałe

Systemy Wbudowane. Arduino C. Arduino C - stałe. Arduino C - Stałe. Arduino C - Stałe. Funkcje matematyczne. Arduino C - Stałe

Systemy Wbudowane. Arduino - rozszerzanie. Podłączanie wyświetlacza LCD. Podłączanie wyświetlacza LCD. Podłączanie wyświetlacza LCD

Programowanie mikrokontrolerów AVR

Systemy Wbudowane. Arduino rozszerzanie Wersja Plan. Biblioteka EPROM Arduino bez płytki Arduino. Czyli... Co musimy mieć, aby uruchomić chip?

Język C. Wykład 9: Mikrokontrolery cz.2. Łukasz Gaweł Chemia C pokój 307

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Schemat blokowy architektury AVR

o Instalacja środowiska programistycznego (18) o Blink (18) o Zasilanie (21) o Złącza zasilania (22) o Wejścia analogowe (22) o Złącza cyfrowe (22)

Materiały. Języki programowania II (Java+AVR-GCC) Literatura

Systemy wbudowane Arduino, AVR

Arduino dla początkujących. Kolejny krok Autor: Simon Monk. Spis treści

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Systemy Wbudowane. Arduino dołączanie urządzeń Wersja Arduino bez płytki Arduino. Czyli... Eliminowanie modułu z projektu. Na płytce...

Uwaga: dioda na wyjściu 13 świeci gdy na wyjście podamy 0.

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2

Systemy Wbudowane. Arduino dołączanie urządzeń Wersja Arduino więcej portów I/O. Układy serii 74. Układy serii 74xx a seria 40xx

Kurs Elektroniki. Część 5 - Mikrokontrolery. 1/26

Systemy wbudowane. Paweł Pełczyński

Szkolenia specjalistyczne

MIKROKONTROLERY I MIKROPROCESORY

2. Architektura mikrokontrolerów PIC16F8x... 13

Wstęp Architektura... 13

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

AVR DRAGON. INSTRUKCJA OBSŁUGI (wersja 1.0)

Porty wejścia/wyjścia w układach mikroprocesorowych i w mikrokontrolerach

ZASTOSOWANIE PLATFORM CYFROWYCH ARDUINO I RASPBERRY PI W NAUCZANIU STEROWANIA OBIEKTEM PNEUMATYCZNYM

Porty wejścia/wyjścia w układach mikroprocesorowych i w mikrokontrolerach

Mikroprocesory i Mikrosterowniki

MIKROKONTROLERY AVR JĘZYK C WYDAWNICTWO ATNEL PODSTAWY PROGRAMOWANIA. Miros aw Kardaś. Szczecin Mojej Żonie Kasi

Rafał Staszewski Maciej Trzebiński, Dominik Derendarz

Wykład 4. Przegląd mikrokontrolerów 16-bit: - PIC24 - dspic - MSP430

E-TRONIX Sterownik Uniwersalny SU 1.2

Zaliczenie Termin zaliczenia: Sala IE 415 Termin poprawkowy: > (informacja na stronie:

Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI

MCAR Robot mobilny z procesorem AVR Atmega32

Charakterystyka mikrokontrolerów. Przygotowali: Łukasz Glapiński, Mateusz Kocur, Adam Kokot,

Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

UNO R3 Starter Kit do nauki programowania mikroprocesorów AVR

Zmierzyć się z żywiołami, czyli jak zbudować własną stację badawczą! Zaczynamy! Pole komunikatów programu. Nawigacja w programie Arduino

Zastosowanie procesorów AVR firmy ATMEL w cyfrowych pomiarach częstotliwości

STM32 Butterfly. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Mikrokontroler AVR ATmega32 - wykład 9

Spis treści. Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Moduł prototypowy X3-DIL64 z procesorem ATxmega128A3U-AU

SCL > Pin 21 SDA > Pin 20 VCC > 5V GND > GND

WPROWADZENIE Mikrosterownik mikrokontrolery

Wykład 2. Przegląd mikrokontrolerów 8-bit: -AVR -PIC

KAmduino UNO. Rev Źródło:

KAmduino UNO. Płytka rozwojowa z mikrokontrolerem ATmega328P, kompatybilna z Arduino UNO

Klawiatura matrycowa

Wyniki (prawie)końcowe - Elektroniczne warcaby

dokument DOK wersja 1.0

Mikroprocesory i Mikrosterowniki

1.1 Co to jest USBasp? Parametry techniczne Obsługiwane procesory Zawartość zestawu... 4

High Speed USB 2.0 Development Board

Uczeń/Uczennica po zestawieniu połączeń zgłasza nauczycielowi gotowość do sprawdzenia układu i wszystkich połączeń.

ZL29ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Systemy mikroprocesorowe. Literatura podręcznikowa. Przedmioty związane. Przykłady systemów wbudowanych. Pojęcie systemu wbudowanego embedded system

Zestaw Startowy EvB. Więcej informacji na stronie:

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

Systemy wbudowane. Wprowadzenie. Struktura. Mikrokontrolery AVR. Wprowadzenie do programowania w C

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Technika Mikroprocesorowa

PMiK Programowanie Mikrokontrolera 8051

Wprowadzenie do podstaw programowania AVR (na przykładzie mikrokontrolera ATmega 16 / 32)

Płyta uruchomieniowa EBX51

Techniki mikroprocesorowe i systemy wbudowane

Kurs programowania mikrokontrolerów ARM z rodziny Cortex-M3


Wejścia logiczne w regulatorach, sterownikach przemysłowych

LITEcompLPC1114. Zestaw ewaluacyjny z mikrokontrolerem LPC1114 (Cortex-M0) Sponsorzy:

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Płytka uruchomieniowa XM64

Instytut Teleinformatyki

1. Wstęp Różnice pomiędzy mikrokontrolerami ST7 a ST7LITE Rdzeń mikrokontrolerów ST7FLITE... 15

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Płytka uruchomieniowa AVR oparta o układ ATMega16/ATMega32. Instrukcja Obsługi. SKN Chip Kacper Cyrocki Page 1

Prosty system alarmowy z Arduino

micro Programator ISP mikrokontrolerów AVR zgodny z STK500v2 Opis Obs³ugiwane mikrokontrolery Wspó³praca z programami Podstawowe w³aœciwoœci - 1 -

Mikrokontroler Wykład 5

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

AVREVB1. Zestaw uruchomieniowy dla mikrokontrolerów AVR. Zestawy uruchomieniowe

Mechatronika i inteligentne systemy produkcyjne. Modelowanie systemów mechatronicznych Platformy przetwarzania danych

6 ARDUINO DLA POCZĄTKUJĄCYCH. PODSTAWY I SZKICE

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Zestaw uruchomieniowy z mikrokontrolerem LPC1114 i wbudowanym programatorem ISP

Technika mikroprocesorowa. W. Daca, Politechnika Szczecińska, Wydział Elektryczny, 2007/08

Wstęp Podstawy programowania QBASIC Budowa mikroprocesora Zestaw uruchomieniowy Porty wejścia/wyjścia...

Rok akademicki: 2013/2014 Kod: EEL s Punkty ECTS: 2. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

Projekt MARM. Dokumentacja projektu. Łukasz Wolniak. Stacja pogodowa

MODUŁ UNIWERSALNY UNIV 3

Komunikacja w mikrokontrolerach. Wydział Elektroniki Mikrosystemów i Fotoniki Piotr Markowski

1.2. Architektura rdzenia ARM Cortex-M3...16

Transkrypt:

Mikrokontroler Platforma Mikrokontroler AVR Uno Systemy Wbudowane IDE: Środowisko Preprocesor kodu Terminal Uruchamianie, AVR (wersja 09) mgr inż. Marek Wilkus http://home.agh.edu.pl/~mwilkus Wydział Inżynierii Metali i Informatyki Przemysłowej AGH Kraków Oprogramowanie IDE: C: Podstawowe techniki programowania mikrokontrolerów, Budowa programu, Sterowanie wyjściami, Wejścia/wyjścia cyfrowe podłączenie urządzeń zewnętrznych, Urządzenia wewnętrzne, Komunikacja z komputerem, Przerwania. https://www.sites.google.com/site/unoardusim/ DIY Layout Creator: http://diy-fever.com/software/diylc/ 4 970... Uniwersalne bloki sterujące. Jeden moduł, cechy późniejszych mikrokontrolerów. System mikroprocesorowy w postaci jednego układu scalonego. Zintegrowane: http://winavr.sourceforge.net/ UnoArduSim: Mikrokontroler http://www.kicad-pcb.org WinAVR: 3 http://fritzing.org KiCAD: http://www.arduino.cc Fritzing: CPU RAM Pamięć programu Urządzenia I/O Dodatkowe urządzenia Użycie jednego układu: oszczędność miejsca, energii, łatwa rozbudowa i programowanie systemu. 5 6

97 Texas Instruments TMS000 98x - BASIC Stamp miniaturyzacja, niska cena, łatwe zastosowania hobbystyczne. Pierwszy mikrokontroler Wewnętrzne źródło częstotliwości Programowanie: Mask-ROM Bardzo wysokie ceny 976 Intel 8048 (MCS-48): Programowanie jak EPROM kb ROM 8B RAM Początek serii MCS-48 Programowanie: in-system, lub Mask-ROM. Układ hybrydowy, Łatwe programowanie, także Programowanie w BASIC. Wciąż produkowane. i późniejszych 5. Assembler 7 8 975-85 PIC: 995-97 Atmel AVR: Programowanie jak EPROM, 993 Pamięć EEPROM. Różnorodność modeli. Programowanie: Assembler C Duża pamięć programu (4-5kB) Wiele urządzeń wewnętrznych Różnorodność modeli: od ATTiny do AVR3 Pamięć Flash dla programu Pamięć Flash dla użytkownika Niska cena Łatwe programowanie: Komercyjne narzędzia. Wciąż rozwijane. Assembler Basic (BASCOM) C Obecność platform np.. Otwarte narzędzia deweloperskie. Wciąż rozwijane. 9 0 Uno Mikrokontroler: AVR ATMega38 6MHz. 3kB pamięci Flash na program (3kB dostępne - bootloader) kb RAM kb EEPROM GPIO: 4 pinów (6 PWM) 6 wejść analogowych Interfejs z komputerem: USB-RS3. Programowanie przez USB. Zasilanie: 5V, własna stabilizacja. Platforma programistyczna dla systemów wbudowanych. Open Hardware (z wyjątkami). Pojedynczy moduł. Mikrokontroler AVR. Wbudowany interfejs mikrokontroler-komputer. Programowanie: C. Środowisko: IDE.

AVR AVR: Co otrzymujemy? 8-bitowy, jednoukładowy mikrokontroler RISC. Pamięć programu: Flash, Pamięć operacyjna: Statyczny RAM, Dodatkowa pamięć Flash dla programów użytkownika, Wyprowadzenia wielofunkcyjne, Wbudowane interfejsy i przetworniki, 6 6 timery 8-bitowe timer 6-bitowy liczniki kanałów PWM kanałów ADC, 0-bitowe przerwania z GPIO BOR, WDT, Możliwość pracy z wewnętrznym oscylatorem, Programowanie ISP (In-System Programming), 3 4 C Informacje Eliminuje konieczność ustawiania wbudowanych urządzeń przez konfigurację rejestrów sterujących. Ułatwia budowę programu. Znacznie przyspiesza testowanie i prototypowanie. Zabezpiecza przed problemami z konfiguracją wstępną (Fuse-bity). Dostarcza użytecznych bibliotek funkcji. Kod podobny do C++, konwertowany do C. Noty katalogowe i instrukcje: Niższa niż w przypadku czystego C wydajność i większy rozmiar kodu. Toleruje techniki marnujące pamięć operacyjną. Podręczniki: Monk S. - dla początkujących Podstawy i szkice Helion 04. http://www.atmel.com http://www.atmel.com/devices/atmega38.aspx : http://www.arduino.cc/ http://arduino.cc/en/reference/ http://ep.com.pl - Kurs (PL) Evans B. - Beginning programming - Apress 0. 5 Informacje Manual Co jest niezbędne? 6 Uno Parametry układu: Czy układ będzie spełniał zadanie w projekcie? Warunki pracy układu: Zasilanie. Moc wyjściowa. Warunki środowiskowe. Wydajność. Czy parametry używanych urządzeń są wystarczające? Programowanie: Mapa rejestrów i praca z urządzeniami. 7 8

IDE programowanie. Sprawdzenie kodu Załadowanie do Monitor portu terminal Nowy plik Nie stosować danych binarnych!! Otwórz/zapisz Informacje kompilatora Użyty wirtualny port szeregowy 9 C 0 Podstawowe techniki Co dzieje się gdy uruchamiamy kod? Dyrektywa preprocesora #define: Biblioteki #define nazwa wartość Plik INO Preprocesor Plik.C Podczas kompilacji wystąpienia nazwy zostaną zastąpione wartością. Np. AVR-GCC.c.o.elf hex Plik.HEX AVRDude #define ledpin 3 Ustawienia platformy USB lub RS3 Zamieni występowanie ledpin na 3. W przypadku zmiany konstrukcji zmiana jednej linii kodu. Podstawowe techniki Podstawowe typy danych volatile nie buforuje zmiennej w rejestrach: boolean wartość logiczna (prawda/fałsz), zajmuje bajt danych. char, unsigned char = byte (0..55). int, unsigned int = word (0..^6-). Zmiennoprzecinkowe: float (4B), double (4B). string jako tablica char'ów lub typ z biblioteki. volatile int stan; Gdy zmienna ta zostanie zmieniona poza programem (np. w trakcje procedury przerwania) zostanie użyta jej aktualna wartość. W nowszych wersjach kompilator automatycznie stara się ustawić buforowanie zmiennych. 3 4

Budowa programu #define ledpin Budowa programu 3 #define ledpin 3 void main() setup(); while() loop(); serialevent(); 5 6 LED Zmienne i funkcje #define ledpin 3 Wymagany rezystor obniżający prąd. Vcc=5V Typowy LED 3mm: IF=0mA, VF=V unsigned int R= Vcc-VF delay(50); IF delay(50); (5-) / 0.0 = 50 Ω A w praktyce 0...470Ω 7 8 Wejścia idea rezystora podciągającego Stan logiczny HIGH to ok...5v. Stan LOW to 0..0.8V. Wejścia idea rezystora podciągającego Gdy dołączymy do wejścia stan niski (np. masę), prąd popłynie przez rezystor, a spadek napięcia na nim będzie wystarczający by na wejściu mikrokontrolera pojawił się stan niski. Ponieważ rezystor ma sporą oporność, prąd płynący przez niego będzie zaś niski na tyle, by nie poczynić szkód w układzie. Rezystory podciągające są powszechnie stosowane w układach logicznych. Prąd pobierany przez wejście przy sprawdzaniu stanu (pomiarze) jest minimalny, Wejście niepodłączone - wiszące w powietrzu (także podłączone do otwartego łącznika) - jest podatne na zakłócenia. Stany zmieniają się w nieprzewidywalny sposób. Są to tzw. stany nieustalone, Niezbędne jest użycie niewielkiego prądu, który zapewniłby wysoki stan logiczny gdy wejście jest niepodłączone, Prąd ten zapewniany jest przez rezystor podciągający (pull-up resistor) o wartości kilku kω, podłączony do zasilania. HIGH LOW ma wbudowane rezystory podciągające i nie ma potrzeby używania zewnętrznych! 9 ma wbudowane rezystory podciągające i nie ma potrzeby używania zewnętrznych! 30

Zmienne i funkcje, wejścia #define ledpin 3 Zmienne i funkcje, wejścia #define ledpin 3 unsigned int k = 0; #define resetpin unsigned int k = 0; #define resetpin if (!digitalread(resetpin)) delay(00); if (!digitalread(resetpin)) delay(00); delay(50); delay(50); HIGH delay(50); delay(50); 3 3 Zmienne i funkcje, wejścia #define ledpin 3 Funkcja delay i jej konsekwencje Istnieją dwie metody projektowania programu wykonywanego okresowo: Korzystając z delay w przyszłości trudny do rozbudowy, unsigned int k = 0; #define resetpin Korzystając z licznika wymaga odpowiedniego zaprojektowania (jako maszyna stanowa), lecz umożliwia łatwą rozbudowę, if (!digitalread(resetpin)) delay(00); delay(50); if (currentmillis - previousmillis >= 500) previousmillis = currentmillis; if (digitalread(ledpin)) else DigitalWrite(ledPin,HIGH); Wersja z delay: - W trakcie 500ms nie możemy nic zrobić (poza przerwaniami) delay(50); unsigned long previousmillis=0; unsigned long currentmillis = millis(); LOW INPUT + digitalwrite(high) = INPUT_PULLUP 33 Przerwania #define ledpin 3 #define resetpin volatile unsigned int void reset() Przerwania #define ledpin 3 delay(50); delay(50); attachinterrupt(0,reset,low); delay(50); delay(50); #define resetpin volatile unsigned int void reset() 34 Wersja z millis kod otwarty na rozbudowę attachinterrupt(0,reset,low); 35 Przerwanie Pin 0 3 delay(); millis(); = const Serial.Read()...36!

Port szeregowy komunikacja z komputerem Port szeregowy komunikacja z komputerem Serial.begin(9600); Serial.begin(9600); Serial.print("TO JEST TEST\n"); Serial.print("TO JEST TEST\n"); unsigned int k = ; unsigned int k = ; Serial.println(k); Serial.println(k,DEC); Serial.println(k,HEX); Serial.println(k,BIN); Serial.println(k); Serial.println(k,DEC); Serial.println(k,HEX); Serial.println(k,BIN); Serial.Write(k); Serial.Write(k); Serial.println( /nkoniec. ); TO JEST TEST 6F 00 O Koniec. Serial.println( /nkoniec. ); 37 Port szeregowy komunikacja z komputerem Odbieranie danych: Port szeregowy komunikacja z komputerem Odbieranie danych: Tryb automatyczny: char bajt=0; if (Serial.available() > 0) bajt = Serial.read(); Serial.print("Bajt: "); Serial.println(bajt, DEC); 38 Tryb automatyczny: char bajt=0; if (Serial.available() > 0) bajt = Serial.read(); Serial.print("Bajt: "); Serial.println(bajt, DEC); void serialevent()... void serialevent()... To NIE jest przerwanie!!! void main() setup(); while() loop(); serialevent(); 39 40 Biblioteka EEPROM Biblioteki Adres w EEPROM (0) Wbudowane pozwalają na obsługę: #include <EEPROM.h> EEPROMu, Zaawansowanych protokołów szeregowych, Wyświetlacza LCD, Kart SD, Interfejsu SPI, Portu szeregowego na dowolnym wyprowadzeniu, Specjalistycznych urządzeń zewnętrznych. Serial.begin(9600); Adres w EEPROM (0) int a=0; int v; int poprzednie=0; void serialevent() if (Serial.available()>0) int k=serial.parseint(); EEPROM.write(a,k); 4 Adres w EEPROM (0) v=eeprom.read(a); if (poprzednie!=v) Serial.println(v); poprzednie=v; Wartość (bajt!) 4

DHT- DHT- Sensor temperatury i wilgotności działający na jednoprzewodowej magistrali. Zasilanie: 5V Podłączenie: ---> Komunikacja dwustronna 0..50 *C, max 80RH Uwaga na pin 3/4! GND 3 4 Pulled to 5V! DATA +5V 43 Biblioteka DHT 44 Przykład zastosowania Pin DHT Serial.print("DHT, \t"); int chk = DHT.read(DHT_PIN); Serial.print(chk); #define DHT_PIN Serial.print(",\t"); #define F_PIN 4 Odczytaj wskazania do #define TEMP_MAX 9 DHT.humidity i.temperature Serial.print(DHT.humidity, ); Serial.print(",\t"); double temp = DHT.temperature; Serial.println(temp, ); Serial.begin(9600); if (temp>= TEMP_MAX) Serial.println("Termostat "); Serial.println(); digitalwrite(f_pin,high); pinmode(f_pin, OUTPUT); digitalwrite(f_pin,low); else digitalwrite(f_pin,low); delay(000); #include <dht.h> dht DHT; 45 DHT Uno 9 8 7 6 5 4 3 0 4K7 M N400 BC547 K 46