Schemat blokowy architektury AVR

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

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

Klawiatura matrycowa

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

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

Wprowadzenie do języka Java

Instytut Teleinformatyki

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

Programowanie mikrokontrolerów AVR

ze względu na jego zaokrąglony kształt musimy go umieścić w innych bloczkach np. ze zmienną: lub jeśli chcemy sprawdzić jaki właśnie znak odczytujemy:

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

Instytut Teleinformatyki

ĆWICZENIE 5 WPŁYW KONWEKCJI NA ROZKŁAD TEMPERATURY W POMIESZCZENIU

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program

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

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)

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

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

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji?

PROGRAMOWALNE SYSTEMY MECHATRONIKI

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

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Podstawy i języki programowania

Techniki mikroprocesorowe i systemy wbudowane

Programowanie mikroprocesorów w systemie Arduino. Instrukcja do ćwiczenia laboratoryjnego

2 Przygotował: mgr inż. Maciej Lasota

ĆWICZENIE 5. TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM

MoboLab roboty i tablety w Twojej szkole Obszar II. Stwórz własnego robota Scenariusze lekcji i zajęć pozalekcyjnych

Programowanie mikrokontrolerów AVR z rodziny ATmega.

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

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

1 Podstawy c++ w pigułce.

Wprowadzenie do programowania urządzeń Arduino (Arduino dla Informatyków)

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

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Pomiar odległości z Arduino czujniki, schematy, przykładowe kody

Instrukcja do laboratorium Akademii ETI *

Tematem projektu jest oparty na Arduino zegar pokazujący godzinę oraz datę.

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

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Podstawy Programowania.

Instytut Teleinformatyki

Projekt procesora NIOSII w strukturze programowalnego układu logicznego CYCLONEII EP2C35F672C6 podłączenie i obsługa wyświetlacza LCD.

MultiTool instrukcja użytkownika 2010 SFAR

Szkolenia specjalistyczne

1 Podstawy c++ w pigułce.

Prosty system alarmowy z Arduino

Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 1. Podstawy. Wprowadzenie do programowania w języku C. Katedra Metrologii AGH

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

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

Funkcje standardowej biblioteki wejść-wyjść do wyświetlania i pobierania danych

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Kompilator języka C na procesor 8051 RC51 implementacja

Pytania sprawdzające wiedzę z programowania C++

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Mikrokontroler ATmega32. Język symboliczny

Podstawy Programowania Podstawowa składnia języka C++

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Programator procesorów rodziny AVR AVR-T910

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

Nazwa implementacji: Zróbmy grę - Tetris. Autor: Łukasz Ciężki

Nazwa implementacji: Pamięć i zręczność - zapamiętaj kolejność. Autor: Krzysztof Bytow

Politechnika Śląska w Gliwicach

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

MSP&IRED&Energia /6. Rys. xx Rozmieszczenie wyprowadzeń procesora [xx]

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

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

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

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Komunikacja w mikrokontrolerach. Podstawy programowania. Wydział Elektroniki Mikrosystemów i Fotoniki dr inż. Piotr Markowski

Zmienne, stałe i operatory

Immobilizer samochodowy otwierający dostęp poprzez kod czteroznakowy.

Podstawy Programowania

Podstawy programowania C. dr. Krystyna Łapin

Opis układów wykorzystanych w aplikacji

Server setup. #include <SPI.h> #include <Ethernet.h> boolean incoming = 0;

tablica: dane_liczbowe

Urządzenia zewnętrzne

Akademia Górniczo- Hutmicza w Krakowie Katedra Elektroniki WIET

Mikrokontrolery AVR Wprowadzenie

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Programowanie strukturalne i obiektowe

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Powtórka algorytmów. Wprowadzenie do języka Java.

Instytut Teleinformatyki

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

Instrukcja obsługi. PROGRAMATOR dualavr. redflu Tarnów

Pilot RF 4-kanałowy + odbiornik XY-DJM-5V umożliwia zdalne sterowanie do czterech urządzeń. Nadajnik pilot MX804. Odbiornik XY-DJM.

