prezentacja programu powerpoint - strona główna - … ct1 cmp al,0x02 ; przerwanie od timer’a 2...

74
SYSTEMY PRZERWAŃ

Upload: dinhcong

Post on 19-Jun-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Prezentacja programu PowerPoint - Strona główna - … 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

SYSTEMY PRZERWAŃ

Page 2: Prezentacja programu PowerPoint - Strona główna - … 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

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.

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.

Page 3: Prezentacja programu PowerPoint - Strona główna - … 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

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ń.

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ń.

Page 4: Prezentacja programu PowerPoint - Strona główna - … 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

SYSTEMY PRZERWAŃ

Klasyfikacja przerwań

Przerwania sprzętowe;

Przerwania programowe;

Klasyfikacja przerwań

Przerwania sprzętowe;

Przerwania programowe;

Page 5: Prezentacja programu PowerPoint - Strona główna - … 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

SYSTEMY PRZERWAŃ

Klasyfikacja przerwań sprzętowych

Przerwania zewnętrzne ang. external interrupt

Przerwania wewnętrzne ang. exceptions

Klasyfikacja przerwań sprzętowych

Przerwania zewnętrzne ang. external interrupt

Przerwania wewnętrzne ang. exceptions

Page 6: Prezentacja programu PowerPoint - Strona główna - … 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

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).

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).

Page 7: Prezentacja programu PowerPoint - Strona główna - … 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

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ć.

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ć.

Page 8: Prezentacja programu PowerPoint - Strona główna - … 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

SYSTEMY PRZERWAŃ

Exceptions

Page 9: Prezentacja programu PowerPoint - Strona główna - … 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

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. Inter-processor interrupt (IPI): – szczególny rodzaj przerwań generowanych przez jeden procesor w celu przerwania pracy innego procesora w systemach wieloprocesorowych.

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. Inter-processor interrupt (IPI): – szczególny rodzaj przerwań generowanych przez jeden procesor w celu przerwania pracy innego procesora w systemach wieloprocesorowych.

Page 10: Prezentacja programu PowerPoint - Strona główna - … 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

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.

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.

Page 11: Prezentacja programu PowerPoint - Strona główna - … 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

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.

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.

Page 12: Prezentacja programu PowerPoint - Strona główna - … 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

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.

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.

Page 13: Prezentacja programu PowerPoint - Strona główna - … 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

SYSTEMY PRZERWAŃ

Page 14: Prezentacja programu PowerPoint - Strona główna - … 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

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.

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.

Page 15: Prezentacja programu PowerPoint - Strona główna - … 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

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).

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).

Page 16: Prezentacja programu PowerPoint - Strona główna - … 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

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);

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);

Page 17: Prezentacja programu PowerPoint - Strona główna - … 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

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).

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).

Page 18: Prezentacja programu PowerPoint - Strona główna - … 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

SYSTEMY PRZERWAŃ

Warstwy oprogramowania operacji I/O

Page 19: Prezentacja programu PowerPoint - Strona główna - … 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

SYSTEMY PRZERWAŃ

x86 interrupt handling

Page 20: Prezentacja programu PowerPoint - Strona główna - … 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

SYSTEMY PRZERWAŃ

Page 21: Prezentacja programu PowerPoint - Strona główna - … 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

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 */

}

Page 22: Prezentacja programu PowerPoint - Strona główna - … 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

SYSTEMY PRZERWAŃ Obsługa przerwań w OS MsDOS

#pragma check_stack (off)

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

Page 23: Prezentacja programu PowerPoint - Strona główna - … 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

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

Page 24: Prezentacja programu PowerPoint - Strona główna - … 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

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

Page 25: Prezentacja programu PowerPoint - Strona główna - … 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

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 ;wyślij komendę EOI do kontrolerów

mov dx,IRR_M

out dx,al

mov dx,IRR_S

out dx,al

sti

} /* _asm */

}

#pragma check_stack (on)

Page 26: Prezentacja programu PowerPoint - Strona główna - … 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

SYSTEMY PRZERWAŃ

Obsługa przerwań w QNX Neutrino OS

Interrupt source

Programmable Interrupt Controller

μKERNEL

Driver A handler(){

return event;

}

main(){

}

Driver B

main(){

}

Page 27: Prezentacja programu PowerPoint - Strona główna - … 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

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)).

Page 28: Prezentacja programu PowerPoint - Strona główna - … 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

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.

Page 29: Prezentacja programu PowerPoint - Strona główna - … 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

SYSTEMY PRZERWAŃ MSP430 Family

Page 30: Prezentacja programu PowerPoint - Strona główna - … 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

