SYSTEMY PRZERWAŃ. Przerwanie alarmuje procesor o wysokopriorytetowym zdarzeniu, które wymaga zaprzestania wykonywania bieżącego kodu.

Podobne dokumenty
Mikrokont Mikr roler autonomicznej pracy pracy systemach sys kontrolno pomiarowych pomiarowyc komunikacyjnych komunikacyjnyc

XMEGA. Warsztaty CHIP Rok akademicki 2014/2015

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.2

Jedrzej Ułasiewicz Komputerowe systemy sterowania 1

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

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

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

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

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

Przerwania, polling, timery - wykład 9

Metody obsługi zdarzeń

CPU. Architektura FLAGS Bit: dr Paweł Kowalczyk; DPTNS, KFCS UŁ. SI 16 bit. 16 bit. 16 bit.

Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

1. Tworzenie nowego projektu.

Zarządzanie sieciami telekomunikacyjnymi

Mariusz Rudnicki PROGRAMOWANIE WSPÓŁBIEŻNE I SYSTEMY CZASU RZECZYWISTEGO CZ.2

Architektura systemu komputerowego. Działanie systemu komputerowego. Przerwania. Obsługa przerwań (Interrupt Handling)

Rev Źródło:

J. Ułasiewicz Komputerowe systemy sterowania 1. 1 Architektura PC Ogólna struktura systemu jednoprocesorowego

Procesory rodziny x86. Dariusz Chaberski

Systemy wbudowane. Poziomy abstrakcji projektowania systemów HW/SW. Wykład 9: SystemC modelowanie na różnych poziomach abstrakcji

Działanie systemu operacyjnego

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

Architektura mikroprocesorów z rdzeniem ColdFire

Działanie systemu operacyjnego

Komputery klasy PC. Dariusz Chaberski

Działanie systemu operacyjnego

WOJSKOWA AKADEMIA TECHNICZNA

architektura komputerów w 1 1

Działanie systemu operacyjnego

Pośredniczy we współpracy pomiędzy procesorem a urządzeniem we/wy. W szczególności do jego zadań należy:

Urządzenia peryferyjne RS-232. Wykład 2

RS868v3 module configuration

Camspot 4.4 Camspot 4.5

Wykład 9. Obsługa przerwań

LCD (Liquid Crystal Display)

QNX Neutrino (v 6.3)

Realizacja systemów wbudowanych (embeded systems) w strukturach PSoC (Programmable System on Chip)

Systemy operacyjne system przerwań

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

Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

Mikroprocesor Operacje wejścia / wyjścia

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

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Rev Źródło:

IEEE Centronics

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

Przerwania w systemie mikroprocesorowym

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

Moduł mikrokontrolera PROTON (v1.1)

MS Visual Studio 2005 Team Suite - Performance Tool

2. Budowa układów procesorowych rodziny TMS320C

Wybrane zagadnienia elektroniki współczesnej

Helena Boguta, klasa 8W, rok szkolny 2018/2019

Strona główna > Produkty > Systemy regulacji > System regulacji EASYLAB - LABCONTROL > Program konfiguracyjny > Typ EasyConnect.

USB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian

LOW ENERGY TIMER, BURTC

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

OPBOX ver USB 2.0 Mini Ultrasonic Box with Integrated Pulser and Receiver

Mikroinformatyka. Wielozadaniowość

Zakopane, plan miasta: Skala ok. 1: = City map (Polish Edition)

Aktualizacja Oprogramowania Firmowego (Fleszowanie) Microprocessor Firmware Upgrade (Firmware downloading)

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

Timery w mikrokontrolerach STM32F3

Podstawy techniki cyfrowej Układy wejścia-wyjścia. mgr inż. Bogdan Pietrzak ZSR CKP Świdwin

Układy czasowo-licznikowe w systemach mikroprocesorowych

Funkcje sterownika CellBOX-UxR ModBUS RTU

Instrukcja obsługi User s manual

USB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian

Embedded Systems Programming

USB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian

Technika mikroprocesorowa I Wykład 2

Instytut Teleinformatyki

Hardware mikrokontrolera X51

Struktura QSM (Queued Serial Module)

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Program wykładów. Strona WWW przedmiotu: Program ćwiczeń projektowych

CW-HC08 Programowanie mikrokontrolera MC9S08QD4 [2]

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

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

Moduł wspierający diagnostykę i sprzętowe debugowanie

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

Wykład 3: Implementacja programów wbudowanych

Weronika Mysliwiec, klasa 8W, rok szkolny 2018/2019

Wykaz linii kolejowych, które są wyposażone w urządzenia systemu ETCS

Architektura komputera typu PC z procesorem IA-32

Szkolenia specjalistyczne

INSTRUKCJE JAK AKTYWOWAĆ SWOJE KONTO PAYLUTION

Układy czasowo-licznikowe w systemach mikroprocesorowych

Wykaz linii kolejowych, które są wyposażone w urzadzenia systemu ETCS

OSI Network Layer. Network Fundamentals Chapter 5. ITE PC v4.0 Chapter Cisco Systems, Inc. All rights reserved.

Zasady rejestracji i instrukcja zarządzania kontem użytkownika portalu

Podstawy Informatyki Układ przerwań

Architektura Systemów Komputerowych

Układy reprogramowalne i SoC Język VHDL (część 4)

Mikroprocesory i Mikrosterowniki Analog-Digital Converter Konwerter Analogowo-Cyfrowy

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

Struktura i działanie jednostki centralnej

LED PAR 56 7*10W RGBW 4in1 SLIM

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Transkrypt:

SYSTEMY PRZERWAŃ

SYSTEMY PRZERWAŃ Przerwanie ang. interrupt sygnał skierowany do procesora wygenerowany przez sprzęt lub oprogramowanie wskazujący na zdarzenie, które wymaga natychmiastowej reakcji. Przerwanie alarmuje procesor o wysokopriorytetowym zdarzeniu, które wymaga zaprzestania wykonywania bieżącego kodu.

SYSTEMY PRZERWAŃ W odpowiedzi na przerwanie procesor: wstrzymuje swoje bieżące działania, zachowuje swój stan, wykonuje funkcję obsługi przerwania ang. Interrupt Service Routine ISR lub Interrupt Handler skojarzoną z przerwaniem. Po wykonaniu funkcji ISR procesor wznawia wykonywanie porzuconych wcześniej zadań.

SYSTEMY PRZERWAŃ Klasyfikacja przerwań Przerwania sprzętowe; Przerwania programowe;

SYSTEMY PRZERWAŃ Klasyfikacja przerwań sprzętowych Przerwania zewnętrzne ang. external interrupt Przerwania wewnętrzne ang. exceptions

SYSTEMY PRZERWAŃ Przerwania sprzętowe zewnętrzne używane są przez urządzenia w celu powiadomienia CPU, że wymagają uwagi z jego strony lub ze strony systemu operacyjnego. Przerwania sprzętowe zewnętrzne implementowane są jako sygnały elektryczne przesyłane do procesora z zewnętrznych urządzeń. Przerwania sprzętowe zewnętrzne są asynchroniczne w stosunku do wykonywanego programu (mogą pojawiać się w trakcie wykonywanej instrukcji).

SYSTEMY PRZERWAŃ Klasyfikacja przerwań wewnętrznych Niepowodzenia ang. faults sytuacja, w której aktualnie wykonywana operacja powoduje błąd, procesor powraca do wykonywania przerwanego kodu ponownie wykonuje przerwaną operację. Pułapki ang. traps sytuacja nie będąca błędem, jej wystąpienie wymaga wykonania określonego kodu, wykorzystywana przede wszystkim w debugerach. Nienaprawialne ang. aborts błędy, których nie można naprawić.

Exceptions SYSTEMY PRZERWAŃ