Dlaczego stosujemy edytory tekstu?

Podstawy programowania w języku C

Przyrząd do grania bluesa Projekt zaliczeniowy z przedmiotu Programowanie Mikrokontrolerów

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

Microsoft IT Academy kurs programowania

Zasady programowania Dokumentacja

DYNAMICZNE PRZYDZIELANIE PAMIECI

Transkrypt:

Schemat blokowy architektury AVR Rejestry procesora AVR dostępne programowo Rejestry procesora AVR związane z pobraniem i wykonaniem rozkazu

Schemat blokowy procesora ATMega 2560

ATMEL ATMEGA328P MEMORY MODEL

Rozmieszczenie rejestrów ogólnego przeznaczenia Budowa logiczna rejestrów indeksowych X, Y, Z

AVR Studio

Przykład programu zapalającego i wyłączającego diodę LED napisanego w assemblerze procesora ATMega.include "m32def.inc" // mruganie diody.cseg.org 0 cli ;blokada przerwań ldi R16, HIGH(RAMEND) out SPH, R16 ldi R16, LOW(RAMEND) out SPL, R16 ;ustawienie stosu sbi DDRA, 7 sbi DDRA, 6 ;kierunek transmisji cbi PORTA, 7 petla: sbi PORTA, 6 rcall czekaj250ms rcall czekaj250ms rcall czekaj250ms rcall czekaj250ms cbi PORTA,6 rcall czekaj250ms rcall czekaj250ms rcall czekaj250ms rcall czekaj250ms rjmp petla czekaj250ms: ldi R20, 0 czekaj250ms_0: ldi R21, 0 czekaj250ms_1: inc R21 cpi R21,250 brlo czekaj250ms_1 inc R20 cpi R20, 249 brlo czekaj250ms_0 ret

Przykład programu zapalającego i wyłączającego diodę LED napisanego dla procesora ATMega w języku C #include <avr/io.h> #define F_CPU 16000000 #include <util/delay.h> int main() DDRA = 0b11000000; for (;;) PORTA = 0b01000000; _delay_ms(1000); PORTA = 1; _delay_ms(1000); Przykład programu zapalającego i wyłączającego diodę LED napisanego dla środowiska Arduino w języku C void setup() pinmode(13, OUTPUT); void loop() digitalwrite(13, HIGH); delay(1000); digitalwrite(13, LOW); delay(1000);

Arduino toolchain napisanie kodu w IDE kompilacja kodu przyłączenie USB do płytki Arduino załadowanie kodu do pamięci wykonywanie kodu Programowanie Arduino

Na pasku narzędziowym znajduje się sześć ikon: Weryfikuj (symbol sprawdzania): pozwala sprawdzić poprawność kodu pod kątem obecności błędów składniowych Załaduj (strzałka w prawo): kompiluje i ładuje kod do pamięci program Arduino Nowy (czysta strona): tworzy nowy, czysty szkic Otwórz (strzałka w górę): otwiera listę szkiców znajdujących się w szkicowniku Zapisz (strzałka w dół): zapisuje nasz szkic w szkicowniku Monitor portu szeregowego (małe szkło powiększające z prawej strony paska): umożliwia monitorowanie portu szeregowego

Menu Narzędzia oferuje następujące możliwości: Automatyczne Formatowanie: umożliwia formatowanie tekstu program z wykorzystaniem właściwych wcięć standardowych Archiwizuj Szkic: kompresuje i archiwizuje szkic jako plik typu.zip Napraw kodowanie i załaduj ponownie: pozwala odrzucić wprowadzone zmiany i ponownie załadować szkic Monitor portu szeregowego: otwiera okno monitora portu szeregowego I pozwala na komunikację pomiędzy komputerem a modułem Arduino Płytka: wyświetla wyświetlić listę obsługiwanych płyt Arduino i wybrać model dla naszego szkicu Port Szeregowy : pozwala wyświetlić listę urządzeń podłączonych do portów szeregowych komputera (rzeczywistych i wirtualnych) Programator: pozwala wybrać sprzętowy programator podczas programowania Arduino lub procesora bez połączenia szeregowego (np. przy wypalaniu bootloadera w nowym procesorze) Wypal Bootloader