SYSTEMY PRZERWAŃ MSP430 Family

Non-Maskable Interrupts NMI (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

Page 31: Prezentacja programu PowerPoint - Strona główna - … 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

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).

Page 32: Prezentacja programu PowerPoint - Strona główna - … 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

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

Page 33: Prezentacja programu PowerPoint - Strona główna - … 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

AVR XMEGA Interrupt Controller

Page 34: Prezentacja programu PowerPoint - Strona główna - … 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

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.

Page 35: Prezentacja programu PowerPoint - Strona główna - … 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

AVR XMEGA Interrupt Controller

Page 36: Prezentacja programu PowerPoint - Strona główna - … 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

AVR XMEGA Interrupt Controller

Page 37: Prezentacja programu PowerPoint - Strona główna - … 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

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ń.

Page 38: Prezentacja programu PowerPoint - Strona główna - … 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

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.

Page 39: Prezentacja programu PowerPoint - Strona główna - … 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

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 */

Page 40: Prezentacja programu PowerPoint - Strona główna - … 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

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();

};

Page 41: Prezentacja programu PowerPoint - Strona główna - … 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

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++;

}

}

Page 42: Prezentacja programu PowerPoint - Strona główna - … 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

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;

}

Page 43: Prezentacja programu PowerPoint - Strona główna - … 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

AVR XMEGA

Interrupt Controller

Page 44: Prezentacja programu PowerPoint - Strona główna - … 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

SYSTEMY PRZERWAŃ

ARM Generic Interrupt Controller – AITC

Page 45: Prezentacja programu PowerPoint - Strona główna - … 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

Nuvoton ARM CortexTM-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.

Page 46: Prezentacja programu PowerPoint - Strona główna - … 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

Nuvoton ARM CortexTM-M0 Nested Vectored Interrupt Controller (NVIC)

Page 47: Prezentacja programu PowerPoint - Strona główna - … 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

Nuvoton ARM CortexTM-M0 Nested Vectored Interrupt Controller (NVIC)

Page 48: Prezentacja programu PowerPoint - Strona główna - … 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

Nuvoton ARM CortexTM-M0

Page 49: Prezentacja programu PowerPoint - Strona główna - … 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

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;

Page 50: Prezentacja programu PowerPoint - Strona główna - … 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

TI DSP C6000

Page 51: Prezentacja programu PowerPoint - Strona główna - … 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

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.

Page 52: Prezentacja programu PowerPoint - Strona główna - … 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

TI DSP C6000

Page 53: Prezentacja programu PowerPoint - Strona główna - … 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

TI DSP C6000

Page 54: Prezentacja programu PowerPoint - Strona główna - … 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

TI DSP C6000

Page 55: Prezentacja programu PowerPoint - Strona główna - … 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

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.

Page 56: Prezentacja programu PowerPoint - Strona główna - … 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

TI DSP C6000

Page 57: Prezentacja programu PowerPoint - Strona główna - … 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

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

Page 58: Prezentacja programu PowerPoint - Strona główna - … 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

AVR XMEGA – EVENT SYSTEM

Page 59: Prezentacja programu PowerPoint - Strona główna - … 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

AVR XMEGA – EVENT SYSTEM

Page 60: Prezentacja programu PowerPoint - Strona główna - … 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

AVR XMEGA – EVENT SYSTEM

Page 61: Prezentacja programu PowerPoint - Strona główna - … 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

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.

Page 62: Prezentacja programu PowerPoint - Strona główna - … 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

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.

Page 63: Prezentacja programu PowerPoint - Strona główna - … 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

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.

Page 64: Prezentacja programu PowerPoint - Strona główna - … 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

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.

Page 65: Prezentacja programu PowerPoint - Strona główna - … 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

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.

Page 66: Prezentacja programu PowerPoint - Strona główna - … 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

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.

Page 67: Prezentacja programu PowerPoint - Strona główna - … 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

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.

Page 68: Prezentacja programu PowerPoint - Strona główna - … 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

AVR XMEGA – EVENT SYSTEM

Realizacja 32-bitowego licznika przy wykorzystaniu systemu zdarzeń.

Page 69: Prezentacja programu PowerPoint - Strona główna - … 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

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);

Page 70: Prezentacja programu PowerPoint - Strona główna - … 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

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;

Page 71: Prezentacja programu PowerPoint - Strona główna - … 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

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;

}

}

Page 72: Prezentacja programu PowerPoint - Strona główna - … 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

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;

Page 73: Prezentacja programu PowerPoint - Strona główna - … 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

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;

Page 74: Prezentacja programu PowerPoint - Strona główna - … 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

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. */

}