ŚRODOWISKO PROTOTYPOWANIA SP AVR

Podobne dokumenty
Mikroprocesory i Mikrosterowniki

2. Architektura mikrokontrolerów PIC16F8x... 13

Instytut Teleinformatyki

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

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

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

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

Mikroprocesory i Mikrosterowniki

ZL30ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F103

Programowanie mikrokontrolerów AVR

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Wstęp Architektura... 13

E-TRONIX Sterownik Uniwersalny SU 1.2

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

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

ZL16AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega8/48/88/168

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

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32

ZL28ARM. Zestaw uruchomieniowy dla mikrokontrolerów AT91SAM7XC

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

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

dokument DOK wersja 1.0

Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

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

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

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

Mikroprocesory i mikrosterowniki

ZL27ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F103

Politechnika Białostocka

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

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32

Listing_ $crystal = deklaracja

Moduł uruchomieniowy AVR ATMEGA-16 wersja 2

SYSTEM PRZERWAŃ ATmega 32

Tab. 1. Zestawienie najważniejszych parametrów wybranych mikrokontrolerów z rodziny LPC2100, które można zastosować w zestawie ZL3ARM.

Instrukcja do laboratorium Akademii ETI *

Płyta ewaluacyjna z mikrokontrolerem Atmega32. Autor Dariusz Wika

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

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

ZL29ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

MCAR Robot mobilny z procesorem AVR Atmega32

Opis procedur asemblera AVR

Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów AVR

ZL2ARM easyarm zestaw uruchomieniowy dla mikrokontrolerów LPC2104/5/6 (rdzeń ARM7TDMI-S)

ZL2ARM easyarm zestaw uruchomieniowy dla mikrokontrolerów LPC2104/5/6 (rdzeń ARM7TDMI-S)

Płyta uruchomieniowa EBX51

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2

ZL5PIC. Zestaw uruchomieniowy dla mikrokontrolerów PIC16F887

MultiTool instrukcja użytkownika 2010 SFAR

MikloBit ul. Cyprysowa 7/ Jaworzno. JTAG + ISP dla AVR. rev

Programowanie mikrokontrolerów AVR z rodziny ATmega.

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Wbudowane układy peryferyjne cz. 1 Wykład 7

Zestaw uruchomieniowy z mikrokontrolerem LPC1114 i wbudowanym programatorem ISP

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

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

start Program mikroprocesorowego miernika mocy generowanej $crystal = deklaracja

Instytut Teleinformatyki

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

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

ZL8AVR. Płyta bazowa dla modułów dipavr

Elektronika samochodowa (Kod: TS1C )

Programowanie mikrokontrolerów. 5 grudnia 2007

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

Szkolenia specjalistyczne

Mikrokontrolery AVR Wprowadzenie

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

WYKŁAD 5. Zestaw DSP60EX. Zestaw DSP60EX

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

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

Wstęp. Opis ATMEGA128 MINI MODUŁ VE-APS-1406

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

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania. Sterowniki Urządzeń Mechatronicznych laboratorium. Ćw. 3: Timer v1.0

ZL9AVR. Płyta bazowa dla modułów ZL7AVR (ATmega128) i ZL1ETH (RTL8019)

MIKROKONTROLERY I MIKROPROCESORY

ZL1MSP430 Zestaw startowy dla mikrokontrolerów MSP430F11xx/11xxA ZL1MSP430

EVBeasyPSoC. Instrukcja użytkownika REV 2. Many ideas one solution

długo. W tym celu w czasie przeczesywania if (key) {

Programowanie mikrokontrolerów. 8 listopada 2007

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)

Programowanie mikrokontrolerów - laboratorium

Komunikacja w mikrokontrolerach Laboratorium

Moduł prototypowy X3-DIL64 z procesorem ATxmega128A3U-AU

ZL9ARM płytka bazowa dla modułów diparm z mikrokontrolerami LPC213x/214x

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Mikrokontroler AVR ATmega32 - wykład 9

4 Transmisja szeregowa, obsługa wyświetlacza LCD.