Menu Plik

typ zajętość pamięci[b] boolean 1 Typy zmiennych zakres wartości true lub false (1 lub 0) uwagi reprezentuje wartości logiczne char 1-128 do +127 reprezentuje kody znaków ASCII byte 1 0 do 255 wartości całkowite bez znaku int 2-32768 do +32767 unsigned int 2 0 do 65536 long 4 unsigned long 4 float 4-2 147 483 648 do +2 147 483 647 0 do 4 294 967 295-3,4028235E+38 +3,4028235E+38 double 4 jak float liczby całkowite ze znakiem 16-bitowe liczby całkowite bez znaku 16-bitowe liczby całkowite ze znakiem 32-bitowe liczby całkowite bez znaku 32-bitowe liczby zmiennoprzecinkowe pojedynczej precyzji zwykle 8B lub więcej, w Arduino jak float

Przykłady funkcji dostępnych z biblioteki standardowej Arduino

Budowa szkicu deklaracja zmiennych globalnych kod, który jest wykonywany tylko raz, np. definicja końcówek, inicjalizacja portu szeregowego kod, który jest wykonywany cyklicznie Przykładowe programy Hello World void setup() Serial.begin(9600); // uruchamia port szeregowy 9600 bps void loop() Serial.print("Hello World!\n\r"); delay(2000); // oczekiwanie 2 s Hello World with a LED int ledpin = 13; // dioda LED podłączona do pinu 13 void setup() pinmode(ledpin, OUTPUT); // ustawienie końcówki jako wyjścia Serial.begin(9600); // uruchamia port szeregowy 9600 bps void loop() Serial.print("Hello World!\n\r"); digitalwrite(ledpin, HIGH); // zapala diodę LED delay(1000); digitalwrite(ledpin, LOW); // gasi diodę LED delay(1000);

Sterowanie diody LED przez port szeregowy Naciśnięcie każdego klawisza związane jest z wygenerowaniem kodu ASCII, który może być przesłany przez port szeregowy do Arduino i wykorzystany do jego sterowania. Znak a będzie włączał i wyłączał diodę LED int ledpin = 13; // dioda LED podłączona do pinu 13 int inbyte = 0; void setup() pinmode(ledpin, OUTPUT); // ustawienie końcówki jako wyjścia Serial.begin(9600); // uruchamia port szeregowy 9600 bps void loop() while (Serial.available()>0) inbyte = Serial.read(); Serial.println(inByte); // wyświetla zawartość inbyte if (inbyte==97) // lub a digitalwrite(ledpin, HIGH); // zapala diodę LED else digitalwrite(ledpin, LOW); // gasi diodę LED delay(1000); // oczekiwanie 1 s Zadanie Utworzyć układ z trzema diodami LED podłączonymi do różnych wyjść Arduino i napisać program ich sterowania przez port szeregowy: jeśli naciśnięto 1 należy włączyć jedną diodę jeśli naciśnięto 2 należy włączyć dwie diody jeśli naciśnięto 3 należy włączyć trzy diody

Funkcja Random() Funkcja ta generuje liczby pseudo-losowe. Składnia: random(max) random(min, max) Przykładowy kod: void setup() Serial.begin(9600); // uruchamia port szeregowy 9600 bps randomseed(analogread(a0)); // inicjalizacja generatora void loop() int randnumber; // wyświetlanie liczb losowych z przedziału 0 do 299 randnumber = random(300); Serial.println(randNumber); // wyświetlanie liczb losowych z przedziału 10 do 19 randnumber = random(10, 20); Serial.println(randNumber); delay(1000); Zadanie Utworzyć układ z trzema diodami LED podłączonymi do różnych wyjść Arduino i napisać program ich sterowania przez port szeregowy: jeśli naciśnięto 1 należy włączyć jedną losowo wybraną diodę jeśli naciśnięto 2 należy włączyć dwie losowo wybrane diody jeśli naciśnięto 3 należy włączyć trzy diody