XMEGA. Warsztaty CHIP Rok akademicki 2014/2015

Podobne dokumenty
Instrukcja do laboratorium Akademii ETI *

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Metody obsługi zdarzeń

Przerwania, polling, timery - wykład 9

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Mikrokontrolery Xmega (1)

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

PROGRAMOWALNE SYSTEMY MECHATRONIKI

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Hardware mikrokontrolera X51

2. PORTY WEJŚCIA/WYJŚCIA (I/O)

Instytut Teleinformatyki

(Rysunek z książki T.Starecki. Mikokontrolery jednoukładowe rodziny 51. NOZOMI W-wa 1996)

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

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

SYSTEM PRZERWAŃ ATmega 32

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

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Układy czasowo-licznikowe w systemach mikroprocesorowych

Mikrokontrolery Xmega (4)

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Mechanizm przerwań i menadżer zdarzeń procesora sygnałowego F/C240

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

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Przetwornik ADC procesora sygnałowego F/C240 i DAC C240 EVM

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

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

PRZERWANIA. P1 - Procedura obslugi przerwania. Obsługa zdarzenia Z1 poprzez procedurę obsługi przerwania P1

Mikrokontrolery AVR Wprowadzenie

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

Część I - Sterownik przerwań 8259A i zegar/licznik 8253

Instytut Teleinformatyki

KOMUNIKACJA Z OTOCZENIEM MIKROKONTROLERA

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

Podstawy techniki cyfrowej i mikroprocesorowej II. Urządzenia wejścia-wyjścia

Przerwania w systemie mikroprocesorowym. Obsługa urządzeo wejścia/wyjścia

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

NOTATNIK KONSTRUKTORA

Programowanie mikrokontrolerów AVR

PRZERWANIA. 1. Obsługa zdarzeń, odpytywanie i przerwania Obsługa zdarzeń jest jedną z kluczowych funkcji w prawie każdym systemie czasu rzeczywistego.

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

Przetworniki analogowo-cyfrowe (A/C)

Programowanie mikrokontrolerów 2.0

Komunikacja w mikrokontrolerach Laboratorium

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

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

Wbudowane układy komunikacyjne cz. 1 Wykład 10

Prezentacja systemu RTLinux

Systemy wbudowane. Wprowadzenie. Wprowadzenie. Mikrokontroler 8051 Budowa

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

start Program mikroprocesorowego miernika mocy generowanej $crystal = deklaracja

Mikroprocesory i Mikrosterowniki

Programowanie mikrokontrolerów - laboratorium

Rozdział 1. Wstęp, czyli nowi członkowie rodziny AVR (11)

Programowanie mikrokontrolerów AVR z rodziny ATmega.

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

Expandery wejść MCP23S17 oraz MCP23017

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

Schemat blokowy architektury AVR

2. Architektura mikrokontrolerów PIC16F8x... 13

Timery w mikrokontrolerach STM32F3

Systemy wbudowane Mikrokontrolery

Instytut Teleinformatyki

Programowanie mikrokontrolerów. 3 stycznia 2008

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

Mikroprocesor Operacje wejścia / wyjścia

Podstawy Informatyki Układ przerwań

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

Mikrokontroler AVR ATmega32 - wykład 9

Instytut Teleinformatyki

Szkolenia specjalistyczne

Programowanie mikrokontrolerów. 8 listopada 2007

Mikrokontroler ATmega32. Język symboliczny

ISP ADAPTER. Instrukcja obsługi rev.1.1. Copyright 2009 SIBIT

Instytut Teleinformatyki

Komunikacja w mikrokontrolerach. Magistrala szeregowa I2C / TWI Inter-Integrated Circuit Two Wire Interface

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

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

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

Mikroprocesory i mikrosterowniki

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

Architektura mikrokontrolera MCS51

AVR DRAGON. INSTRUKCJA OBSŁUGI (wersja 1.0)

Architektura mikrokontrolera MCS51

Mikroprocesory i Mikrosterowniki

MIKROKONTROLERY I MIKROPROCESORY

MIKROPROCESORY architektura i programowanie

Komunikacja RS485 - MODBUS

Uniwersalny sterownik silnika krokowego z portem szeregowym RS232 z procesorem AT90S2313 na płycie E200. Zestaw do samodzielnego montażu.

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

INSTRUKCJA OBSŁUGI. Przekaźnik czasowy ETM ELEKTROTECH Dzierżoniów. 1. Zastosowanie

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

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

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

Układy czasowo-licznikowe w systemach mikroprocesorowych