High Speed USB 2.0 Development Board

ZL2AVR. Zestaw uruchomieniowy z mikrokontrolerem ATmega8

Instrukcja obsługi programatora AVR Prog USB v2

SYSTEMY CZASU RZECZYWISTEGO (SCR)

Układy czasowo-licznikowe w systemach mikroprocesorowych

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

SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701. SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701.

Programator procesorów rodziny AVR AVR-T910

XMEGA. Warsztaty CHIP Rok akademicki 2014/2015

Podstawy techniki mikroprocesorowej

Instrukcja obsługi programatora AVR Prog USB v2

Metody obsługi zdarzeń

Transkrypt:

PWSZ SW W1 ŚRODOWISKO PROTOTYPOWANIA SP AVR Mikrokontroler ATmega32. Płytka ewaluacyjna EVBavr. Studio Programowania. Przyciski i LEDy. Przerwanie zegarowe. Symulator PB_sym. W skład środowiska SP AVR wchodzi płytka ewaluacyjna EVBavr z mikrokontrolerem ATmega32 oraz pakiet Studio Programowania do uruchamiania programów napisanych w języku C dla kilku typów mikrokontrolerów. 1. Architektura AVR MIKROKONTROLER ATmega32 Firma ATMEL, USA założona przez konstruktorów mikrokontrolerów Intela (MCS 8051). Cechy Wysokowydajna 8 bitowa architektura AVR polegająca na rozdzieleniu pamięci i szyn dla programu i danych, co pozwala na wykonanie instrukcji w jednym cyklu zegara (tzw. architektura harwardzka). RISC Reduced Instruction Set Computer, 131 instrukcji nastawionych na język C (µc 8051 Complex Instruction Set Computer, CISC).

Dane ATmega32 pamięci: 32 kb Flash (trwałość 10 k zapisów) 2 kb SRAM 1 kb EEPROM (100 k zapisów) ATmega16 odpowiednio 16/1/0.5 kb 32 rejestry 8 bitowe 3 timery/liczniki (czasomierze), programowany watch dog do 32 konfigurowalnych linii wejścia/wyjścia (I/O) ponad 20 rodzajów maskowalnych przerwań 8 kanałowy 10 bitowy przetwornik analogowo cyfrowy (ADC) komparator analogowy (np. kontrola napięcia) komunikacyjne interfejsy szeregowe USART, SPI, I 2 C interfejs JTAG programowanie, testowanie Rejestr statusowy SREG (Status Register) globalne odblokowanie przerwań przez ustawienie flagi I na 1 sei( ) makroinstrukcja set interrupts, I=1 pozostałe flagi: kopiowanie bitu, przeniesienie, znak wyniku, przepełnienie itp. 2. Porty wejścia/wyjścia A, B, C, D cztery uniwersalne binarne 8 bitowe porty wejścia/wyjścia (cyfrowe) Każdemu pinowi można indywidualnie ustawić kierunek pracy. Wyprowadzenia: 2

Trzy rejestry obsługi portu: DDR kierunek danych (direction), wejście lub wyjście PIN wartości wejściowe (odczyt) PORT wartości wyjściowe (zapis) DDRA rejestr kierunku danych (portu A) Bity: 0 wejście, 1 wyjście (początkowo wejście) PINA rejestr pinów wejściowych Stan pinu dla kierunku wejście (DDR=0). Dla kierunku wyjście ewentualny odczyt kontrolny (rzadko stosowany). PORTA rejestr danych wyjściowych Stan ustawiany na pinie dla kierunku wyjście (DDR=1). Dla kierunku wejście, gdy PORTAi=1, następuje włączenie rezystora podciągającego pinu i do zasilania (pull up). Alternatywne funkcje portów Większość pinów portów poza pracą jako binarne wejścia/wyjścia może pełnić funkcje alternatywne (zob. wyprowadzenia) wybierane przez odpowiednie ustawienie rejestrów konfiguracyjnych. Funkcja alternatywna jednego z pinów nie uniemożliwia pracy pozostałym jako binarne piny wejścia/wyjścia. 3. Timery/liczniki Dwa liczniki 8 bitowe T0, T2 (8 bitowe rejestry) Jeden licznik 16 bitowy T1 Przeznaczenie odmierzanie czasu (timer) zliczanie impulsów/zdarzeń (licznik, counter) generowanie przebiegów o programowanej częstotliwości i wypełnieniu 3

