Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Podobne dokumenty
Programowanie mikrokontrolerów AVR z rodziny ATmega.

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

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

DOKUMENTACJA. dot. Budowy i przebiegu konstrukcji linefollower-a. Data: MCHT2 Jakub Tomczyk Łukasz Pawelec Mateusz Wróbel

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

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Mikrokontrolery AVR Wprowadzenie

Instytut Teleinformatyki

Programowanie mikrokontrolerów. 8 listopada 2007

Instytut Teleinformatyki

Uproszczony schemat blokowy konwertera analogowo-cyfrowego przedstawiony został na rys.1.

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Programowanie strukturalne i obiektowe

Podstawy programowania w języku C

PRZETWORNIK ADC w mikrokontrolerach Atmega16-32

Obsługa przetwornika ADC na mikrokontrolerze ATmega8 CEZARY KLIMASZ OBSŁUGA PRZETWORNIKA ADC NA MIKROKONTROLERZE ATMEGA8

1 Podstawy c++ w pigułce.

Programowanie mikrokontrolerów AVR

Przetworniki analogowo-cyfrowe (A/C)

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Podstawy programowania w języku C i C++

2 Przygotował: mgr inż. Maciej Lasota

Wbudowane układy peryferyjne cz. 3 Wykład 9

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

Szkolenia specjalistyczne

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

KOMUNIKACJA Z OTOCZENIEM MIKROKONTROLERA

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

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

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

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

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory

Podstawy Programowania C++

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

MCAR Robot mobilny z procesorem AVR Atmega32

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Język C - podstawowe informacje

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

1 Podstawy c++ w pigułce.

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

Mikroprocesory i Mikrosterowniki Liczniki Timer Counter T/C0, T/C1, T/C2

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

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

Mikrokontroler ATmega32. Język symboliczny

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

Płyta ewaluacyjna z mikrokontrolerem Atmega32. Autor Dariusz Wika

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

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Podstawy programowania. Wykład Co jeszcze... Przypomnienia, uzupełnienia. Krzysztof Banaś Podstawy programowania 1

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

Autonomiczny robot mobilny w kategorii linefollower MORPROF

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

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

Instrukcje sterujące. Programowanie Proceduralne 1

Podstawy programowania C. dr. Krystyna Łapin

( wykł. dr Marek Piasecki )

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

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

Język C zajęcia nr 11. Funkcje

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

Podstawy i języki programowania

Język ludzki kod maszynowy

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

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

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

Programowanie mikrokontrolerów AVR z rodziny ATmega.

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

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

Aoi Ryuu. v2.0 moduł z mikroprocesorem Atmega169 dla makiety dydaktycznej Akai Kaba

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

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

Politechnika Białostocka

Mikroprocesory i Mikrosterowniki Analog-Digital Converter Konwerter Analogowo-Cyfrowy

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

C++ wprowadzanie zmiennych

Komunikacja w mikrokontrolerach Laboratorium

Komunikacja w mikrokontrolerach Laboratorium

Programowanie w elektronice: Podstawy C

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

Programowanie komputerowe. Zajęcia 1

Podstawy programowania skrót z wykładów:

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

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

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

ROZDZIAŁ 2. Operatory

Języki i metodyka programowania. Wprowadzenie do języka C

Pomiar przyspieszeń wzdłuŝwych i poprzeczwych.

Schemat blokowy architektury AVR

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

while(wyrażenie) instrukcja

Struktura pliku projektu Console Application

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

SYSTEM PRZERWAŃ ATmega 32

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

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

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

STEROWNIKI ROBOTÓW ( PROJEKT ) ROBOT KLASY LINEFOLLOWER

Program w C. wer. 12 z drobnymi modyfikacjami! Wojciech Myszka :59:

Transkrypt:

Poradnik programowania procesorów AVR na przykładzie ATMEGA8 Wersja 1.0 Tomasz Pachołek 2017-13-03 Opracowanie zawiera opis podstawowych procedur, funkcji, operatorów w języku C dla mikrokontrolerów AVR oraz opis podstawowych działań na pinach i portach, potrzebnych do zaprogramowania prostych układów opartych o procesor ATMEGA8. Autor nie ponosi odpowiedzialności za nieprawidłowe działanie kodu lub uszkodzenie sprzętu.

Spis treści 1. TYPY...3 2. OPERATORY...3 3. Tablice prawdy:...4 4. Tablice przesunięć bitowych:...4 5. INSTRUKCJE:...5 6. PROGRAMOWANIE AVR ATMEGA8...6 7. OPIS WYPROWADZEŃ PINÓW ATMEGA 8...8 8. OPIS WYPROWADZEŃ PINÓW - KANDA AVR... 10 9. OPIS WYPROWADZEŃ PINÓW LCD HD44780... 10 LITERATURA... 11 Strona 2 z 11