SYSTEMY PRZERWAŃ Klasyfikacja przerwań zewnętrznych Przerwania maskowalne ang. Maskable interrupt (IRQ): przerwania sprzętowe, które mogą być ignorowane poprzez ustawienie odpowiedniego bitu-maski w rejestrze IMR ang. Interrupt Mask Register. Przerwanie niemaskowalne ang. Non-maskable interrupt (NMI): przetrwanie, którego nie można zignorować. Nie ma przypisanego bitu maski. NMI przypisane są do zdarzeń krytycznych lub zadań wysoko priorytetowych np. watchdog. Przerwania międzyprocesorowe ang. Interprocessor interrupt (IPI): szczególny rodzaj przerwań generowanych przez jeden procesor w celu przerwania pracy innego procesora w systemach wieloprocesorowych.

SYSTEMY PRZERWAŃ Klasyfikacja przerwań zewnętrznych Przerwania fałszywe ang. Spurious interrupt niepożądane przerwania wynikające z warunków pracy systemu, a np. generowane pod wpływem zakłóceń elektrycznych na linii IRQ bądź wynikające z błędnego projektu systemu.

SYSTEMY PRZERWAŃ Klasyfikacja przerwań zewnętrznych Przerwanie precyzyjne ang. Precise interrupt przerwanie, które pozostawia procesor w dobrze zdefiniowanym stanie. Warunki: Ustalona jednoznacznie wartość licznika rozkazów (LR), Wszystkie instrukcje przed LR w pełni wykonane, Żadna instrukcja po LR nie została wykonana, Znany stan wykonania instrukcji wskazywanej aktualnie przez LR. Przerwania precyzyjne wymagają dużo bardziej złożonej logiki procesora.

SYSTEMY PRZERWAŃ Klasyfikacja przerwań zewnętrznych Przerwania nieprecyzyjne ang. Imprecise interrupt wszystkie pozostałe przerwania nie spełniające warunków przerwania precyzyjnego. Przerwania nieprecyzyjne wymagają większego wykorzystania stosu, są źródłem wolniejszej obsługi. Interrupt storm.

SYSTEMY PRZERWAŃ

SYSTEMY PRZERWAŃ Można wyróżnić kilka podejść do obsługi przerwań: obsługa sekwencyjna kolejne przerwanie (zgłoszone podczas obsługi) obsługiwane jest po zakończeniu bieżącego, obsługa zagnieżdżona po zgłoszeniu nowego przerwania obsługa bieżącego jest zawieszana i kontynuowana po obsłużeniu przerwania nowo zgłoszonego, obsługa priorytetowa zawieszenie obsługi bieżącego przerwania następuje tylko wówczas, gdy nowo zgłoszone przerwanie ma wyższy priorytet, w przeciwnym razie obsługa następuje po obsłużeniu wszystkich zgłoszonych przerwań o wyższym priorytecie.

SYSTEMY PRZERWAŃ Obsługa przerwań: Tryb rzeczywisty pracy procesora ang. Real Mode: adres ISR zapisany jest w tablicy wektorów przerwań; przerwanie identyfikowane jest przez numer wektora przerwań; w architekturze x86 możemy zdefiniować 256 przerwań; tablica wektorów przerwań 1024B (256 4-bajtowych adresów).

SYSTEMY PRZERWAŃ Obsługa przerwań: Tryb chroniony pracy procesora ang. Protected Mode: tablica deskryptorów przerwań ang. Interrupt Descriptor Table IDT łączy ona każdy wektor wyjątku lub przerwania z deskryptorem bramy kontrolowany dostęp do segmentów kodu o różnych stopniach uprzywilejowana) dla procedury lub zadania (ang. task) obsługującym dany wyjątek lub przerwanie; rozmiar IDT 256*8B; położenie IDT jest zapisane w rejestrze tablicy deskryptorów przerwań (ang. Interrupt Descriptor Table Register IDTR);