Schemat licznika 8 bitowego Licznik zlicza impulsy w rejestrze TCNT0 od 0 do 255 lub od wartości początkowej wpisanej do TCNT0. Przy pracy jako czasomierz (timer, domyślny) impulsy pochodzą z dzielnika częstotliwości zegarowej (prescaler), a przy pracy jako licznik (counter) z pinu PB0 (funkcja alternatywna). TCNT0 rejestr timera/licznika T0 Odczyt stanu licznika lub jego zmiana (zapis). Przy pracy jako inkrementowany czasomierz przepełnienie rejestru (TOP, =0xFF) może generować przerwanie (ewentualnie dekrementacja, BOTTOM, =0). OCR0 rejestr z docelową wartości licznika (output compare) Przy pracy jako licznik impulsów zewnętrznych zrównanie zawartości TCNT0 z OCR0 może generować przerwanie. 4

TCCR0 rejestr konfiguracji licznika T0 Domyślnym trybem pracy jest tryb czasomierza (timer). Bity: FOC, COM tryb licznika (output compare) COM generowanie przebiegu CSO dzielnik częstotliwości (prescaler) TIMSK rejestr maskowania przerwań liczników TOIE0 odblokowanie przerwania po przepełnieniu licznika T0 (timer). PŁYTKA EWALUACYJNA EVBavr 1. Charakterystyka ogólna Producent Propox, Gdańsk Płytka EVBavr05 udostępnia projektantowi systemów opartych na mikrokontrolerach AVR ATmega16/32 firmy Atmel bazę sprzętową do realizacji prototypów. Użytkownik ma dostęp do wszystkich pinów procesora wyprowadzanych na złącza. Na płycie znajdują się peryferia: 8 diod LED, 8 mikroprzycisków, 4 7 segmentowe wyświetlacze LED, 2 przekaźniki, 2 potencjometry, buczek, termometr LM35, wyświetlacz LCD 2x16, zegar RTC, interfejs RS232, złącza 1 Wire/I 2 C/JTAG. Są one dostępne na złączach szpilkowych. Na płycie znajduje się także zewnętrzna pamięć flash, mostek prostowniczy ze stabilizatorem napięcia oraz pole prototypowe. Dostępne są kody źródłowe obsługi zasobów. 5

2. Rozmieszczenie elementów 1. Pole prototypowe 2. Złącza wszystkich peryferii na płycie 3. Termometr LM35 4. Przyciski i diody LED 5. Potencjometry 6. Przycisk RESET 7. Pin napięcia akumulatora 3.6V 8. Akumulator 3.6V 9. Złącze JTAG 10. Buzzer 11. Złącze programatora ISP 12. Włącznik zasilania płyty 13. Wejście napięcia zasilania DC lub AC 14. Złącza przekaźnika 15. Złącze do RS232 16. Złącze do I 2 C 17. Złącze do 1-Wire 18. Procesor z pinami na złączu szpilkowym 19. Zegar czasu rzeczywistego DS1307 20. Stabilizator napięcia LM317 21. Wyświetlacz LCD 22. Wyświetlacze 7 segmentowe 23. Pamięć FLASH 6

Wyprowadzenia złącz szpilkowych 3. Połączenia płytki PORTA LED 0 4, buzer 5, potencjometr 6, czujnik temp. 7 PORTB przyciski 0 6 PORTC I 2 C 0,1, JTAG 2 5, 1 wire 6, przycisk SW7 7 PORTD RS 232 0,1, LCD 2 7 PB0 PB6 SW0 SW6 (ak1 ak7) LD0 LD4 (LED1 LED5) PA0 PA4 RXD, TXD PD0, PD1 PC7 PD2 PD7 (K8) SW7 7

