Systemy Wbudowane. Arduino, AVR (wersja ) Arduino. Arduino. Arduino. Oprogramowanie. 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 2019) Arduino. Arduino. Oprogramowanie. Rys historyczny. Mikrokontroler

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

Programowanie mikrokontrolerów AVR

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

Systemy wbudowane Arduino, AVR

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

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

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)

Szkolenia specjalistyczne

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

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

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

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

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

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

AVR DRAGON. INSTRUKCJA OBSŁUGI (wersja 1.0)

Systemy wbudowane. Paweł Pełczyński

Wstęp Architektura... 13

E-TRONIX Sterownik Uniwersalny SU 1.2

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

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

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

2. Architektura mikrokontrolerów PIC16F8x... 13

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

MIKROKONTROLERY I MIKROPROCESORY

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

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

Mikrokontroler AVR ATmega32 - wykład 9

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

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

STM32 Butterfly. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Mikroprocesory i Mikrosterowniki

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

dokument DOK wersja 1.0

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

KAmduino UNO. Rev Źródło:

Moduł prototypowy X3-DIL64 z procesorem ATxmega128A3U-AU

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

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

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

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

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

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

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

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

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

MCAR Robot mobilny z procesorem AVR Atmega32

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

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

Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515

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

UNO R3 Starter Kit do nauki programowania mikroprocesorów AVR

Zestaw Startowy EvB. Więcej informacji na stronie:

Wyniki (prawie)końcowe - Elektroniczne warcaby

Mikroprocesory i Mikrosterowniki

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

Instytut Teleinformatyki

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

ZL29ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

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

Prosty system alarmowy z Arduino

Klawiatura matrycowa

Techniki mikroprocesorowe i systemy wbudowane

High Speed USB 2.0 Development Board

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Systemy wbudowane Mikrokontrolery

Niektóre piny mogą pełnić różne role, zależnie od aktualnej wartości sygnałów sterujących.

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

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

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

2. Code Composer Studio v4 zintegrowane środowisko projektowe... 41

Wejścia logiczne w regulatorach, sterownikach przemysłowych

WPROWADZENIE Mikrosterownik mikrokontrolery

Politechnika Białostocka

Płyta uruchomieniowa EBX51

Rafał Staszewski Maciej Trzebiński, Dominik Derendarz

Wyjścia analogowe w sterownikach, regulatorach

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

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

NX700 PLC

Programowanie mikrokontrolerów - laboratorium

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

Instrukcja dla: Icomsat v1.0 SIM900 GSM/GPRS shield for Arduino oraz dla GPRS Shield produkcji Seeedstudio.

PMiK Programowanie Mikrokontrolera 8051

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32

Wizualizacja stanu czujników robota mobilnego. Sprawozdanie z wykonania projektu.

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

Płytka uruchomieniowa XM64

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH. PROCESORY OSADZONE kod kursu: ETD 7211 SEMESTR ZIMOWY 2017

Kod produktu: MP01105

Szkoła programisty PLC : sterowniki przemysłowe / Gilewski Tomasz. Gliwice, cop Spis treści

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Programator AVR USBasp

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

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

Transkrypt:

Mikrokontroler Platforma Systemy Wbudowane IDE:, AVR (wersja 016-0) mgr inż. Marek Wilkus http://home.agh.edu.pl/~mwilkus Wydział Inżynierii Metali i Informatyki Przemysłowej AGH Kraków Mikrokontroler AVR Uno Środowisko Preprocesor kodu Terminal Uruchamianie 1 C: i inne urządzenia: 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. Rozszerzanie wejść/wyjść, Sterowanie urządzeniami, Multipleksowanie, Port szeregowy, Konwersja protokołów. 3 Oprogramowanie Mikrokontroler IDE: System mikroprocesorowy w postaci jednego układu scalonego. Zintegrowane: http://www.arduino.cc Fritzing: http://fritzing.org KiCAD: http://www.kicad-pcb.org WinAVR: http://winavr.sourceforge.net/ UnoArduSim: 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. https://www.sites.google.com/site/unoardusim/ DIY Layout Creator: http://diy-fever.com/software/diylc/ 4 5 6