SYSTEMY PRZERWAŃ w IDT zdefiniowane mogą być trzy różne rodzaje deskryptorów bram: deskryptor bramy zadania, ang. Task-Gate Descriptor - deskryptor używany przy sprzętowej wielozadaniowości, wskazuje położenie w pamięci struktury opisującej zadanie; deskryptor bramy przerwania, ang. Interrupt-Gate Descriptor informuje procesor o kodzie, który ma wykonać po wystąpieniu przerwania; deskryptor bramy pułapki, ang. Trap-Gate Descriptor - zawierający lokalizację w kodzie, która gdy zostanie osiągnięta wywoła przerwanie - pułapkę (użyteczne przy debugowaniu).

SYSTEMY PRZERWAŃ Warstwy oprogramowania operacji I/O

SYSTEMY PRZERWAŃ x86 interrupt handling

SYSTEMY PRZERWAŃ

SYSTEMY PRZERWAŃ Obsługa przerwań w OS MsDOS void set_interrupt_vme(){ _asm cli /*save old INTVEC*/ BuforAdresuIRQ_VME2 = _dos_getvect( VME_INTVECT ); _dos_setvect( VME_INTVECT, MVME_INTERRUPT ) /* set new INTVEC */ andp( ICM_S, (unsigned char)~vme_mirq_s ); /* INT15 enabled */ /* odblokowanie CIO i obslugiwanych przerwan VME */ outp( VIMR, ( RS_MINT PORT0_MINT) ); _asm sti } void clear_interrupt_vme() { outp( VIMR, 0xFE ); /* VME INT disabled */ orp ( ICM_S, VME_MIRQ_S ); /* INT15 disabled */ _dos_setvect( VME_INTVECT, BuforAdresuIRQ_VME2 ); /* restore old INTVEC */ }

#pragma check_stack (off) SYSTEMY PRZERWAŃ Obsługa przerwań w OS MsDOS void _interrupt _far MVME_INTERRUPT() { _asm{ cli START_PRZERWANIA: mov dx,vipr ; odczytaj rejestr przerwań in al,dx and al,0xfe cmp al,0 jz KONIEC_VME_INT test al,port0_mint jnz PRZERWANIE_Z_PORTU_IO jmp KONIEC_VME_INT

SYSTEMY PRZERWAŃ Obsługa przerwań w OS MsDOS PRZERWANIE_Z_PORTU_IO: mov dx,viackr+2*port1_int ; odpowiedz IACK in al,dx cmp al,0x04 ; przerwanie od timer a 1 je CT1 cmp al,0x02 ; przerwanie od timer a 2 je CT2 cmp al,0x00 ; przerwanie od timer a 3 je CT3 cmp al,0x3c je ADC_ cmp al,0x06 ; błąd przerwania je KONIEC_VME_INT CT1: jmp START_PRZERWANIA KONIEC_VME_INT: jmp EOI_VME

SYSTEMY PRZERWAŃ Obsługa przerwań w OS MsDOS CT2: les bx,v1 mov BYTE PTR es:[bx],byte PTR CT2CSR_REG ;kasuj flagę przerwania mov BYTE PTR es:[bx],byte PTR RES_IPIUS 0x06 inc FIRST_SAMPLE cmp FIRST_SAMPLE,0xFFFF je STOP_CT2 jmp START_PRZERWANIA STOP_CT2: mov ax,first_sample xor ax,first_sample mov FIRST_SAMPLE,ax jmp START_PRZERWANIA CT3: jmp START_PRZERWANIA

SYSTEMY PRZERWAŃ Obsługa przerwań w OS MsDOS ADC_: inc ADCDATA inc FIRST_SAMPLE cmp FIRST_SAMPLE,0xFFFF je STOP_CT2 jmp START_PRZERWANIA } EOI_VME: mov al,eoi8259 mov dx,irr_m out dx,al mov dx,irr_s out dx,al sti } /* _asm */ ;wyślij komendę EOI do kontrolerów #pragma check_stack (on)