4. Przyciski, LEDy, RESET Połączenia Wciśnięcie przycisku powoduje stan niski (0) na złączu szpilkowym. Stan ten jest programowo zamieniany na 1 przez funkcję obsługi przycisków (wciśnięty oznacza 1). Podobnie zaświecenie LEDa wymaga podania stanu niskiego na odpowiedni pin. Funkcja obsługi LEDów dokonuje zamiany 1 na 0. Po włączeniu zasilania procesor sprawdza, czy jednocześnie są naciśnięte przyciski K8 (SW7) i RESET. Jeżeli nie, to wykonuje skok do części aplikacyjnej (program użytkownika). Jeżeli tak, to przechodzi do obsługi łącza programującego (SPI, RS 232) oczekując na przesłanie programu. Program mieści się w pamięci flash. 1. Nowy projekt STUDIO PROGRAMOWANIA Projekt > Nowy 8

Okna kreatora projektu Nazwa projektu i typ sterownika (płytki) Składniki projektu standard Podsumowanie 9

2. Szablon do tworzenia programu Pliki biblioteczne i źródłowe (kompilator WinAVR języka C) Mój_projekt.c 10

Powyżej: Naciśnięcie przycisku zapala odpowiedni LED Sekcje kodu dostępne dla programu użytkownika: Deklaracje użytkownika Kod użytkownika 3. Kompilacja i programowanie Kompilacja budowanie 11

Programowanie sterownika KL8 + RESET Naciśnij dowolny klawisz. Płytka EVBavr została zaprogramowana. Stany pierwszych czterech przycisków są sygnalizowane LEDami. Linijki wyświetlacza LCD podają stany przycisków (klawiszy) i LEDów. 1. Plik key.h Przyciski (klawisze) port B PRZYCISKI I LEDY 12

_BV(i) funkcja zwraca bajt, w którym bit i wynosi 1, a pozostałe bity są zerowe. Zmienne ak_ są bezpośrednio dostępne w main( ), a pk_ po usunięciu komentarza funkcji Key_menm( ). 2. Plik led.h LEDy port A Zmienne L_ są dostępne w main( ). 1. Licznik T0 w Atmega AVR PRZERWANIE ZEGAROWE Zliczanie impulsów od 0 wartości końcowej wpisywanej do rejestru OCR0. Gdy T0 osiąga wartość końcową generowane jest przerwanie zegarowe, a licznik T0 jest automatycznie zerowany. Licznik T0 posiada dzielnik (prescaler), który przepuszcza tylko co n-ty impuls (8, 64, 256, 1024). Wyboru n dokonuje się za pomocą rejestru TCCR0. Jeżeli w TCCR0 jest ustawiony bit CS02, to n = 256. Oscylator kwarcowy 8 MHz. 2. Cykl 100 ms pętli while(1) Częstotliwość taktowania licznika T0 z dzielnikiem 256 8 000 000 = 31250 Hz 256 Odstęp czasu między dwoma impulsami 1 = 0.000 032 sek = 0. 032 ms 31250 13

Liczba impulsów dla 4 ms 4 0.032 = 125 Do rejestru OCR0 należy wpisać liczbę o jeden mniejszą, czyli OCR0=124 Wartość początkowa zmiennej cykl dla odliczania 100 ms 100 cykl = = 25 4 W programie jest ona zdefiniowana jako #define TCYKL 25. Uwaga. Przerwania o okresie 5 ms nie da się tak łatwo uzyskać, ponieważ liczba impulsów dla 5 ms nie jest całkowita, ale wynosi 156.25. 3. Struktura programu Wyjaśnienia ISR makrodefinicja kompilatora WinAVR wskazująca, że chodzi o program obsługi przerwania. TIMERO_COMP_vact makrodefinicja przerwania spowodowanego osiągnięciem przez licznik T0 wartości z rejestru OCR0. 14