1970... Uniwersalne bloki sterujące. Jeden moduł, cechy późniejszych mikrokontrolerów. 1971 Texas Instruments TMS1000 Pierwszy mikrokontroler Wewnętrzne źródło częstotliwości Programowanie: Mask-ROM Bardzo wysokie ceny 1976 Intel 8048 (MCS-48): Programowanie jak EPROM 1kB ROM 18B RAM Początek serii MCS-48 Programowanie: lub Mask-ROM. i późniejszych 51. 7 1975-85 PIC: Układ hybrydowy, Łatwe programowanie, także in-system, Programowanie w BASIC. Wciąż produkowane. Programowanie jak EPROM, 1993 Pamięć EEPROM. Różnorodność modeli. Programowanie: Assembler C Komercyjne narzędzia. Wciąż rozwijane. 9 Platforma programistyczna dla systemów wbudowanych. Open Hardware (z wyjątkami). Pojedynczy moduł. Mikrokontroler AVR. Wbudowany interfejs mikrokontroler-komputer. Programowanie: C. Środowisko: IDE. Duża pamięć programu (4-51kB) 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: 10 1995-97 Atmel AVR: 8 198x - BASIC Stamp miniaturyzacja, niska cena, łatwe zastosowania hobbystyczne. Assembler Assembler Basic (BASCOM) C Obecność platform np.. Otwarte narzędzia deweloperskie. Wciąż rozwijane. 11 1

Uno AVR Mikrokontroler: AVR ATMega38 16MHz. 3kB pamięci Flash na program (31kB dostępne - bootloader) kb RAM 1kB EEPROM GPIO: 14 pinów (6 PWM) 6 wejść analogowych Interfejs z komputerem: USB-RS3. Programowanie przez USB. Zasilanie: 5V, własna stabilizacja. 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, BOR, WDT, Możliwość pracy z wewnętrznym oscylatorem, Programowanie ISP (In-System Programming), 13 14 AVR: Co otrzymujemy? 1 6 6 AVR: Co możemy podłączyć? timery 8-bitowe timer 16-bitowy liczniki kanałów PWM kanałów ADC, 10-bitowe przerwania z GPIO 3 8-bitowe porty GPIO, 6 kanałów PWM, USART, także z własnym timingiem, Wejścia ADC, Wejścia zliczające, Wejścia komparatora analogowego, SPI, IC, JTAG debugowanie (opcjonalnie). 15 16 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: 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) Podręczniki: Niższa niż w przypadku czystego C wydajność i większy rozmiar kodu. Toleruje techniki marnujące pamięć operacyjną. 17 Monk S. - dla początkujących Podstawy i szkice Helion 014. Evans B. - Beginning programming - Apress 011. 18

Informacje Manual Co jest niezbędne? 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. 19 0 Projekt na 1. Jakie urządzenia mają być obsługiwane? Wejście Wyjście Debug. Czy urządzenia wymagają specjalnego sterowania? Jakiego? (: max 0mA/pin) 3. Projekt konstrukcji. 4. 5. 6. 7. Założenia programu, podstawowe parametry I/O, urządzeń, definicje I/O. Konstrukcja. Program weryfikujący konstrukcję. Właściwy program. Testowanie, poprawki. 1 IDE programowanie. C Co dzieje się gdy uruchamiamy kod? Sprawdzenie kodu Biblioteki Załadowanie do Monitor portu terminal Nowy plik Nie stosować danych binarnych!! Otwórz/zapisz Plik INO Preprocesor Plik.C AVR-GCC.c.o.elf hex Plik.HEX AVRDude Ustawienia platformy Informacje kompilatora USB lub RS3 Użyty wirtualny port szeregowy 3 4

