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



Podobne dokumenty
Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Instytut Teleinformatyki

Mikrokontrolery AVR Wprowadzenie

Instytut Teleinformatyki

KOMUNIKACJA Z OTOCZENIEM MIKROKONTROLERA

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

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

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

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

Laboratorium Systemów wbudowanych Wyższa Szkoła Zarządzania i Bankowości, Informatyka studia inżynierskie

Programowanie mikrokontrolerów AVR z rodziny ATmega.

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

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

KAŻDY Z 8-MIO BITOWYCH PORTÓW MIKROKONTROLERÓW RODZINY 51 MA JEDYNIE REJESTR PORTU: P0, P1, P2, P3, PEŁNIĄ ONE ROLĘ REJESTRÓW DANYCH WE/WY.

Mikroprocesory i Mikrosterowniki

Zestaw Edukacyjny Atmega-8 (AJAWe-0711) Porty wejścia-wyjścia.

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

Mikroprocesory i Mikrosterowniki

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Struktura i działanie jednostki centralnej

Programowanie mikrokontrolerów AVR

PROGRAMOWALNE SYSTEMY MECHATRONIKI

Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach

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

Współpraca mikrokontrolera z wyświetlaczami: ciekłokrystalicznym i siedmiosegmentowym

1. Operacje logiczne A B A OR B

GND(VSS) i VCC - masa i zasilanie. V0 - regulacja kontrastu

Mikroprocesory i mikrosterowniki

Mikrokontrolery w mechatronice. Wykład 4

Expandery wejść MCP23S17 oraz MCP23017

Techniki mikroprocesorowe i systemy wbudowane

XMEGA. Warsztaty CHIP Rok akademicki 2014/2015

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

Instytut Teleinformatyki

Laboratorium mikrokontrolerów

Mikrokontroler ATmega32. System przerwań Porty wejścia-wyjścia Układy czasowo-licznikowe

Oprogramowanie klawiatury matrycowej i alfanumerycznego wyświetlacza LCD

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

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Instytut Teleinformatyki

Mikrokontrolery AVR techniczne aspekty programowania

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

Przykładowe pytania DSP 1

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

2 Przygotował: mgr inż. Maciej Lasota

1 Podstawy c++ w pigułce.

( wykł. dr Marek Piasecki )

Schemat blokowy architektury AVR

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

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

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

Zewnętrzne układy peryferyjne cz. 1 Wykład 12

Podstawy programowania w języku C

while(wyrażenie) instrukcja

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Mikrooperacje. Mikrooperacje arytmetyczne

AVR - Chapter 5. 류대우

Podstawy programowania C. dr. Krystyna Łapin

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Wskaźniki. Informatyka

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Instytut Teleinformatyki

E-TRONIX Sterownik Uniwersalny SU 1.2

Technika Mikroprocesorowa

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

Architektura Systemów Komputerowych, Wydział Informatyki, ZUT

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

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

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

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

Podstawy programowania w języku C i C++

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

Sterownik diod RGB. Robert Budzioski

Komunikacja w mikrokontrolerach Laboratorium

Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

Struktury specjalizowane wykorzystywane w mikrokontrolerach

Języki i paradygmaty programowania

Porty GPIO w mikrokontrolerach STM32F3

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Architektura komputerów

Wstęp Architektura... 13

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

Sterownik silnika krokowego. Aleksander Koreń

Zestaw Startowy EvB. Więcej informacji na stronie:

Sterowniki programowalne

2.1 Przesył danych między procesorem a tabelą zmiennych

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

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

Programowanie w elektronice: Podstawy C

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

Podstawy programowania w BASCOM BASIC AVR

Klawiatura matrycowa

Moduł prototypowy X3-DIL64 z procesorem ATxmega128A3U-AU

Tranzystor JFET i MOSFET zas. działania

Magistrala I 2 C. Podstawy systemów mikroprocesorowych. Wykład nr 5 Interfejsy szeregowe c.d.

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Transkrypt:

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

Metody programowania Assembler Język C BASCOM

Assembler kod maszynowy Zalety: Najbardziej efektywny Intencje programisty są realizowane dokładnie Najszybszy i najmniejszy Wady: Bardzo długi i trudny czas tworzenia Nieczytelny

Assembler kod maszynowy Zalety: Najbardziej efektywny Intencje programisty są realizowane dokładnie Najszybszy i najmniejszy Wady: Bardzo długi i trudny czas tworzenia Nieczytelny

BASCOM AVR Zalety: Prosty (?) dla początkującego użytkownika Wady: Bardzo nie optymalny (wymaga dużo pamięci FLASH i RAM) Najdłuższy czas wykonywania Niestandardowy (wyjątkowy dla AVR) Programista ma niewielki wpływ na to jak kompilator wykona polecenie.

Język C Zalety: Standard przemysłowy / dużo bibliotek Optymalny stosunek szybkość tworzenia do wykonywania kodu Pozwala pracować na danych abstrakcyjnych Wady Programista nie ma pełnego wpływu na to jak kompilator zrealizuje / zoptymalizuje polecenie (czasami powoduje błędy)