SYSTEMY PRZERWAŃ Obsługa przerwań w QNX Neutrino OS Driver A handler(){ return event; } Interrupt source Programmable Interrupt Controller μkernel main(){ } Driver B main(){ }

SYSTEMY PRZERWAŃ Obsługa przerwań w QNX Neutrino OS Funkcje wykorzystywane w obsłudze przerwań: id = InterruptAttach (int intr, struct sigevent *(*handler)(void *, int), void *area, int size, unsigned flags); id = InterruptAttachEvent (int intr, struct sigevent *event, unsigned flags); InterruptDetach (int id); InterruptWait (int flags, uint64_t *reserved); InterruptMask (int intr, int id); InterruptUnmask (int intr, int id); InterruptLock (struct intrspin *spinlock); InterruptUnlock (struct intrspin *spinlock); We have to obtain I/O permissions for these functions; ThreadCtl(_NTO_TCTL_IO, 0); We have to belong to a group of system administrators (root (userid 0)).

SYSTEMY PRZERWAŃ MSP430 Family Trzy typy przerwań: System Reset. Przerwania niemaskowalne. Przerwania maskowalne. Właściwości: Stałe priorytety przerwań określone przez położenie modułu w łańcuchu połączeń. Przerwania od modułów położonych bliżej procesora posiadają wyższy priorytet.

SYSTEMY PRZERWAŃ MSP430 Family

SYSTEMY PRZERWAŃ Non-Maskable Interrupts NMI MSP430 Family (Non)-maskable NMI interrupts are not masked by the general interrupt enable bit (GIE), but are enabled by individual interrupt enable bits (ACCVIE, NMIIE, OFIE). When a NMI interrupt is accepted, all NMI interrupt enable bits are automatically reset. User software must set the required NMI interrupt enable bits for the interrupt to be re-enabled. A (non)-maskable NMI interrupt source: An edge on the RST/NMI pin when configured in NMI mode An oscillator fault occurs An access violation to the flash memory

SYSTEMY PRZERWAŃ MSP430 Family Maskable Interrupts MI Maskable interrupts are caused by peripherals with interrupt capability including the watchdog timer overflow in interval-timer mode. Each maskable interrupt source can be disabled individually by an interrupt enable bit. All maskable interrupts can be disabled by the general interrupt enable (GIE) bit in the status register (SR).

AVR XMEGA Interrupt Controller Właściwości systemu przerwań: 3 poziomy przerwań: low, medium, high; szeregowanie karuzelowe ang. round-robin przerwań na niskim poziomie; programowalne priorytety przerwań na niskim poziomie; Wygenerowanie przerwania następuje po spełnieniu poniższych warunków: Spełnione są wszystkie warunki, które ustawiają flagę przerwania Przerwanie odblokowane jest w module Poziom przerwania odblokowany jest w kontrolerze przerwań Globalna flaga przerwań w CPU jest odblokowana

AVR XMEGA Interrupt Controller

AVR XMEGA Interrupt Controller Kolejność wykonywania przerwań określona jest po pierwsze przez ich poziom, a następnie przez ich priorytet. Poziom przerwania ustalany jest indywidualnie dla przerwań w module, w którym będą generowane, natomiast priorytet określony jest przez stały adres wektora przerwań ang. Interrupt Vector Address. Alternatywnie, priorytet przerwań niskopoziomowych może bazować na algorytmie round-robin sterowanym za pomocą kontrolera przerwań. Przerwanie niemaskowalne ang. Non-Maskable Interrupt (NMI) jest to specjalne przerwanie, które nie może być zablokowane i jest wykorzystywane do sygnalizowania zdarzeń krytycznych w systemie. NMI może wskazywać usterkę rezonatora kwarcowego.

AVR XMEGA Interrupt Controller

AVR XMEGA Interrupt Controller