1. TYPY TYPY ZMIENNYCH i STAŁYCH bool 0 lub 1 Logiczny int Np. 15 Całkowita float Np. 3.14 Zmiennoprzecinkowa double Zmiennoprzecinkowa podwójnej precyzji(więcej miejsc po przecinku) char *, ;, a Znakowy(znaki z tablicy ASCII) uint8_t Int: 0, 1,2,3 8 bitowy int(zajmuje mniej miejsca w pamięci MODYFIKATORY const const int c Stałe signed signed char c Liczba ze znakiem (-127 do 127 dla char) unsigned unsigned char c Liczba bez znaku (0 do 255 dla char) volatile Volatile float c Ulotny (stosowane dla przycisków, zmienna nie jest optymalizowana przez kompilator register register int c Umieszczenie w rejestrze szybkiego dostępu extern Ex tern wyswietl() poinformowanie kompilatora, by nie szukał danej zmiennej/funkcji globalnej w aktualnym pliku 2. OPERATORY ARYTMETYCZNE = a = 5 Przypisanie * a * 2 Mnożenie / a / 2 Dzielenie całkowite (5/2=2) % a % 2 Reszta z dzielenia całkowitego (5%2=1) += a += 5 Skrócony zapis a = a + 5 -= a -= 5 Skrócony zapis a = a - 5 RZUTOWANIE int i = 42.7; Konwersja z double na int float f = i; Konwersja z int do float BINARNE ~ Negacja(NOT) & Koniunkcja(AND) Alternatywa(OR) ^ Alternatywa rozłączna(xor) PRZESUNIĘCIA BITOWE << a<<1 Przesunięcie bitowe w lewo >> a>>1 Przesunięcie bitowe w prawo PORÓWNIANIA == Równe!= Różne Strona 3 z 11

< Mniejsze > Większe <= Mniejsze lub równe >= Większe lub równe LOGICZNE! Negacja && Koniunkcja alternatywa &= a &= 3 a=a&3 = a = 3 a=a 3 ^= a ^= 3 a=a^3 ^działają do nich tablice prawdy^ 3. Tablice prawdy: ~ a Wynik 0 1 1 0 & a b Wynik 0 0 0 0 1 0 1 0 0 1 1 1 a b Wynik 0 0 0 0 1 1 1 0 1 1 1 1 ^ a b Wynik 0 0 0 0 1 1 1 0 1 1 1 0 Przykład: dla a= 0 i b = 1 operacja: a & b =0 4. Tablice przesunięć bitowych: a a << 1 a<<2 0001 0010 0100 0011 0110 1100 0101 1010 0100 1000 0000 0000 1111 1110 1100 1001 0010 0100 Strona 4 z 11

a a>>1 a>>2 0001 0000 0000 0011 0001 0000 0101 0010 0001 1000 1100 1110 1111 1111 1111 1001 1100 1110 5. INSTRUKCJE: if if (wyrażenie) { /* blok wykonany, jeśli wyrażenie jest prawdziwe */ /* dalsze instrukcje */ If else if (wyrażenie) { /* blok wykonany, jeśli wyrażenie jest prawdziwe */ else { /* blok wykonany, jeśli wyrażenie jest nieprawdziwe */ /* dalsze instrukcje */ switch switch (wyrażenie) { case wartość1: /* instrukcje, jeśli wyrażenie == wartość1 */ break; case wartość2: /* instrukcje, jeśli wyrażenie == wartość2 */ break; /*... */ default: /* instrukcje, jeśli żaden z wcześniejszych warunków nie został spełniony */ break; While while (warunek) { /* instrukcje do wykonania w pętli */ /* dalsze instrukcje */ for for (wyrażenie1; wyrażenie2; wyrażenie3) { /* instrukcje do wykonania w pętli */ /* dalsze instrukcje */ Warunkowa (na tak) Warunkowa(na tak i na nie) Wielokrotnego wyboru Pętla wykonuje się tak długo, jak warunek jest PRAWDZIWY Pętla wykonuje się tak długo, jak warunek jest PRAWDZIWY Wyrażenie 1- ustawienie zmiennej sterującej pętlą(i=1) Wyrażenie 2 sprawdzany warunek, jeżeli prawdziwy Strona 5 z 11

do.. while do { /* instrukcje do wykonania w pętli */ while (warunek); /* dalsze instrukcje */ break pętla się wykona Wyrażenie 3 wyrażenie wykonywane co każde wykonanie pętli(i++) Pętla, której kod wykona się zawsze przynajmniej jeden raz. Wykonuje się tak długo, jak warunek jest PRAWDZIWY Opuszczenie pętli w dowolnym momencie programu #include #include <avr/io.h> Dołączanie bibliotek/plików #define #define LED_PIN (1<<PC7) Przypisanie nazwy do instrukcji/portu/pinu 6. PROGRAMOWANIE AVR ATMEGA8 PORTY I PINY DDRx PORTx PINx Rejestr kierunku pinów/portu Rejestr WYJŚCIOWY Rejestr WEJŚCIOWY DDRx = (1<<PD1) DDR=0xFF PORTD = (1<<PD1) PORTD =0xFF PORTD &= ~(1<<PD2) Ustalenie kierunku WYJŚCIOWEGO portu Ustalenie kierunku WYJŚCIOWEGO portu na wszystkich pinach portu Stan WYSOKI na wyjście PD1 Stan WYSOKI na wszystkich wyjściach portu Stan NISKI na wyjście PD2 Zamiast x podajemy A,B,C,D DDRx &= ~(1<<PD0) PORTD =(1<<PD0) If(!(PIND & (1<<PD0)) LED_ON else LED_OFF; Ustalenie kierunku WEJŚCIOWEGO portu Podciągnięcie programowe wewnętrznym rezystorem do VCC Jeżeli pin zwarty do masy wykonaj LED_ON, jeżeli nie zwarty wykonaj LED_OFF Zamiast PD0 podajemy numer pinu Po włączeniu programowego podciągnięcia do VCC pin sterowany jest zwarciem do masy DDRB = (1<<PB1); TCCR1A = (1<<WGM10); TCCR1B = (1<<WGM12); TCCR1A = (1<<COM1A1) (1<<COM1B1) ; TCCR1B = (1<<CS10) (1<<CS11); //64 TCCR1B = (1<<CS11); //8 TCCR1B = (1<<CS10); //1 PWM Fast PWM 8bit - tryb PWM wybrany z noty katalogowej atmega8 Tryb wyjścia na początku wystawiany jest stan wysoki, a po odliczeniu zadanej wartości licznika sterującego PWM następuje stan niski. Preskaler =64 Przy taktowaniu atmegi 1MHz f pwm =61Hz = 8 Przy taktowaniu atmegi 1MHz f pwm =488Hz Strona 6 z 11

OCR1A = 0; ADCSRA = (1<<ADEN) (1<<ADPS0) (1<<ADPS1) (1<<ADPS2); ADMUX = (1<<REFS1) (1<<REFS0) (1<<MUX2) (1<<MUX0); DDRC &=~ (1<<PC5); ADCSRA = (1<<ADSC); while(adcsra & (1<<ADSC)); wynik_float = (ADC * Vref) /1024; = 1 Przy taktowaniu atmegi 1MHz f pwm =3,9kHz Wzór: f=f taktowania /Prescaler/256 256 to pojemność rejestru, zależy od ilości bitów : 2 8 =256 Zmienna sterująca licznikiem PWM przy 8bitach maksymalna wartość to 255 sygnał będzie wypełniony maksymalnie(ciągły stan wysoki) ADC ADEN=1 włączenie przetwornika ADC ADPS - ustawienie preskalera, tu na 128 REFS - wybór napięcia odniesienia, tu wewnętrzne źródło 2,56V z koniecznością podłączenia zewnętrznego kondensatora na pinie AREF MUX - wybór kanału ADC5 na pinie PC5 Ustawienie Wejścia ADC Uruchomienie pojedynczej konwersji Oczekiwanie na zakończenie konwersji przetwornika Przeliczenie odczytu na jednostki w woltach Ustawienie rejestrów MUX dla poszczególnych kanałów pomiarowych(wybranego pinu z którego wykonywany jest pomiar: Rejestr Numer kanału MUX3 MUX2 MUX1 MUX0 0 0 0 0 ADC0(PC0) 0 0 0 1 ADC1(PC1) 0 0 1 0 ADC2(PC2) 0 0 1 1 ADC3(PC3) 0 1 0 0 ADC4(PC4) 0 1 0 1 ADC5(PC5) 0 1 1 0 ADC6(tylko w smd) 0 1 1 1 ADC7(tylko w smd) Strona 7 z 11

7. OPIS WYPROWADZEŃ PINÓW ATMEGA 8 Rysunek 1 Atmega8 w wersji przewlekanej(tht) Rysunek 2Atmega8 w wersji powierzchniowej(smd) Strona 8 z 11

Rysunek 3 Minimalne podłączenie zasilania procesora ATMEGA8 Rysunek 4 Zalecane podłączenie zasilania procesora ATMEGA8 Strona 9 z 11

8. OPIS WYPROWADZEŃ PINÓW - KANDA AVR Rysunek 5 Złącze do programowania (Kanda) 9. OPIS WYPROWADZEŃ PINÓW LCD HD44780 Rysunek 6 Opis wyprowadzeń pinów wyświetlacza LCD HD44780 Strona 10 z 11

LITERATURA http://mikrokontrolery.blogspot.com https://pl.wikibooks.org/wiki/c http://forbot.pl Nota katalogowa układu Atmega8 wydanie 09.2015r. http://radzio.dxp.pl Nota katalogowa układu rejestru przesuwnego74hc595 wydanie 02.2016r. Strona 11 z 11