Wstęp Architektura... 13

Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

Spis treści. 1 Moduł RFID (APA) 3

Wykład 12. Przetwornik ADC

LOW ENERGY TIMER, BURTC

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.

Technika Mikroprocesorowa

Transkrypt:

XMEGA Warsztaty CHIP Rok akademicki 2014/2015

Plan warsztatów: Wprowadzenie do Atmel Studio (20/11/2014) Porty I/O (20/11/2014) Przerwania (27/11/2014)

Wykorzystana literatura: [1] Dokumentacja ATMEL(www.atmel.com): http://www.atmel.com/images/doc8050.pdf http://www.atmel.com/images/doc8075.pdf http://www.atmel.com/images/doc8169.pdf i inne [2] Tomasz Francuz, AVR praktyczne projekty, Helion 2013. [3] Kurs internetowy Leon Instruments: http://www.leon-instruments.pl/2013/04/poznajatxmega.html

Porty I/O podstawowe informacje: Standard napięciowy 3.3V (lub niższy przy niższym zasilaniu uc). Max. prąd 25mA/wyprowadzenie, suma wszystkich prądów <200mA. Po resecie procesora wszystkie wyprowadzenia I/O są ustawione w tryb wejściowy bez podciągania. Wyprowadzenia I/O można obsługiwać identycznie jak w Atmega jednak XMEGA daje więcej możliwości.

Porty I/O c.d. Wyprowadzenia I/O są pogrupowane w porty, zazwyczaj 8 bitowe, czasami krótsze. Każdy port procesora ma 22 skojarzone z nim rejestry. Odpowiedniki tych rejestrów pomiędzy poprzednimi rodzinami AVR a polami struktur w rodzinie XMEGA: PORT -> OUT, PIN -> IN, DDR ->DIR Np.: PORTA PORTA.OUT PINA PORTA.IN DDRA PORTA.DIR Pozostałe rejestry XMEGA nie mają odpowiedników w starszych rodzinach.

Porty I/O c.d. Pole DIR ustawienie kierunku, 0=IN, 1=OUT, PORTA.DIR = 0xFF; // ustawienie 8 x out PORTA.OUT = 0b11001101; Pole OUT wyjście sygnału, PORTA.DIR = 0xFF; // ustawienie 8 x out PORTA.OUT = 0b11001101; //zapis do portu Pole IN odczyt stanu, uint8_t data; PORTA.DIR = 0x00; // ustawienie 8 x out data = PORTA.IN; // zapis wejścia do zmiennej data

Porty I/O c.d. Pola DIRSET, OUTSET ustawienie 1 na danym bicie, PORTA.DIRSET = PIN1_bm; // ustawienie PIN1 jako wyjście PORTA.OUTSET = 0b11001101; //ustawienie wskazanych bitów Pola DIRCLR, OUTCLR ustawienie 0 na danym bicie, PORTA.DIRCLR = PIN7_bm; // ustawienie PIN7 jako wejście PORTA.OUTCLR = 0b11001101; //wyzerowanie wskazanych bitów Pola DIRTGL, OUTTGL zmiana stanu danego bitu, PORTA.DIRTGL = PIN7_bm; // zmiana trybu pracy PIN7 PORTA.OUTTGL = 0b11001101; //zmiana stanu bitów wskazanych jako jedynka

Porty I/O c.d. Pola PIN0CTRL PIN7CTRL, Sterowanie inwersja wejsicia i wyjscia PORTA.PIN0CTRL = PORT_INVEN_bm; //PIN0 zostal zanegowany Sterowanie SLEW RATE, PORTA.PIN7CTRL = PORT_SRLEN_bm; //PIN7 ma zmniejszony SR (50-150%) Sterowanie utrzymaniem bitu, PORTA.PIN0CTRL = PORT_OPC_BUSKEEPER_gc; PORTA.PIN0CTRL = PORT_OPC_PULLDOWN_gc;

Porty I/O c.d. Konfigurowanie wielu PINów jednocześnie, PORTCFG.MPCMASK = 0x0F; // ustawienie maski których pinów ma // dotyczyć konfiguracja (tu: 3-0) PORTC.PIN0CTRL = PORT_OPC_PULLUP_gc; // wpis do jednego z pinów // automatycznie przechodzi // do pozostałych Konfigurowanie przerwań na portach PORTC.PIN0CTRL = PORT_ISC_BOTHEDGES_gc; // IRQ wyzwalane na obu // zboczach PIN0 PORTC.INT0MASK = PIN0_bm PIN1_bm; // piny [0-1] to INT0