Operacje bitowe na rejestrach i danych

Operacje bitowe Chcąc wpisać jedną jedynkę na jednym z pól rejestru (bądź też dowolnej danej) musimy się posłużyć operacjami bitowymi (eng. Bitwise), nie ma gotowego polecenia wpisz na pozycję 4tą jedynkę, ale jest na to bardzo prosty sposób

Operatory logiczne W warunkach stosuje się podwójne operatory if(a && b) lub if(a b) W równaniach stosuje się pojedyncze operatory: X = (a b)&c;

Logiczne lub (wstawianie 1 ) Dana wejściowa 0 0 1 0 1 1 1 0 ( lub) maska 0 1 0 0 0 0 0 0 Dana wyjściowa 0 1 1 0 1 1 1 0 Procesor przeprowadza operację lub logicznego dla każdego bitu. X Y OUT 0 0 0 0 1 1 1 0 1 1 1 1 Lub w C zapisujemy jako Przykładowo:

Logiczne lub (wstawianie 1 ) Dana wejściowa 0 0 1 0 1 1 1 0 ( lub) maska 0 1 0 0 0 0 0 0 Dana wyjściowa 0 1 1 0 1 1 1 0 Procesor przeprowadza operację lub logicznego dla każdego bitu. X Y OUT 0 0 0 0 1 1 1 0 1 1 1 1 Lub w C zapisujemy jako Przykładowo: 0 0 = 0

Logiczne lub (wstawianie 1 ) Dana wejściowa 0 0 1 0 1 1 1 0 ( lub) maska 0 1 0 0 0 0 0 0 Dana wyjściowa 0 1 1 0 1 1 1 0 Procesor przeprowadza operację lub logicznego dla każdego bitu. X Y OUT 0 0 0 0 1 1 1 0 1 1 1 1 Lub w C zapisujemy jako Przykładowo: 0 1 = 1

Logiczne lub (wstawianie 1 ) Dana wejściowa 0 0 1 0 1 1 1 0 ( lub) maska 0 1 0 0 0 0 0 0 Dana wyjściowa 0 1 1 0 1 1 1 0 Procesor przeprowadza operację lub logicznego dla każdego bitu. X Y OUT 0 0 0 0 1 1 1 0 1 1 1 1 Lub w C zapisujemy jako Przykładowo: 1 0 = 1

Logiczne lub (wstawianie 1 ) Dana wejściowa 0 0 1 0 1 1 1 0 ( lub) maska 0 1 0 0 0 0 0 0 Dana wyjściowa 0 1 1 0 1 1 1 0 Procesor przeprowadza operację lub logicznego dla każdego bitu. X Y OUT 0 0 0 0 1 1 1 0 1 1 1 1 Lub w C zapisujemy jako Przykładowo: 0 0 = 0 Itd

Logiczne lub (wstawianie 1 ) Dana wejściowa 0 0 1 0 1 1 1 0 ( lub) maska 0 1 0 0 0 0 0 0 Dana wyjściowa 0 1 1 0 1 1 1 0 Procesor przeprowadza operację lub logicznego dla każdego bitu. X Y OUT 0 0 0 0 1 1 1 0 1 1 1 1 Lub w C zapisujemy jako Przykładowo: 0 0 = 0 Itd

Logiczne i (wstawianie 0 ) Dana wejściowa 0 0 1 0 1 1 1 0 (&& and) maska 0 1 0 0 1 1 0 0 Dana wyjściowa 0 0 0 0 1 1 0 0 Procesor przeprowadza operację i logicznego dla każdego bitu. X Y OUT 0 0 0 0 1 0 1 0 0 1 1 1 i w C zapisujemy jako & Przykładowo: 0 & 0 = 0

Logiczne i (wstawianie 0 ) Dana wejściowa 0 0 1 0 1 1 1 0 (&& and) maska 0 1 0 0 1 1 0 0 Dana wyjściowa 0 0 0 0 1 1 0 0 Procesor przeprowadza operację i logicznego dla każdego bitu. X Y OUT 0 0 0 0 1 0 1 0 0 1 1 1 i w C zapisujemy jako & Przykładowo: 0 & 1 = 0

Logiczne i (wstawianie 0 ) Dana wejściowa 0 0 1 0 1 1 1 0 (&& and) maska 0 1 0 0 1 1 0 0 Dana wyjściowa 0 0 0 0 1 1 0 0 Procesor przeprowadza operację i logicznego dla każdego bitu. X Y OUT 0 0 0 0 1 0 1 0 0 1 1 1 i w C zapisujemy jako & Przykładowo: 1 & 0 = 0