AVR XMEGA Interrupt Controller Problemy: W wielopoziomowych systemach przerwań wywłaszczanie przerwań nisko-priorytetowych przez przerwania o wysokim priorytecie. Rozmiar stosu. Ochrona dostępu do rejestrów i danych o rozmiarze przekraczającym 8 bitów. Magistrala danych AVR jest 8-bitowa i przesyłanie danych 16- lub 32-bitowych wymaga wykonania większej liczby instrukcji. Możliwa jest sytuacja iż przerwanie wystąpi w czasie przesyłania wielobajtowej danej. Jeżeli 16-bitowa zmienna używana jest w głównej pętli programu i jest modyfikowana w ISR, może zostać nadpisana. Podobna sytuacja może mieć miejsce w czasie wywłaszczania przerwań.

AVR XMEGA Interrupt Controller Rozwiązanie: Stosowanie operacji atomowych do modyfikacji danych w ISR. Globalna blokada przerwań w czasie dostępu do zmiennych. Zachowywanie i przywracanie rejestrów tymczasowych.

AVR XMEGA Interrupt Controller Przykład: void SetUp_USARTC0(){ cli(); /* Disable interrupts for setup */ /*Step 1) Set the TxD pin value high, and clear the RxD pin */ PORTC.OUTSET = PIN3_bm; PORTC.OUTCLR = PIN2_bm; PORTC.DIRSET = PIN3_bm; /* PC3 (TXD0) as output. */ PORTC.DIRCLR = PIN2_bm; /* PC2 (RXD0) as input. */ /* Baud rate selection */ /* BSEL = (14745600 / (2^0 * 16*19200) -1 = 47-> BSCALE = 0 */ /* FBAUD = ( (14745600)/(2^0*16(47+1)) = 19200-> it's alright*/ USARTC0_BAUDCTRLB = 0; /* Just to be sure that BSCALE is 0 */ USARTC0_BAUDCTRLA = 0x2F; /* 47 */

AVR XMEGA Interrupt Controller /* Disable interrupts, just for safety */ USARTC0_CTRLA = 0; /* 8 data bits, no parity and 1 stop bit */ USARTC0_CTRLC = USART_CHSIZE_8BIT_gc; /* Enable receive and transmit */ USARTC0_CTRLB = USART_TXEN_bm USART_RXEN_bm; }; /* Enable interrupts */ USARTC0_CTRLA = USART_RXCINTLVL_LO_gc USART_DREINTLVL_LO_gc; /* Enable PMIC interrupt level low. */ PMIC.CTRL = PMIC_LOLVLEN_bm; USARTC0.STATUS &= (0<<PIN7_bp); sei();