Porty I/O c.d. Zdarzenia na portach można przyporządkować do przerwania o nazwie INT0 i INT1. Przerwaniom INT0 oraz INT1 przypisuje się jeden z 3 możliwych poziomów (HI, MED, LO), np.: PORTC.INTCTRL = PORT_INT0LVL_MED_gc // Medium for INT0 PORT_INT1LVL_LO_gc; // Low for INT1 Można także dokonać remapowania PINów nie jest to omówione w tych materiałach.

Przerwania Przerwanie jest jednym z ważniejszych elementów występującym w mikrokontrolerach i systemach komputerowych. Przerwanie polega na zaprzestaniu wykonywania głównego programu i wejściu do specjalnej funkcji obsługi danego przerwania. Po zakończeniu przerwania następuje wznowienie wykonywania programu głównego. Zgłoszenie przerwania powoduje zapamiętanie stanu procesora na stosie a następnie wykonanie funkcji obsługi przerwania i na koniec odtworzeniu stanu procesora ze stosu. Zapamiętaniu na stosie podlegają następujące elementy: rejestry procesora, flagi, stan licznika rozkazów.

Przerwania c.d. Elementy nie podlegające zapamiętaniu: wartości zmiennych, wartości portów I/O i rejestrów konfiguracyjnych bloków sprzętowych. Co może wywołać przerwanie? Są to: bloki sprzętowe mikorontrolera (np.. ADC, DMA, USART, SPI, I2C), timery, wyprowadzenia I/O, zablokowanie zegara uc. Aby użyć przerwania skojarzonego z danym wektorem przerwania należy wykonać następujące czynności: - zdefiniować funkcję obsługi przerwania, - przypisać poziom obsługi danego przerwania, - odblokować dane przerwanie, - odblokować ustalony wcześniej poziom obsługi w kontrolerze przerwań PMIC, - odblokować globalną maskę przerwań.

Definicja funkcji obsługi przerwania na przykładzie przerwania od I/O ISR(PORTC_INT0_vect) //obsługa przerwania INT0 występującego { //na PORTC if (pb0_pressed()) led0(1); else led0(0); if (pb1_pressed()) led1(1); else led1(0); }

Skonfigurowanie I/O jako IRQ oraz przypisanie poziomu obsługi void pb_irq_init() { PORTC.DIRCLR = PIN0_bm PIN1_bm PIN2_bm PIN3_bm; PORTCFG.MPCMASK = PIN0_bm PIN1_bm PIN2_bm PIN3_bm; PORTC.PIN0CTRL = PORT_OPC_PULLUP_gc PORT_ISC_BOTHEDGES_gc; // pins [0-3] pullup and both edge irq request PORTC.INT0MASK = PIN0_bm PIN1_bm; // pins [0-1] call INT0 PORTC.INT1MASK = PIN2_bm PIN3_bm; // pins [2-3] call INT1 PORTC.INTCTRL } = PORT_INT0LVL_MED_gc // Medium level of INT0 PORT_INT1LVL_LO_gc; // and low level for INT1

Odblokowanie poziomu przerwania i globalne zezwolenie // turning ON IRQs of MED and LO level PMIC.CTRL = PMIC_MEDLVLEN_bm PMIC_LOLVLEN_bm; // global IRQ ON sei(); //global OFF cli(); cli();

Przerwania c.d. Wszystkie przerwania oprócz przerwania uszkodzenia kwarcu generatora są maskowalne (można je wyłączyć). Przerwanie o poziomie wyższym może uruchomić się w czasie obsługi przerwania o poziomie niższym. Można również ustalić dynamiczny priorytet, wówczas ostatnio obsłużone przerwanie uzyskuje najniższy priorytet a przerwania o wyższym adresie obsługi mają wyższy priorytet (Round Robin) PMIC.CTRL = PMIC_RREN_bm; Włączenie / wyłączenie globalnego bitu przerwań instrukcjami: // global IRQ ON //global OFF cli(); sei(); cli();

Przerwania c.d. Do wymiany danych pomiędzy funkcjami obsługi przerwań a programem głównym często używa się zmiennych globalnych trzeba im nadać atrybut volatile inaczej mogą zostać zoptymalizowane i zapis danych do nich z funkcji obsługi przerwania się nie odbędzie!!! volatile uint8_t a; Należy zapewnić atomowy dostęp/zapis do danych więcej niż 1 bajtowych do wrażliwych danych, których zapis przerwany przerwaniem mógłby spowodować nieprawidłową pracę programu.