SYMULATOR PB_sym 1. Składniki PB_sym PB_sym.sln edytor programu użytkownika z szablonem 2. Szablon PB_sym.sln Zakładka Regulator.cpp Tekst szablonu // PB_sym.cpp : main project file. #include "stdafx.h" #include <string.h> #include <stdio.h> // ======================================================================== // //-------------------- definicje zmiennych systemowych ------------------- // //---------------------- NIE WOLNO TU NIC ZMIENIAC!!! -------------------- // // ======================================================================== char X1, X2, X3, TM; char Z1, Z2, Z3, GR; char ak1, ak2, ak3, ak4; // stany czujnikow obiektu // stany zaworow obiektu // stany klawiszy panelu 15

char L1, L2, L3, L4; char line1[80], line2[80]; char recv_char(); void send_char(char cc); void send_string(char * s); void out_sym_val(void); void inicjuj_kom(void); // stany LEDów panelu // bufory dla wyswietlacza LCD // znak nadesłany z konsoli (0=brak znaków) // wyślij jeden znak ASCII z PB na konsolę // wyślij tekst (string) z PB na konsolę // wyslij do obiektu komunikat o stanie // zaworów // inicjuj zmienne dla komunikacji //====================================================================== //============================= Regulator ============================== // //--------------------------- dane robocze --------------------------- // // ( tu mozna zmieniać... ) char stan, tim; char buf[60]; // zmienne dla grafu automatu // bufor roboczy dla sprintf(...) //--------------------- przykładowe zadania --------------------------- void zad_1(void) { L1=aK1; // ----- prosty program obsługi klawiszy i LED-ów // dioda świeci gdy naciśniemy klawisz } switch (stan) { // miganie diody case 1: L3=1; if (!tim) { stan=2; tim=5; } break; case 2: L3=0; if (!tim) { stan=1; tim=10; } break; } if (tim) --tim; void zad_2(void) // -------- obsługa obiektu (zbiornika) { switch (stan) { case 1: Z1=1; Z2=1; Z3=0; GR=0; if (X2) stan=2; break; case 2: Z1=0; Z2=1; Z3=0; GR=0; if (X3) stan=3; break; case 3: Z1=0; Z2=0; Z3=0; GR=1; if (TM) stan=4; break; case 4: Z1=0; Z2=0; Z3=1; GR=0; if (!X1) stan=1; break; } out_sym_val(); // wyslij do obiektu komunikat o stanie zaworów } // ====================================================================== // --------------------- nowe zadania (użytkownika) --------------------- // ====================================================================== void zad_3(void) { // ------------- tu nalezy wstawic program obsługi ------------------ 16

} //------------------------------------------------------------------- // ====================================================================== // ----------------------- pętla główna regulatora ---------------------- // ====================================================================== void inicjuj(void) { stan = 1; tim=10; // wywoływana JEDNORAZOWO na początku // inicjuj zmienne robocze strcpy(line2, "Sterownik v.1.0"); // wypisz na LCD } inicjuj_kom(); // inicjuj zmienne dla komunikacji void oblicz(void) // wywoływana co cykl (co 0.1 sek ) { // --------- oblicz wyjścia i kolejny stan (według grafu zadania) zad_1(); // ---->>>-------- wywołaj program obsługi zad_1 // ------------ wyswietl stan klawiszy i LEDów ------------------- sprintf(buf, "K1=%d K2=%d L1=%d L2=%d", (int)ak1, (int)ak2, (int)l1, (int)l2); strcpy(line1, buf); } // -------------- komunikacja regulatora z konsolą -------------- // send_char('a'); send_string(":012345\r\n"); // wyślij znak // lub komunikat na konsolę //===================================================================== //========================= KONIEC ==================================== //===================================================================== Funkcję zad_1( ) wywoływaną w procedurze oblicz( ) należy zastąpić własną funkcją, np. wpisaną jako zawartość zad_3( ). Procedura oblicz( ) jest wykonywana co 0.1 sekundy (jak program w płytce EVBavr). 3. Uruchomienie Build > Rebuild Solution lub Build Solution Debug > Start Without Debugging 17

Emulator płytki EVBavr i symulator poziomu w zbiorniku 18