AVR XMEGA Interrupt Controller ISR(USARTC0_DRE_vect){ if (TxD_Data_count_C0 == FRAME_LEN){ uint8_t tempctrla = USARTC0.CTRLA; tempctrla = ( tempctrla & ~USART_DREINTLVL_gm) USART_DREINTLVL_OFF_gc; USARTC0.CTRLA = tempctrla; // Disable DRE int } else{ /* Start transmitting. */ sendchar_usartc0(c0_txd_buffer[txd_data_count_c0]); TxD_Data_count_C0++; } }

AVR XMEGA Interrupt Controller ISR(USARTC0_RXC_vect){ C0_RxD_BUFFER[RxD_Data_count_C0] = USARTC0.DATA; RxD_Data_count_C0++; if(rxd_data_count_c0 == FRAME_LEN) RxD_Data_flag_C0=1; }

AVR XMEGA Interrupt Controller

SYSTEMY PRZERWAŃ ARM Generic Interrupt Controller AITC

Nuvoton ARM Cortex TM -M0 Nested Vectored Interrupt Controller (NVIC) Ściśle sprzężony z jądrem procesora i zapewniający następujące funkcjonalności: Wsparcie zagnieżdżonych i wektorowanych przerwań; Automatyczne zachowywanie i przywracanie stanu procesora; Zmniejszone i deterministyczne opóźnienie reakcji na przerwanie.

Nuvoton ARM Cortex TM -M0 Nested Vectored Interrupt Controller (NVIC)

Nuvoton ARM Cortex TM -M0 Nested Vectored Interrupt Controller (NVIC)

Nuvoton ARM Cortex TM -M0

TI DSP C6000 Cztery typy przerwań kierowanych do CPU: Reset najwyższy priorytet; Przerwania maskowalne 12 przerwań MI o niższym priorytecie niż NMI, reset i wyjątki; przerwania te mogą być powiązane z urządzeniami zewnętrznymi, zintegrowanymi układami peryferyjnymi lub oprogramowaniem; Przerwania NMI używane są do powiadamiania CPU o istotnych problemach sprzętowych np. awaria zasilania; Wyjątki;

TI DSP C6000

TI DSP C6000 The following conditions must be met to process a maskable interrupt: The global interrupt enable bit (GIE) bit in the control status register (CSR) is set to1. The NMIE bit in the interrupt enable register (IER) is set to 1. The corresponding interrupt enable (IE) bit in the IER is set to 1. The corresponding interrupt occurs, which sets the corresponding bit in the interrupt flags register (IFR) to 1 and there are no higher priority interrupt flag (IF) bits set in the IFR.

TI DSP C6000

TI DSP C6000

TI DSP C6000

TI DSP C6000 Trzy typy wyjątków w CPU: Zewnętrzy maskowalny wyjątek. Zewnętrzny niemaskowalny wyjątek. Zbiór wewnętrznych wyjątków niemaskowalnych.

TI DSP C6000

AVR XMEGA EVENT SYSTEM The event system can be divided into three distinct parts: Event generators, with one or more event sources The event routing network Event users

AVR XMEGA EVENT SYSTEM

AVR XMEGA EVENT SYSTEM

AVR XMEGA EVENT SYSTEM

AVR XMEGA EVENT SYSTEM Two types of events exist in the XMEGA event system, signaling events and data events. A signaling event does not contain any information except the fact that a change has occurred. A data event contains additional information about the change of state. The encoding of a data event is determined by the event source.

AVR XMEGA EVENT GENERATOR An event generator is a peripheral module having one or more event sources. There is generally a strong correlation between the available event sources and the available interrupt and DMA trigger sources belonging to a peripheral module. An event generator is feeding all its event sources to the event routing system, and is not aware of which event sources is being used by other modules.

AVR XMEGA The Event Routing Network handles the routing of events from the event generator to the event user. The Event Routing Network consists of 8 equal event channels. Each channel consists of a multiplexer (controlled by the CHnMUX register) and a control and filtering logic (controlled by the CHnCTRL register), where n is the channel number. Every event source from every event generator is connected to the inputs of each of the eight multiplexers. This means that each event channel can be connected to any event source. Several event channels can also choose to relay the same event source.

AVR XMEGA EVENT USER An event user is a peripheral module that can make use of an event to trigger an action, referred to as an event action. An event user selects the event source to react to by selecting an event channel. The actual event source is determined by the multiplexer setting in the selected event channel. Event users can also be event generators. For example Timer/Counter modules have several event sources, and can also use an event from another peripheral module to trigger an input capture.

AVR XMEGA EVENT TIMING It is possible to generate events either from software or using the on-chip debugging system. The generated events are injected directly in the event channels. The event channel does not need to have an event source associated with it to use the manual event generation possibilities. If an event source is associated with the event channel, the manually generated event has priority and will override the peripheral event.

AVR XMEGA EVENT TIMING Two registers are used for manual event generation, STROBE and DATA. The event generation is triggered by a write to the STROBE register. When generating signaling events, only the STROBE register is needed. When generating data events, both STROBE and DATA must be used and STROBE must be written after DATA. The STROBE and DATA registers contain one bit for each event channel. Bit n corresponds to event channel n. It is possible to generate events on several channels at the same time by writing to several channels at once.

AVR XMEGA EVENT SYSTEM The event system is operative in Active and Idle mode. In all other sleep modes, peripheral modules will not be able to communicate using the event system.

AVR XMEGA EVENT SYSTEM Realizacja 32-bitowego licznika przy wykorzystaniu systemu zdarzeń.

AVR XMEGA EVENT SYSTEM /* Configure PD0 as input, sense on both edges. */ PORTD.PIN0CTRL = PORT_ISC_BOTHEDGES_gc; PORTD.DIRCLR = 0x01; /* Select TCC0 overflow as event channel 0 multiplexer input. (Overflow propagation) */ EVSYS_SetEventSource(0, EVSYS_CHMUX_TCC0_OVF_gc); /* Select PD0 as event channel 1 multiplexer input. (Input capture) */ EVSYS_SetEventSource(1, EVSYS_CHMUX_PORTD_PIN0_gc);

AVR XMEGA EVENT SYSTEM /*Select event channel 0 as clock source for TCC1. */ TCC1.CTRLA = TC_CLKSEL_EVCH0_gc; /* Configure TCC0 for input capture. */ TCC0.CTRLD = (uint8_t) TC_EVSEL_CH1_gc TC_EVACT_CAPT_gc; /* Configure TCC1 for input capture with event delay. */ TCC1.CTRLD = (uint8_t) TC_EVSEL_CH1_gc TC0_EVDLY_bm TC_EVACT_CAPT_gc;

AVR XMEGA EVENT SYSTEM /* Enable Compare or Capture Channel A for both timers. */ TCC0.CTRLB = TC0_CCAEN_bm; TCC1.CTRLB = TC1_CCAEN_bm; /* Select system clock as clock source for TCC0. */ TCC0.CTRLA = TC_CLKSEL_DIV1_gc; while (1) { if ( TCC0.INTFLAGS & TC0_CCAIF_bm ) { /*Clear interrupt flag when new value is captured. The last capture value is now available in the CCA register. */ TCC0.INTFLAGS = TC0_CCAIF_bm; TCC1.INTFLAGS = TC1_CCAIF_bm; } }

AVR XMEGA EVENT SYSTEM /*Select TC overflow as event channel 0 multiplexer input. */ EVSYS_SetEventSource(0, EVSYS_CHMUX_TCC0_OVF_gc); /*Configure ADC A event channel and configure which channels to sweep and enable channel sweep.*/ ADCA.EVCTRL = (uint8_t) ADC_SWEEP_0123_gc ADC_EVSEL_0123_gc ADC_EVACT_SWEEP_gc; /* Configure the input of the ADC channels and single ended mode. */ ADCA.CH0.MUXCTRL = (uint8_t)adc_ch_muxpos_pin4_gc ADC_CH_MUXNEG_PIN0_gc; ADCA.CH0.CTRL = ADC_CH_INPUTMODE_SINGLEENDED_gc;

AVR XMEGA EVENT SYSTEM /* Configure prescaler, resolution, singed mode and set voltage reference to internal Vcc - 0.6. Finally enable ADC.*/ ADCA.PRESCALER = ( ADCA.PRESCALER & ~ADC_PRESCALER_gm ) ADC_PRESCALER_DIV8_gc; ADCA.CTRLB = ( ADCA.CTRLB & ~ADC_RESOLUTION_gm ) ADC_RESOLUTION_12BIT_gc; ADCA.CTRLB = ( ADCA.CTRLB & ~( ADC_CONMODE_bm ADC_FREERUN_bm ) ); ADCA.REFCTRL = ( ADCA.REFCTRL & ~ADC_REFSEL_gm ) ADC_REFSEL_VCC_gc; ADCA.CTRLA = ADC_ENABLE_bm;

AVR XMEGA EVENT SYSTEM /* Configure TCC0 with the desired frequency and period. */ TCC0.PER = 0xFFFF; TCC0.CTRLA = TC_CLKSEL_DIV1_gc; while (1) { /* Wait while ADC sweeps on every TCC0 Overflow. */ }