Logiczne i (wstawianie 0 ) Dana wejściowa 0 0 1 0 1 1 1 0 (&& and) maska 0 1 0 0 1 1 0 0 Dana wyjściowa 0 0 0 0 1 1 0 0 Procesor przeprowadza operację i logicznego dla każdego bitu. X Y OUT 0 0 0 0 1 0 1 0 0 1 1 1 i w C zapisujemy jako & Przykładowo: 0 & 0 = 0

Logiczne i (wstawianie 0 ) Dana wejściowa 0 0 1 0 1 1 1 0 (&& and) maska 0 1 0 0 1 1 0 0 Dana wyjściowa 0 0 0 0 1 1 0 0 Procesor przeprowadza operację i logicznego dla każdego bitu. X Y OUT 0 0 0 0 1 0 1 0 0 1 1 1 i w C zapisujemy jako & Przykładowo: 1 & 1 = 1

Logiczne i (wstawianie 0 ) Dana wejściowa 0 0 1 0 1 1 1 0 (&& and) maska 0 1 0 0 1 1 0 0 Dana wyjściowa 0 0 0 0 1 1 0 0 Procesor przeprowadza operację i logicznego dla każdego bitu. X Y OUT 0 0 0 0 1 0 1 0 0 1 1 1 i w C zapisujemy jako & Przykładowo: 1 & 0 = 0 Itd

Logiczne XOR Dana wejściowa 0 0 1 0 1 1 1 0 (^ XOR) maska 0 0 0 0 0 1 0 0 Dana wyjściowa 0 0 1 0 1 0 1 0 (^ XOR) maska 0 0 0 0 0 1 0 0 Dana wyjściowa 0 0 1 0 1 1 1 0 X Y OUT 0 0 0 0 1 1 1 0 1 1 1 0 Procesor przeprowadza operację wyłącznego lub (exclusice or), daje ona 1 tylko gdy stany są różne. XOR w C zapisujemy jako ^

Logiczne przesunięcie w lewo Dana wejściowa 0 0 1 0 1 1 1 0 Przesunięcie (shift) 3 Dana wyjściowa 0 1 1 1 0 0 0 0 Procesor przeprowadza przesunięcia bitowego w lewo będącego mnożeniem przez 2. Przesuwa Ona wartość w lewo. W C zapisuje się tę operację jako << Przykładowo powyższe przesunięcie to: Wyjście=(dana<<3) Analogicznie działa to w drugą stronę dla przesunięcia w prawo (dzielenia przez dwa).

Ustawianie bitów w języku C Uint8_t set_bit(uint8_t dana, uint8_t bit) { uint8_t out; out = (dana (1<<bit)); return (out); }

Zmiana stanu bitów w języku C Uint8_t tog_bit(uint8_t dana, uint8_t bit) { uint8_t out; out = (dana^(1<<bit)); return (out); }

GPIO General Purpouse Input Output

Rejestry sterujące Jak każdym peryferium mikrokontrolera tak i modułem wyjść/wejść steruje się za pomocą rejestrów. W układach z rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie X oznacza numer portu np. PORTA lub PORTC).

Rejestry sterujące Każdy bit odpowiada odpowiedniemu wyprowadzeniu (nóżce) układu.

Rejestry sterujące Każdy bit odpowiada odpowiedniemu wyprowadzeniu (nóżce) układu.

Rejestry sterujące DDRx Data Direction Register Steruje kierunkiem przepływu danych (wyjście/wejście). W stanie wejściowym ustawia pin w stan wysokiej impedancji tak aby jego sygnał był słaby. PORTx Ustawia wyjścia portu (wysoki / niski) PINx Czyta stan z portu (wysoki / niski)

Rejestry sterujące Przykłady konfiguracji: DDRB =0x01=0b00000001 PORTB=0x03=0b00000011 //pierwszy pin służy jaki silne wyjście, drugi jako wejście ze słabym podciągnięciem do masy. Obie końcówki łączymy z masą przez rezystor 1k Ohm. PINB=0x01=0b00000001

Ustawienie wyjść i wejść układu Void main() { //chcemy aby piny 5 6 7 portu E były wejściami, //ale 0 1 2 był wyjściami (3 i 4 bez znaczenia). //5 Ma być ze słabym podciągnięciem do 5V, a 6 i //7 do masy. //Piny 0 1 i 2 mają mieć wartość 101. DDRE= 0x03; PORTE =((1<<0) (1<<2) (1<<5)); while(1); Return (0); }

Czytanie wyjść i wejść układu Uint8_t sprawdz_portb() { //chcemy sprawdzić stan wejść //mikrokontrolera, nie ważne jak //ustawione są dane wyprowadzenia //(wejścia czy wyjścia) i tak możemy je //sprawdzić. W danym momencie 1 jest na //5 i 6 nóżce. char out = PINB; Return(out); }

Przykładowy kod migający: #include <avr/io.h> #include <util/delay.h> #define F_CPU 16000000 int main(void) { } DDRD=0x00; PORTD=0xFF; DDRB=0xFF; PORTB=0xFF; while(1) { _delay_ms(1000); PORTB^=0xFF; } return;