Podstawowe techniki Podstawowe techniki Dyrektywa preprocesora #define: volatile nie buforuje zmiennej w rejestrach: volatile int stan; #define nazwa wartość Podczas kompilacji wystąpienia nazwy zostaną zastąpione wartością. Np. Zamieni występowanie ledpin na 13. W przypadku zmiany konstrukcji zmiana jednej linii kodu. Gdy zmienna ta zostanie zmieniona poza programem (np. w trakcje procedury przerwania) zostanie użyta jej aktualna wartość. 5 Podstawowe typy danych 6 Programowanie w pętli boolean wartość logiczna (prawda/fałsz), zajmuje 1 bajt danych. char, unsigned char = byte (0..55). int, unsigned int = word (0..^16-1). Zmiennoprzecinkowe: float (4B), double (8B). string jako tablica char'ów lub typ z biblioteki. Każdy program działający w systemie operacyjnym zaczyna się i kończy. Po zakończeniu programu następuje powrót do systemu operacyjnego. Mikrokontroler systemu operacyjnego nie posiada. Program wykonuje się w nieskończonej pętli. Można tworzyć pod-pętle wprowadzając różne tryby pracy. 7 Programowanie w pętli - przykład Zegar z budzikiem: Normalnie działanie: Wyświetlanie aktualnej godziny. Po naciśnięciu przycisku ustawienia godziny: Przyciskami H+/M+ można ustawić bieżącą godzinę. Zatwierdzamy dowolnym innym przyciskiem. Programowanie w pętli - przykład. : 56 Ust. godziny H+ Ust. alarmu M+ Zegar z budzikiem: Normalnie działanie: Wyświetlanie aktualnej godziny. Po naciśnięciu przycisku ustawienia godziny: Przyciskami H+/M+ można ustawić bieżącą godzinę. Zatwierdzamy dowolnym innym przyciskiem. Po naciśnięciu przycisku ustawienia alarmu Wyświetlenie godziny alarmu Przyciskami H+/M+ można ustawić godzinę alarmu. Zatwierdzamy dowolnym innym przyciskiem. 8 Po naciśnięciu przycisku ustawienia alarmu 9 Wyświetlenie godziny alarmu Przyciskami H+/M+ można ustawić godzinę alarmu. Zatwierdzamy dowolnym innym przyciskiem. Główna pętla: Odświeżanie aktualnej godziny, Czy wciśnięty przycisk ust. godziny? Odśwież aktualną godzinę Jeżeli wciśnięty H+ - zwiększ zmienną godzin, Jeżeli wciśnięty M+ zwiększ zmienną minut, Jeżeli wciśnięty inny przycisk opuść pętlę, Czy wciśnięty przycisk ust. alarmu? Odśwież godzinę alarmu, Jeżeli wciśnięty H+ - zwiększ godzinę alarmu, Jeżeli wciśnięty M+ zwiększ minutę alarmu, Jeżeli wciśnięty inny przycisk opuść pętlę, 30

Budowa programu #define ledpin Budowa programu 13 #define ledpin 13 void main() setup(); while(1) loop(); serialevent(); 31 3 LED Zmienne i funkcje Wymagany rezystor obniżający prąd. Vcc=5V Typowy LED 3mm: IF=0mA, VF=V unsigned int R= Vcc-VF IF (5-) / 0.0 = 150 Ω A w praktyce 10...470Ω 33 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. 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. 34 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. HIGH LOW ma wbudowane rezystory podciągające i nie ma potrzeby używania zewnętrznych! ma wbudowane rezystory podciągające i nie ma potrzeby używania zewnętrznych! 35 36

Zmienne i funkcje, wejścia Zmienne i funkcje, wejścia unsigned int k = 0; #define resetpin 11 if (!digitalread(resetpin)) delay(100); if (!digitalread(resetpin)) delay(100); unsigned int k = 0; #define resetpin 11 HIGH 37 38 Zmienne i funkcje, wejścia Funkcja delay i jej konsekwencje Istnieją dwie metody projektowania programu wykonywanego okresowo: Korzystając z delay w przyszłości trudny do rozbudowy, Korzystając z licznika wymaga odpowiedniego zaprojektowania (jako maszyna stanowa), lecz umożliwia łatwą rozbudowę, unsigned int k = 0; #define resetpin 11 if (!digitalread(resetpin)) delay(100); 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) unsigned long previousmillis=0; unsigned long currentmillis = millis(); LOW INPUT + digitalwrite(high) = INPUT_PULLUP 39 Przerwania #define resetpin volatile unsigned int void reset() Przerwania attachinterrupt(0,reset,low); #define resetpin volatile unsigned int void reset() 40 Wersja z millis kod otwarty na rozbudowę attachinterrupt(0,reset,low); 41 Przerwanie Pin 0 1 3 delay(); millis(); = const Serial.Read()...4!

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 = 111; unsigned int k = 111; 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 111 111 6F 11001111 O Koniec. Serial.println( /nkoniec. ); 43 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); 44 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(1) loop(); serialevent(); 45 Dziękuję. 47 46