1. Przerwania ogólnie
|
|
- Kazimierz Stasiak
- 5 lat temu
- Przeglądów:
Transkrypt
1 Jedrzej Ułasiewicz Komputerowe systemy sterowania 1 1. Przerwania ogólnie 1.1. Obsługa zdarzeń, odpytywanie i przerwania Obsługa zdarzeń jest jedną z kluczowych funkcji w prawie każdym systemie czasu rzeczywistego. Istnieją dwie metody pozyskania informacji o zdarzeniach: 1. Cykliczne odpytywanie urządzenia czy zdarzenie zaszło (ang. polling). 2. Wykorzystanie przerwań generowanych przez zdarzenia (ang. interrupts). Istnieją dwie metody informowania o zdarzeniach: metoda odpytywania rejestru zdarzeń wyzwalane zdarzeniami przerwania Metoda obsługi zdarzeń poprzez odpytywanie... do { Czytaj rejestr urządzenia Sprawdź czy zaszło zdarzenie Czekaj(T) while(1)... Rys. 1-1 Ilustracja metody odpytywania Metoda odpytywania własności: 1. Długi czas reakcji na zdarzenie 2. Trudności w uszeregowaniu obsługi zdarzeń według priorytetów. 3. Utrata czasu procesora na wykonanie jałowych czynności 4. Prostota implementacji nie jest wymagany specjalny sprzęt. 5. Przewidywalność nic nie dzieje się niespodziewanie a tylko wtedy gdy nadejdzie na to zaplanowany czas.
2 Jedrzej Ułasiewicz Komputerowe systemy sterowania Obsługa zdarzeń poprzez przerwania Obsługa przerwania polega na przerwaniu aktualnie wykonywanego procesu i wykonaniu procedury przypisanej danemu zdarzeniu gdy takie zdarzenie zajdzie. Procedura nazywa się procedurą obsługi przerwania (ang. interrupt handler). Często używany jest też skrót ISR (ang. Interrupt Service Routine). Zdarzenie Z1 Przerwanie Procedura obslugi przerwania ISR Powrót z procedury obslugi przerwania do poprzedniego lub innego procesu P0 - Proces glówny P0 P1 Rys. 1-2 Obsługa zdarzenia Z1 poprzez procedurę obsługi przerwania ISR Przykładem urządzenia zgłaszającego przerwania może być układ transmisji szeregowej typu kontroler przerwań IRQ3 układ 8250 R7 TX RX dane wysyłane dane odbierane INT Bufor odbiorczy Bufor nadawczy R1 R0 CTS RTS linie sterowanie modemem Rys. 1-3 Układ transmisji szeregowej 8250
3 Jedrzej Ułasiewicz Komputerowe systemy sterowania 3 Może się zdarzyć że do systemu zgłosi się więcej przerwań niż może być w danym czasie obsłużone. Zachodzi wtedy potrzeba rozstrzygnięcia które zdarzenie ma obsługiwane gdy wiele z nich wystąpi naraz. Istnieją tu dwie podstawowe strategie postępowania: 1. Jednopoziomowy system przerwań. 2. Priorytetowy system przerwań. Gdy za obsługę oczekuje więcej nie obsłużonych przerwań wybór przerwania do obsługi może być dokonany według różnych zasad. 1. Poszczególnym przerwaniom mogą być przypisane priorytety. 2. Przerwania mogą być obsługiwane według kolejności zgłoszeń. Strategia jednopoziomowa - polega wstrzymaniu się z obsługą nowego przerwania do czasu zakończenia obsługi przerwania. Strategia wielopoziomowa - gdy w czasie obsługi przerwania o niższym priorytecie pojawi się zgłoszenie przerwania o priorytecie wyższym, to system przyjmie przerwanie o wyższym priorytecie. czas wątek procedura obsługi przerwania 1 ISR 1 EOI ISR 2 procedura obsługi przerwania 2 EOI przerwanie 1 przerwanie 2 przyjęcie przerwania 2 Rys. 1-4 Dwa przerwania obsługiwane w systemie jednopoziomowym
4 Jedrzej Ułasiewicz Komputerowe systemy sterowania 4 wątek procedura obsługi przerwania 1 procedura obsługi przerwania 2 przerwanie 1 czas ISR 1 ISR 2 kontynuacja ISR1 przerwanie 2 przyjęcie przerwania 2 Rys. 1-5 Obsługa przerwań w trybie wielopoziomowym Nie należy mylić priorytetów przerwań wynikających z działania kontrolera przerwań z priorytetami wątków. Obsługa przerwań w systemie komputerowym jest czasami blokowana przez system operacyjny. Maksymalny czas zablokowania przerwań Tdmax jest podstawową miarą jakości systemu czasu rzeczywistego. Czas Tdmax powinien być jak najkrótszy. Obsługa zdarzeń poprzez przerwania ma dla systemu komputerowego daleko idące konsekwencje.
5 Jedrzej Ułasiewicz Komputerowe systemy sterowania 5 2. Obsługa przerwań w systemie QNX6 Neutrino Funkcje konieczne do obsługiwania przerwań: funkcje blokowania przerwań (wszystkich lub pojedynczych) w systemie jedno i wieloprocesorowym. funkcja InterruptAttach() instalujące handler obsługi przerwania i funkcja InterruptAttachEvent() transformacji przerwanie w zdarzenie. funkcja blokującą wątek bieżący w oczekiwaniu na przerwanie. Opis funkcji Blokowanie przerwań Odblokowanie przerwań Założenie wirującej blokady przerwań Zdjęcie wirującej blokady przerwań Zamaskowanie przerwania Odmaskowanie przerwania Instalacja procedury obsługi przerwania Transformacja przerwania w zdarzenie Oczekiwanie na przerwanie Nazwa funkcji InterruptDisable() InterruptEnable() InterruptLock() InterruptUnlock() InterruptMask() InterruptUnmask() InterruptAttach() InterruptAttachEvent() InterruptWait() Tabela 2-1 Funkcje systemowe dotyczące obsługi przerwań
6 Jedrzej Ułasiewicz Komputerowe systemy sterowania Blokowanie i maskowanie przerwań Procedury obsługi przerwania często muszą modyfikować struktury danych z których korzystają także inne jeszcze procesy lub wątki należy zapewnić wzajemne wykluczanie. Proces / wątek W1 Przerwanie wspólne dane handler Rys. 2-1 Wątek W1 i procedura obsługi przerwania wykorzystują wspólne dane Blokowanie przerwań (ang. interrupt disabling) Blokowanie przerwań jest to niedopuszczenie do zgłoszenia wszystkich przerwań i realizowane jest w procesorze. Maskowanie przerwań (ang. interrupt mask) Maskowanie przerwań jest to niedopuszczenie do zgłoszenia określonego przerwania i realizowane jest w kontrolerze przerwań. InterruptDisable blokowanie przerwań int InterruptDisable(void) Wykonanie funkcji spowoduje zablokowanie wszystkich przerwań zewnętrznych. Czas zablokowania przerwań należy ograniczyć do niezbędnego minimum.
7 Jedrzej Ułasiewicz Komputerowe systemy sterowania 7 Po zablokowaniu przerwań komputer staje głuchy i przestaje reagować na jakiekolwiek zewnętrzne zdarzenia z wyjątkiem zdarzeń obsługiwanych w trybie odpytywania. Funkcję blokowania przerwań mogą wykonywać tylko procesy będące własnością administratora. Wątek zamierzający zablokować przerwania powinien wcześniej zażądać przywileju wykonania sprzętowej operacji wejścia wyjścia poprzez wykonanie funkcji ThreadCtl(_NTO_TCTL_IO,0) InterruptEnable odblokowanie przerwań int InterruptEnable(void) W systemach wieloprocesorowych do zapewnienia ochrony sekcji krytycznej w procedurach obsługi przerwań blokowanie przerwań jest niewystarczające. Należy użyć mechanizmu wirującej blokady. InterruptLock założenie blokady int InterruptLock(intrspin_t *spinlock) spinlock - Zmienna blokady - wspólna dla handlera i wątku Funkcja InterruptLock() sprawdza zawartość zmiennej spinlock(). Działanie: Gdy wartość zmiennej spinlock wskazuje że nie jest ona zajęta, to ją zajmuje wpisując do niej odpowiednią wartość i blokuje przerwania. Gdy zmienna spinlock jest zajęta, wykonywane jest ponowne sprawdzenie wartości tej zmiennej. Sprawdzanie odbywa się tak długo aż zmienna spinlock nie zostanie zwolniona. Sprawdzenie i ustawienie zmiennej odbywa się jako nieprzerywalna operacja atomowa.
8 Jedrzej Ułasiewicz Komputerowe systemy sterowania 8 InterruptUnlock zdjęcie blokady int InterruptUnlock(intrspin_t *spinlock) spinlock - zmienna blokady - wspólna dla handlera i wątku Funkcja InterruptUnlock() powoduje zdjęcie blokady i odblokowanie przerwań. intrspin_t zm_blok;... InterruptLock(&zm_blok); /* Sekcja krytyczna */... InterruptUnlock(&zm_blok); Indywidualne przerwania można blokować używając rejestru maski w kontrolerze przerwań. Jedno określone przerwanie zablokowane może być przy użyciu funkcji: InterruptMask zamaskowanie przerwania int InterruptMask(int intr, int id) intr - Numer przerwania które ma być zamaskowane id - Identyfikator handlera zwracany przez funkcje InterruptAttach(), InterruptAttachEvent() lub 1 gdy przerwanie ma być zamaskowane dla wszystkich handlerów. Wykonanie funkcji powoduje zamaskowanie przerwania sprzętowego podanego jako pierwszy parametr, dla handlera o identyfikatorze podanym jako drugi parametr.
9 Jedrzej Ułasiewicz Komputerowe systemy sterowania 9 Zamaskowane przerwanie można dozwolić (odmaskować) używając funkcji: InterruptUnmask dozwolenie przerwania int InterruptUnmask(int intr, int id) intr- numer przerwania które ma być dozwolone id - identyfikator handlera zwracany przez funkcje InterruptAttach, InterruptAttachEvent lub 1 gdy przerwanie ma być dozwolone dla wszystkich handlerów. 1.2 Instalacja procedur obsługi przerwań. Typowe czynności realizowane poprzez procedurę obsługi przerwania: 1. Stwierdzenie które z urządzeń wymaga obsługi (gdy więcej urządzeń dzieli jedno przerwanie). 2. Obsługa urządzenia zwykle sprowadza się ona do odczytu i zapisu pewnych rejestrów urządzenia. 3. Aktualizacja wspólnych struktur danych (dostępnych także dla wątków aplikacji). 4. Zasygnalizowanie aplikacji wystąpienia zdarzenia. Instalacji handlera obsługi przerwania następuje poprzez wykonanie funkcji: InterruptAttach instalacja obsługi przerwania int InterruptAttach(int itnr, const struct sigevent *(* handler)(void*, int), const void *area, int size, unsigned flags) Gdzie: intr Numer przerwania handler Wskaźnik na procedurę obsługi przerwania (handler) area Adres obszaru komunikacji handlera z programem size Wielkość obszaru komunikacji handlera z programem flags Flagi
10 Jedrzej Ułasiewicz Komputerowe systemy sterowania 10 Wykonanie funkcji spowoduje zainstalowanie funkcji handler() określonej jako drugi parametr, do obsługi przerwania o numerze intr, podanej jako pierwszy parametr funkcji. Parametr trzeci i czwarty dotyczą obszaru komunikacyjnego pomiędzy wątkiem a handlerem. Przed wykonaniem funkcji należy zażądać prawa wykonania operacji wejścia wyjścia poprzez wykonanie funkcji: ThreadCtl(_NTO_TCTL_IO,0) Działanie procedury obsługi przerwań jest modyfikowane przez flagi: _NTO_INTR_FLAGS_END - nowy handler dopisany będzie na końcu łańcucha i wykona się jako ostatni. _NTO_INTR_FLAGS_PROCESS system kojarzy handler z procesem a nie z wątkiem. Handler będzie deinstalowany gdy kończy się proces a nie wątek. Procedura obsługi przerwania Handler jest funkcją o następującym prototypie: const struct sigevent* handler(void* area, int id) Handler może zwracać albo stałą NULL albo wskaźnik do prawidłowo zadeklarowanej i zainicjowanej struktury typu sigvent. 1. Gdy procedura obsługi przerwania zwraca NULL to nie powoduje to dalszych działań. 2. Gdy procedura obsługi przerwania zwraca wskaźnik do struktury typu sigvent to generowane jest zdarzenie wyspecyfikowane w strukturze sigevent. Zapoczątkowana może być jedna z trzech akcji: Zdarzenie powodujące odblokowanie wątku Wygenerowanie impulsu Wygenerowanie sygnału
11 Jedrzej Ułasiewicz Komputerowe systemy sterowania 11 Gdy handler przerwania generuje zdarzenie, to zdarzenie to powinno prowadzić do odblokowania pewnego procesu lub wątku. Żądany typ zdarzenia zależy od zainicjowania struktury sigevent. 1. Gdy przerwanie ma odblokować wątek zawieszony na funkcji InterruptWait() to zdarzenie powinno być typu SIGEV_INTR. 2. Gdy przerwanie ma odblokować wątek zablokowany na funkcji MsgReceive() to zdarzenie powinno być typu SIGEV_PULSE. W tym przypadku wątek może odbierać także komunikaty. 3. Możliwe jest także zainicjowanie struktury sigevent na zdarzenia typu SIGEV_SIGNAL, SIGEV_SIGNAL_CODE, SIGEV_SIGNAL_THREAD, SIGEV_THREAD. Ze względu na mniejszą efektywność nie jest to zalecane. Przy tworzeniu procedur obsługi przerwań należy przestrzegać zasad: 1. Rozmiar stosu którym dysponuje procedura obsługi przerwania jest ograniczony. Stąd nie powinna ona zawierać dużych tablic czy innych struktur danych. Bezpiecznie jest przyjąć że dostępny rozmiar stosu wynosi około 200 bajtów. 2. Procedura obsługi przerwań wykonywana jest asynchronicznie z wątkami należącymi do pewnego procesu i używa wspólnych z nimi danych. Wszystkie zmienne modyfikowane przez handler powinny być poprzedzone słowem kluczowym volatile (aby kompilator nie umieszczał ich w rejestrach), a ich modyfikacja wewnątrz wątków zabezpieczona przez zablokowanie przerwań lub spinlock. 3. Procedura obsługi przerwania wykonywana jest poza normalnym szeregowaniem więc powinna być tak krótka jak to tyko możliwe. Jeżeli wymagane jest wykonanie czasochłonnych czynności to powinny być one wykonane w procesie lub wątku który zostanie prze handler odblokowany. 4. Procedura obsługi przerwania nie może wywoływać żadnych funkcji systemowych z wyjątkiem niektórych wyraźnie dozwolonych funkcji.
12 Jedrzej Ułasiewicz Komputerowe systemy sterowania 12 Oczekiwanie na przerwanie Kończący się handler może wygenerować zdarzenie SIGEV_INTR. Zdarzenie to może odblokować oczekujący na przerwanie wątek. Funkcją która blokuje wątek w oczekiwaniu na przerwanie jest funkcja InterruptWait(). InterruptWait oczekiwanie na przerwanie int InterruptWait(int flags, iunt_64 *timeout) flags - Flagi należy przyjąć 0 timeout - Maksymalny okres oczekiwania obecnie należy przyjąć NULL Funkcja powoduje zablokowanie wątku bieżącego w oczekiwaniu na przerwanie. Funkcja zwraca 1 gdy błąd. InterruptDetach deinstalacja handlera przerwania int InterruptDetach(int id) id - Identyfikator zwracany przez funkcję InterruptAttach() i InterruptAttachEvent()
13 Jedrzej Ułasiewicz Komputerowe systemy sterowania 13 // Obsluga przerwania zegarowego #include <sys/neutrino.h> #define TIME_INT 0 struct sigevent event; int icnt = 0; int intid = 0; int sec = 0; const struct sigevent *handler(void *arg, int id) { icnt++; if(icnt == 1000) { icnt = 0; intid = id; sec++; return(&event); else return(null); main() { int res,i,sec = 0; i = 0; printf("program startuje \n"); event.sigev_notify = SIGEV_INTR; ThreadCtl( _NTO_TCTL_IO, 0 ); res = InterruptAttach(TIME_INT, &handler,null,0,0); printf("handler zaininstalowany: %d \n",res); do { InterruptWait(0,NULL); printf("przerwanie: %d %d %d\n",sec,i,intid); i++; while(sec<60); InterruptDetach(res); Przykład 2-1 Obsługa przerwania zegarowego
14 Jedrzej Ułasiewicz Komputerowe systemy sterowania Transformacja przerwania w zdarzenie Czynności wykonywane w ramach ISR nie podlegają szeregowaniu. W kodzie handlera wykonać można tylko niezbędny zakres czynności a następnie powiadomić pewien wątek o zaistnieniu przerwania a wątek ten wykona resztę pracy. W kodzie procedury obsługi przerwania wykonać należy tylko niezbędne czynności a następnie powiadomić pewien wątek o wystąpieniu przerwania. Wątek ten wykona resztę pracy. Obsługa zdarzeń w QNX6 Neutrino: 1. Wszystkie czynności wykonywane są przez procedurę obsługi przerwania. 2. Wewnątrz procedury obsługi przerwania wykonane będą najważniejsze czynności a resztę pracy wykona odblokowany specjalnie wątek. 3. Wewnątrz procedurę obsługi przerwania nie są wykonywane żadne czynności a jedyną jego funkcją jest odblokowanie pewnego wątku. W pierwszym przypadku programista pisze procedurę obsługi przerwania i kojarzy ją z przerwaniem wykorzystując funkcję InterruptAttach(). W drugim przypadku postępowanie jest analogiczne jak w przypadku pierwszym z ta różnicą że na zakończenie handler zwraca zainicjowane odpowiednio zdarzenie w postaci struktury typu sigevent. Gdy handler zwróci takie zdarzenie to skojarzony z nim wątek będzie odblokowany. W trzecim przypadku nie ma potrzeby w ogóle potrzeby pisania handlera. W funkcji InterruptAttachEvent() specyfikuje się numer przerwania i rodzaj zdarzenia na które to przerwanie ma być transformowane.
15 Jedrzej Ułasiewicz Komputerowe systemy sterowania 15 Czas wątek procedura obsługi przerwania wątek obsługi przerwania ISR event przerwanie odblokowanie wątku Rys. 2-2 Procedura obsługi przerwania wykonuje część pracy a następnie odblokowuje wątek wątek wątek obsługi przerwania event przerwanie Czas odblokowanie wątku Rys. 2-3 Przerwanie zamieniane w zdarzenie które event odblokowuje wątek. InterruptAttachEvent transformacja przerwania w zdarzenie int InterruptAttachEvent(int itnr,const struct sigevent *event,unsigned flags) Gdzie: intr event Flags - Numer przerwania - Wskaźnik na strukturę opisu zdarzenia które ma być wygenerowane gdy nadejdzie przerwanie - Flagi
16 Jedrzej Ułasiewicz Komputerowe systemy sterowania 16 #include <sys/neutrino.h> #define TIME_INT 0 struct sigevent event; main() { int res, i = 0; i = 0; printf("program startuje \n"); ThreadCtl(_NTO_TCTL_IO,0); SIGEV_INTR_INIT(&event); res = InterruptAttachEvent(TIME_INT, &event, _NTO_INTR_FLAGS_END); if(res < 0) { perror("install"); exit(0); printf("handler zaininstalowany: %d \n",res); InterruptUnmask (TIME_INT, res); do { printf("czekam\n"); InterruptWait(0,NULL); printf("przerwanie: %d \n",i); InterruptUnmask (TIME_INT, res); i++; while(i <10); InterruptDetach(res); printf("koniec\n"); Przykład 2-2 Obsługa przerwania zegarowego za pomocą zdarzenia
17 Jedrzej Ułasiewicz Komputerowe systemy sterowania Obsługa przetwornika AD/DA karty PCM 3718 w trybie przerwań Obsługa przetwornika AD w trybie odpytywania posiada wady: odpytywanie statusu przetwornika powoduje utratę czasu procesora. trudno jest uzyskać precyzyjnie określony moment wyzwolenia przetwornika. Jeżeli chcemy odczytywać wartości z przetwornika AD w ściśle określonych momentach czasu do wyzwalania przetwornika należy użyć liczników układu 8254 które generują impulsy wyzwalające konwersję. Zakończenie konwersji sygnalizowane jest przerwaniem. Programowanie karty: Ustalenie trybu sygnalizowania końca konwersji i wyzwalania Ustalenie współczynnika podziału liczników Ustawienie rejestrów sterujących: B7 B6 B5 B4 B3 B2 B1 B0 BASE+9 INTE I2 I1 I0 - DMAE ST1 ST Tabela 3-1 Zawartość rejestru sterującego karty PCM-3718 w trybie przerwań INTE = 1 zakończenie konwersji sygnalizowane przerwaniem Bity B6-B4 numer przerwania Bity B1 i B0 wyzwalanie konwersji z liczników układu 8254 TC0=0 TC0=1 B7 B6 B5 B4 B3 B2 B1 B0 BASE TC1 TC0 Tabela 3-2 Rejestr TIMR konfiguracji liczników układ wyzwalania jest stale włączony włączony jest wtedy, gdy wejście TRIG0 ma poziom wysoki.
18 Jedrzej Ułasiewicz Komputerowe systemy sterowania 18 TC1=0 licznik 0 zlicza impulsy podawane z zewnętrznego źródła TC1=1 to podłączony jest do wewnętrznego źródła 1000 KHz Programowanie liczników układu 8254: BASE+12 Licznik 0 (odczyt/zapis) BASE+13 Licznik 1 (odczyt/zapis) BASE+14 Licznik 2 (odczyt/zapis) BASE+15 Słowo sterujące Tabela 3-3 Rejestry układu licznikowego 8254 Proces główny: Inicjuje kartę poprzez wykonanie funkcji card_init(), Ustawia stopień podziału liczników funkcją pcl_counter(20,10), Ustawia zakres przemiatanych kanałów - funkcja pcl_mux(0,0). Inicjuje zdarzenie event Wykonuje funkcję InterruptAttach(ADC_INT,handler,NULL,0,0). Funkcja ta instaluje handler przerwania ADC_INT Odmaskowuje przerwania InterruptUnmask(ADC_INT,id); Obsługa przerwania funkcja handler: 1. Odczyt młodszego i starszego bajtu wyniku z rejestrów BASE i BASE+1. Złożenie wartości razem. 2. Wpis uzyskane z przetwornika AD wartości do bufora cyklicznego. 3. Przekazanie odczytanej wartości na przetwornik DA pisz_da(val) 4. Wyświetlenie wartości na linijce diodowej led_disp(val); 5. Skasowanie przerwania przez zapis do rejestru BASE+8. Program odczytuje wartość analogową z przetwornika AD i przekazuje ją na przetwornik DA. Jest to podstawa do realizacji algorytmów DSP.
19 Jedrzej Ułasiewicz Komputerowe systemy sterowania 19 // System QNX Neutrino // Karta PCM przetwornik AD - tryb przerwan // (C) Jedrzej Ulasiewicz 2010 // Przerwanie AD - 5 Odblokowac w BIOS plyty gdy zablokowane // Przetwornik DA na plycie PCM3718HO, pin 19 złącza P1 analog #include <sys/neutrino.h> #include <hw/inout.h> #include <sys/mman.h> #include <stdint.h> #include <stdio.h> #include <stdlib.h> #define ADRB 0x300 // Adres bazowy karty #define ADL 0 // Mlodszy bajt AD + kanal #define ADH 1 // Starszy #define RANGE 1 // Wzmocnienie kanalu #define MUXR 2 // Kanal konc i pocz #define DALO 4 // Mlodszy bajt DA #define DAHI 5 // Starszy bajt DA #define STATR 8 // Rejestr statusu #define CONTR 9 // Rejestr sterujacy #define TIMR 10 // Start timera #define DIOH 11 #define COUNT0 12 // Licznik 0 #define COUNT1 13 // Licznik 1 // Wyjscia cyfrowe #define COUNT2 14 // Licznik 3 #define COUNTC 15 // Rej. ster. licznikow // Adres bazowy karty static int base = ADRB; #define BSIZE 1000 #define ADC_INT 5 // Przerwanie karty static short int buf[bsize]; volatile int head,tail,count, id, cnt = 0; // struct sigevent event; uintptr_t port; void card_init(void ) { // Inicjalizacja karty // from - kanal poczatkowy, to kanal koncowy unsigned char val1,val2 ; // INT, IRQ5, DMAE = 0, wyzw z 8 MUXR 54 val1 = 0xD3; out8(base + CONTR, val1); val2 = in8(base + CONTR ); if(val2!= val1) { printf("blad inicjalizacji karty\n");
20 Jedrzej Ułasiewicz Komputerowe systemy sterowania 20 exit(0); printf("status:%x Control: %x \n",val1,val2); // Pacer enable out8(base + TIMR, 0x01); // INTE I2 I1 I0 X DMA ST1 ST0 // out8(base + CONTR, 0xD3); void set_range(int from, int to, unsigned char zakres) // Ustawienie wzmocnienia kanalow karty // from - kanal poczatkowy, to kanal koncowy // zakr pom 0-10 V -> 4, 0-5V -> 5, > 6, > 7 { int i; for(i = from; i<= to; i++) { out8(base + MUXR, i); out8(base + RANGE,zakres); void pcl_counter(int l1, int l2) { // Programowanie licznikow // licznik 1 out8(base + COUNTC, 0x74) ; out8(base + COUNT1, l1 & 0xFF); out8(base + COUNT1, l1 >> 8); // licznik 2 out8(base + COUNTC, 0xB4) ; out8(base + COUNT2, l2 & 0xFF); out8(base + COUNT2, l2 >> 8); void pcl_mux(int first, int last) { out8(base + MUXR, (last << 4) (first & 0x0F));
21 Jedrzej Ułasiewicz Komputerowe systemy sterowania 21 void pisz_da(unsigned short int x) // Zapis kanalu DA { unsigned short int yh,yl; unsigned short int y; y = x; y = y & 0x0FFF; yl = (y & 0x0F); yl = yl << 4; yh = y >> 4; out8(base + DALO,yl); out8(base + DAHI, yh); void led_disp(unsigned short int val) { unsigned short int y; y = val >> 9; out8(base + DIOH,0xFF>>(7-y)); // struct sigevent event; volatile int icnt = 0; int intid = 0; int sec = 0; const struct sigevent *handler(void *arg, int id) // Handler obslugi przerwania { unsigned short int chn, val,ah,al; unsigned int xh,xl; // Odczyt wart. pomiarowych al = in8(base + ADL); ah = in8(base + ADH); chn = al & 0x0F; xh = ah << 4; xl = al >> 4; val = xh + xl; icnt++; // Zapis do bufora cykliczneho buf[head] = val; head = (head+1) %BSIZE; cnt++; // Wyswietlenie na linijce diodowej led_disp(val); pisz_da(val); // Skasowanie przerwania out8(base + STATR, 0x00); return(null);
22 Jedrzej Ułasiewicz Komputerowe systemy sterowania 22 int main() { int id; time_t t1,t2; printf("start watku odczyt\n"); ThreadCtl( _NTO_TCTL_IO, 0 ); port = mmap_device_io(16,base); printf("port %x\n",port); // Inicjacja trybu pracy karty card_init(); // Ustawienie zakresu kanalow pcl_mux(0,0); // Ustawienie zakresu pomiarowego -- set_range(0,0,5); // Ustawienie czestotliwosci licznikowpcl_counter(10,100); id = InterruptAttach(ADC_INT,handler,NULL,0,0); if(id < 0) { perror("install"); exit(0); printf("handler zaininstalowany: %d \n",id); t1 = time(null); // Skasowanie przerwania out8(base + STATR,0x00); // Odmaskowanie przerwania InterruptUnmask(ADC_INT,id); do { printf("icnt: %d cnt: %d\n",icnt,cnt); sleep(1); while(icnt < 10000); InterruptMask(ADC_INT,id); InterruptDetach(id); t2 = time(null); t2 = t2 -t1; printf("pomiarow %d czas %d sek \n",icnt,t2); printf("koniec\n"); return 0; Przykład 3-1 Obsługa przetwornika AD w trybie przerwań
23 Jedrzej Ułasiewicz Komputerowe systemy sterowania 23 analogowy sygnal wejsciowy bufor analogowy sygnal wyjsciowy Przetwornik A/D algorytm DSP sygnal cyfrowy Przetwornik D/A Rys. 3-1 Zasada cyfrowego przetwarzania sygnałów DSP Drugi program demonstruje podejście z wykorzystaniem transformacji przerwania w zdarzenie. Proces główny: Inicjuje kartę poprzez wykonanie funkcji card_init(), Ustawia stopień podziału liczników funkcją pcl_counter(20,10), Ustawia zakres przemiatanych kanałów - funkcja pcl_mux(0,0). Inicjuje zdarzenie event Wykonuje funkcję InterruptAttachEvent(ADC_INT,&event,0). Funkcja ta transformuje przerwanie ADC_INT w zdarzenie event. Obsługa przerwania: 1. Skasowanie przerwania przez zapis do rejestru BASE Odczyt młodszego i starszego bajtu wyniku z rejestrów BASE i BASE+1. Złożenie wartości razem. 3. Wpis uzyskane z przetwornika AD wartości do bufora cyklicznego. 4. Przekazanie odczytanej wartości na przetwornik DA pisz_da(val) 5. Wyświetlenie wartości na linijce diodowej led_disp(val); 6. Odmaskowanie przerwania ADC_INT. 7. Oczekiwanie na kolejne przerwanie.
24 Jedrzej Ułasiewicz Komputerowe systemy sterowania 24 // System QNX Neutrino // Karta PCM przetwornik AD - tryb przerwan // (C) Jedrzej Ulasiewicz 2010 // Przerwanie AD - 5 Odblokowac w BIOS plyty gdy zablokowane // Przetwornik DA na plycie PCM3718HO, pin 19 złącza P1 analog #include <sys/neutrino.h> #include <hw/inout.h> #include <sys/mman.h> #include <pthread.h> #include <stdint.h> #include <stdio.h> #include <stdlib.h> #define ADRB 0x300 // Adres bazowy karty #define ADL 0 // Mlodszy bajt AD + kanal #define ADH 1 // Starszy bajt #define RANGE 1 // Wzmocnienie kanalu #define MUXR 2 // Kanal konc i pocz #define DALO 4 // Mlodszy bajt DA #define DAHI 5 // Starszy bajt DA #define STATR 8 // Rejestr statusu #define CONTR 9 // Rejestr sterujacy #define TIMR 10 // Start timera #define DIOH 11 // Wyjscia cyfrowe #define COUNT0 12 // Licznik 0 #define COUNT1 13 // Licznik 1 #define COUNT2 14 // Licznik 3 #define COUNTC 15 // Rej. ster. licznikow #define ADC_INT 5 // Przerwanie karty PCM3718 #define BSIZE 1000 static int base = ADRB; // Adres bazowy karty static short int buf[bsize]; int head,tail,count, id, cnt = 0; struct sigevent event; uintptr_t port;
25 Jedrzej Ułasiewicz Komputerowe systemy sterowania 25 int card_init(void ) { // Inicjalizacja karty // from - kanal poczatkowy, to kanal koncowy unsigned char val1,val2 ; // INT, IRQ5, DMAE = 0, wyzw z 8 MUXR 54 val1 = 0xD3; out8(base + CONTR, val1); val2 = in8(base + CONTR ); if(val2!= val1) { printf("blad inicjalizacji karty\n"); exit(0); printf("status:%x Control: %x \n",val1,val2); // Pacer enable out8(base + TIMR, 0x01); // INTE I2 I1 I0 X DMA ST1 ST0 // out8(base + CONTR, 0xD3); void set_range(int from, int to, unsigned char zakres) // Ustawienie wzmocnienia kanalow karty // from - kanal poczatkowy, to kanal koncowy // zakr. pom 0-10 V -> 4, 0-5V -> 5, > 6, > 7 { int i; for(i = from; i<= to; i++) { out8(base + MUXR, i); out8(base + RANGE,zakres); int pcl_counter(int l1, int l2) // Programowanie licznikow // Czestotliwosc przerwan = /(l1 * l2) Hz { // licznik 1 out8(base + COUNTC, 0x74) ; out8(base + COUNT1, l1 & 0xFF); out8(base + COUNT1, l1 >> 8); // licznik 2 out8(base + COUNTC, 0xB4) ; out8(base + COUNT2, l2 & 0xFF); out8(base + COUNT2, l2 >> 8); int pcl_mux(int first, int last) // Kanal poczatkowy I koncowy
26 Jedrzej Ułasiewicz Komputerowe systemy sterowania 26 { out8(base + MUXR, (last << 4) (first & 0x0F)); void pisz_da(unsigned short int x) // Zapis kanalu DA { unsigned short int yh,yl; unsigned short int y; y = x; y = y & 0x0FFF; yl = (y & 0x0F); yl = yl << 4; yh = y >> 4; out8(base + DALO,yl); out8(base + DAHI, yh); led_disp(unsigned short int val) // Wyswietlanie linijka LED { unsigned short int y; y = val >> 9; out8(base + DIOH,0xFF>>(7-y)); main() { int id, tid,i = 0; unsigned short int x, chn, val,ah,al,y; unsigned int xh,xl; printf("start odczyt\n"); ThreadCtl( _NTO_TCTL_IO, 0 ); port = mmap_device_io(16,base); printf("port %x\n",port); // Inicjacja trybu pracy karty card_init(); // Ustawienie zakresu kanalow pcl_mux(0,0); // Ustawienie zakresu pomiarowego -- set_range(0,0,5); // Ustawienie czestotliwosci licznikowpcl_counter(200,100); SIGEV_INTR_INIT(&event); id = InterruptAttachEvent(ADC_INT, &event,0); if(id < 0) { perror("install"); exit(0); printf("handler zaininstalowany: %d \n",id);
27 Jedrzej Ułasiewicz Komputerowe systemy sterowania 27 do { // Skasowanie przerwania out8(base + STATR, 0x00); // Odczyt wart. pomiarowych al = in8(base + ADL); ah = in8(base + ADH); chn = al & 0x0F; xh = ah << 4; xl = al >> 4; val = xh + xl; printf(" cnt: %3d kan: %d val: %d \n",cnt, chn,val); // Zapis do przetwornika DA pisz_da(val); // Zapis do bufora cykliczneho buf[head] = val; head = (head+1) %BSIZE; cnt++; // Wyswietlenie na linijce diodowej led_disp(val); InterruptUnmask(ADC_INT,id); // Oczekiwanie na przerwanie ---- InterruptWait(NULL,NULL); while(cnt < 10000); Przykład 3-2 Obsługa przetwornika AD karty PCM-3718 w trybie transformacji przerwań w zdarzenie
28 Jedrzej Ułasiewicz Komputerowe systemy sterowania 28 Program można ulepszyć składując odczytane dane w pamięci dzielonej w buforze cyklicznym przerwanie Konsument cnt proces obsugi przetw. AD wspólne dane Przetwornik A/D tail bufor buf segment pamięci dzielonej head Rys. 3-1 Aplikacja obsługi przetwornika AD w trybie przerwań, wyniki w pamięci dzielonej
Jedrzej Ułasiewicz Komputerowe systemy sterowania 1
Jedrzej Ułasiewicz Komputerowe systemy sterowania 1 1 Przerwania 1.1 Obsługa zdarzeń, odpytywanie i przerwania Obsługa zdarzeń jest jedną z kluczowych funkcji w prawie każdym systemie czasu rzeczywistego.
1. Obsługa przerwań w systemie QNX6 Neutrino
Jedrzej Ułasiewicz Komputerowe systemy sterowania 1 1. Obsługa przerwań w systemie QNX6 Neutrino Funkcje konieczne do obsługiwania przerwań: funkcje blokowania przerwań (wszystkich lub pojedynczych) w
Dołączanie urządzeń do komputera - karta interfejsowa PCM-3718
Dołączanie urządzeń do komputera - karta interfejsowa PCM-3718 1. Dołączanie urządzeń do komputera Istnieją dwa podstawowe sposoby podłączenia urządzeń zewnętrznych do komputera. Bezpośrednio do magistrali
PRZERWANIA. 1. Obsługa zdarzeń, odpytywanie i przerwania Obsługa zdarzeń jest jedną z kluczowych funkcji w prawie każdym systemie czasu rzeczywistego.
PRZERWANIA 1. Obsługa zdarzeń, odpytywanie i Obsługa zdarzeń jest jedną z kluczowych funkcji w prawie każdym systemie czasu rzeczywistego. Istnieją dwie metody pozyskania informacji o zdarzeniach: 1. Cykliczne
Dołączanie urządzeń do komputera - karta interfejsowa PCM-3718
Dołączanie urządzeń do komputera - karta interfejsowa PCM-3718 1. Dołączanie urządzeń do komputera Istnieją dwa podstawowe sposoby podłączenia urządzeń zewnętrznych do komputera. Bezpośrednio do magistrali
Dołączanie urządzeń do komputera - karta interfejsowa PCM-3718
Dołączanie urządzeń do komputera - karta interfejsowa PCM-3718 1. Dołączanie urządzeń do komputera Istnieją dwa podstawowe sposoby podłączenia urządzeń zewnętrznych do komputera. Bezpośrednio do magistrali
PRZERWANIA. P1 - Procedura obslugi przerwania. Obsługa zdarzenia Z1 poprzez procedurę obsługi przerwania P1
PRZERWANIA 1. Obsługa zdarzeń poprzez Obsługa polega na przerwaniu aktualnie wykonywanego procesu i wykonaniu procedury przypisanej danemu zdarzeniu gdy takie zdarzenie zajdzie. Procedura nazywa się procedurą
PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO
PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO LABORATORIUM Temat: QNX Neutrino Interrupts Mariusz Rudnicki 2016 Wstęp W QNX Neutrino wszystkie przerwania sprzętowe przechwytywane są przez jądro systemu. Obsługę
Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.2
Mariusz Rudnicki mariusz.rudnicki@eti.pg.gda.pl PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.2 Architektura - Procesy Proces program załadowany do pamięci; identyfikowany przez id procesu, zwykle nazywany
QNX Neutrino (v 6.3)
QNX Neutrino (v 6.3) System operacyjny czasu rzeczywistego Wielozadaniowy, architektura z mikrojądrem API zgodne ze standardem POSIX Rozproszony, przezroczysta praca w sieci Mechanizmy wykrywania/tolerowania
1. Timery i zdarzenia
J. Ułasiewicz Komputerowe systemy sterowania 1 1. Timery i zdarzenia 1.1 Funkcje i programowanie timerów Jedną z najczęściej spotykanych funkcji systemu czasu rzeczywistego jest generowanie zdarzeń które
1. Tworzenie nowego projektu.
Załącznik do Instrukcji 1. Tworzenie nowego projektu. Wybieramy opcję z menu głównego New->QNX C Project. Wprowadzamy nazwę przechodzimy do następnego kroku NEXT. Wybieramy platformę docelową oraz warianty
Mariusz Rudnicki PROGRAMOWANIE WSPÓŁBIEŻNE I SYSTEMY CZASU RZECZYWISTEGO CZ.2
Mariusz Rudnicki mariusz.rudnicki@eti.pg.edu.pl PROGRAMOWANIE WSPÓŁBIEŻNE I SYSTEMY CZASU RZECZYWISTEGO CZ.2 Architektura SCR - Procesy Proces program załadowany do pamięci; identyfikowany przez id procesu,
Mikroprocesor Operacje wejścia / wyjścia
Definicja Mikroprocesor Operacje wejścia / wyjścia Opracował: Andrzej Nowak Bibliografia: Urządzenia techniki komputerowej, K. Wojtuszkiewicz Operacjami wejścia/wyjścia nazywamy całokształt działań potrzebnych
Podstawy Informatyki Układ przerwań
maszyny W Podstawy Informatyki alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu maszyny W 1 Wprowadzenie Przerwania we współczesnych procesorach Rodzaje systemów przerwań Cykl rozkazowy
5. Model komunikujących się procesów, komunikaty
Jędrzej Ułasiewicz str. 1 5. Model komunikujących się procesów, komunikaty Obecnie stosuje się następujące modele przetwarzania: Model procesów i komunikatów Model procesów komunikujących się poprzez pamięć
1 Timery i zdarzenia
J. Ułasiewicz Komputerowe systemy sterowania 1 1 Timery i zdarzenia 1.1 Funkcje i programowanie timerów Jedną z najczęściej spotykanych funkcji systemu czasu rzeczywistego jest generowanie zdarzeń które
Metody obsługi zdarzeń
SWB - Przerwania, polling, timery - wykład 10 asz 1 Metody obsługi zdarzeń Przerwanie (ang. Interrupt) - zmiana sterowania, niezależnie od aktualnie wykonywanego programu, spowodowana pojawieniem się sygnału
Przerwania, polling, timery - wykład 9
SWB - Przerwania, polling, timery - wykład 9 asz 1 Przerwania, polling, timery - wykład 9 Adam Szmigielski aszmigie@pjwstk.edu.pl SWB - Przerwania, polling, timery - wykład 9 asz 2 Metody obsługi zdarzeń
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
9. Problem wzajemnego wykluczania i sekcji krytycznej
J. Ułasiewicz Programowanie aplikacji współbieżnych 1 9. Problem wzajemnego wykluczania i sekcji krytycznej 9.1 Przeplot i współużywalność zasobów Wyróżniamy dwa rodzaje zasobów: 1. Zasoby współużywalne
7. Szeregowanie procesów w systemie QNX6 Neutrino
J. Ułasiewicz Programowanie aplikacji współbieżnych 1 7. Szeregowanie procesów w systemie QNX6 Neutrino 7.1 PRIORYTETY Każdy z procesów wykonywanych w systemie RTS ma przyporządkowany priorytet. W systemie
1. Timery i zdarzenia
Sygnały 1 1. Timery i zdarzenia 1.1 Funkcje i programowanie timerów Jedną z najczęściej spotykanych funkcji systemu jest generowanie zdarzeń które w ustalonym czasie uruchomić mają określone akcje systemu.
Podstawy techniki cyfrowej Układy wejścia-wyjścia. mgr inż. Bogdan Pietrzak ZSR CKP Świdwin
Podstawy techniki cyfrowej Układy wejścia-wyjścia mgr inż. Bogdan Pietrzak ZSR CKP Świdwin 1 Układem wejścia-wyjścia nazywamy układ elektroniczny pośredniczący w wymianie informacji pomiędzy procesorem
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska Współpraca z układami peryferyjnymi i urządzeniami zewnętrznymi Testowanie programowe (odpytywanie, przeglądanie) System przerwań Testowanie programowe
Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych
Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych B.1. Dostęp do urządzeń komunikacyjnych Sterowniki urządzeń zewnętrznych widziane są przez procesor jako zestawy rejestrów
4. Procesy pojęcia podstawowe
4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa
Mechanizmy pracy równoległej. Jarosław Kuchta
Mechanizmy pracy równoległej Jarosław Kuchta Zagadnienia Algorytmy wzajemnego wykluczania algorytm Dekkera Mechanizmy niskopoziomowe przerwania mechanizmy ochrony pamięci instrukcje specjalne Mechanizmy
LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Przetwornik ADC procesora sygnałowego F/C240 i DAC C240 EVM
LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ Przetwornik ADC procesora sygnałowego F/C240 i DAC C240 EVM Strona 1 z 7 Opracował mgr inż. Jacek Lis (c) ZNE 2004 1.Budowa przetwornika ADC procesora
Architektura systemu komputerowego. Działanie systemu komputerowego. Przerwania. Obsługa przerwań (Interrupt Handling)
Struktury systemów komputerowych Architektura systemu komputerowego Działanie systemu komputerowego Struktura we/wy Struktura pamięci Hierarchia pamięci Ochrona sprzętowa Architektura 2.1 2.2 Działanie
Architektura komputerów
Architektura komputerów Tydzień 11 Wejście - wyjście Urządzenia zewnętrzne Wyjściowe monitor drukarka Wejściowe klawiatura, mysz dyski, skanery Komunikacyjne karta sieciowa, modem Urządzenie zewnętrzne
Programowanie mikrokontrolerów AVR z rodziny ATmega.
Programowanie mikrokontrolerów AVR z rodziny ATmega. Materiały pomocnicze Jakub Malewicz jakub.malewicz@pwr.wroc.pl Wszelkie prawa zastrzeżone. Kopiowanie w całości lub w częściach bez zgody i wiedzy autora
Część I - Sterownik przerwań 8259A i zegar/licznik 8253
Programowanie na poziome sprzętu opracowanie pytań Część I - Sterownik przerwań 8259A i zegar/licznik 8253 Autor opracowania: Marcin Skiba cines91@gmail.com 1. Jakie są dwie podstawowe metody obsługi urządzeń
Kolejki komunikatów POSIX
Jędrzej Ułasiewicz IIAiR Politechnika Wrocławska 1 Kolejki komunikatów POSIX 1 Wstęp Kolejka komunikatów Q posiada następujące własności: - Posiada określoną pojemność N komunikatów (długość bufora komunikatów).
ĆWICZENIE 5. TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM
ĆWICZENIE 5 TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM Wiadomości wstępne: Port szeregowy może pracować w czterech trybach. Tryby różnią się między sobą liczbą bitów
Architektura systemów komputerowych. dr Artur Bartoszewski
Architektura systemów komputerowych dr Artur Bartoszewski Układy we/wy jak je widzi procesor? Układy wejścia/wyjścia Układy we/wy (I/O) są kładami pośredniczącymi w wymianie informacji pomiędzy procesorem
ĆWICZENIE. TEMAT: OBSŁUGA PRZETWORNIKA A/C W ukontrolerze 80C535 KEILuVISON
ĆWICZENIE TEMAT: OBSŁUGA PRZETWORNIKA A/C W ukontrolerze 80C535 KEILuVISON Wiadomości wstępne: Wszystkie sygnały analogowe, które mają być przetwarzane w systemach mikroprocesorowych są próbkowane, kwantowane
interfejs szeregowy wyświetlaczy do systemów PLC
LDN SBCD interfejs szeregowy wyświetlaczy do systemów PLC SEM 08.2003 Str. 1/5 SBCD interfejs szeregowy wyświetlaczy do systemów PLC INSTRUKCJA OBSŁUGI Charakterystyka Interfejs SBCD w wyświetlaczach cyfrowych
Mikrokontroler ATmega32. System przerwań Porty wejścia-wyjścia Układy czasowo-licznikowe
Mikrokontroler ATmega32 System przerwań Porty wejścia-wyjścia Układy czasowo-licznikowe 1 Przerwanie Przerwanie jest inicjowane przez urządzenie zewnętrzne względem mikroprocesora, zgłaszające potrzebę
Start Bity Bit Stop 1 Bit 0 1 2 3 4 5 6 7 Par. 1 2. Rys. 1
Temat: Obsługa portu komunikacji szeregowej RS232 w systemie STRC51. Ćwiczenie 2. (sd) 1.Wprowadzenie do komunikacji szeregowej RS232 Systemy bazujące na procesorach C51 mogą komunikować się za pomocą
4 Transmisja szeregowa, obsługa wyświetlacza LCD.
1 4 Transmisja szeregowa, obsługa wyświetlacza LCD. Zagadnienia do przygotowania: - budowa i działanie interfejsu szeregowego UART, - tryby pracy, - ramka transmisyjna, - przeznaczenie buforów obsługi
Hardware mikrokontrolera X51
Hardware mikrokontrolera X51 Ryszard J. Barczyński, 2016 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku wewnętrznego Hardware mikrokontrolera X51 (zegar)
Program jest więc strukturą statyczną zapisaną na jakimś nośniku. Natomiast proces jest wykonującym się programem.
J. Ułasiewicz Programowanie aplikacji współbieżnych 1 1 Podstawowe definicje i pojęcia współbieżności 1.1 Motywacja Przewiduje się że w dalszej perspektywie głównym motorem wzrostu mocy przetwarzania komputerów
4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD.
13 4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD. Zagadnienia do przygotowania: - budowa i działanie interfejsu szeregowego UART, - tryby pracy,
XMEGA. Warsztaty CHIP Rok akademicki 2014/2015
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):
J. Ułasiewicz Komputerowe systemy sterowania 1. 1 Architektura PC Ogólna struktura systemu jednoprocesorowego
J. Ułasiewicz Komputerowe systemy sterowania 1 1 Architektura PC 1.1. Ogólna struktura systemu jednoprocesorowego Już systemy jednoprocesorowe mogą być środowiskiem, w którym wykonywane jest wiele programów
CZAS 1. Układy pomiaru czasu w komputerze PC
J. Ułasiewicz Programowanie aplikacji współbieżnych 1 CZAS 1. Układy pomiaru czasu w komputerze PC W typowym komputerze PC do pomiaru czasu przeznaczone są układy: 1. Podtrzymywany zegar czasu rzeczywistego
Architektura komputerów. Układy wejścia-wyjścia komputera
Architektura komputerów Układy wejścia-wyjścia komputera Wspópraca komputera z urządzeniami zewnętrznymi Integracja urządzeń w systemach: sprzętowa - interfejs programowa - protokół sterujący Interfejs
Szkolenia specjalistyczne
Szkolenia specjalistyczne AGENDA Programowanie mikrokontrolerów w języku C na przykładzie STM32F103ZE z rdzeniem Cortex-M3 GRYFTEC Embedded Systems ul. Niedziałkowskiego 24 71-410 Szczecin info@gryftec.com
PROCESORY SYGNAŁOWE - LABORATORIUM. Ćwiczenie nr 03
PROCESORY SYGNAŁOWE - LABORATORIUM Ćwiczenie nr 03 Obsługa portu szeregowego, układu kodeka audio i pierwsze przetwarzanie sygnałów (cyfrowa regulacja głośności) 1. Konfiguracja układu szeregowego portu
Wskaźniki. Informatyka
Materiały Wskaźniki Informatyka Wskaźnik z punktu widzenia programisty jest grupą komórek pamięci (rozmiar wskaźnika zależy od architektury procesora, najczęściej są to dwa lub cztery bajty ), które mogą
Pośredniczy we współpracy pomiędzy procesorem a urządzeniem we/wy. W szczególności do jego zadań należy:
Współpraca mikroprocesora z urządzeniami zewnętrznymi Urządzenia wejścia-wyjścia, urządzenia których zadaniem jest komunikacja komputera z otoczeniem (zwykle bezpośrednio z użytkownikiem). Do najczęściej
13. Kolejki komunikatów POSIX
J. Ułasiewicz Programowanie aplikacji współbieżnych 1 13. POSIX 13.1 Wstęp (mailboxy, bufory) są bardzo popularnym mechanizmem komunikacji międzyprocesowej. Występują w prawie każdym systemie operacyjnym.
Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści
Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści 1. Konfiguracja pinów2 2. ISP..2 3. I/O Ports..3 4. External Interrupts..4 5. Analog Comparator5 6. Analog-to-Digital Converter.6 7.
9. Problem wzajemnego wykluczania i sekcji krytycznej
J. Ułasiewicz Programowanie aplikacji współbieżnych 1 9. Problem wzajemnego wykluczania i sekcji krytycznej 9.1 Przeplot i współużywalność zasobów Aplikacja składa się z wielu procesów P1,P2,...,Pn operujących
1. Kolejki komunikatów POSIX
Jędrzej Ułasiewicz IIAiR Politechnika Wrocławska 1 1. Kolejki komunikatów POSIX 1.1 Podstawowe własności Kolejki FIFO maja następujące wady: Komunikaty pozbawione struktury Nie można testować stanu kolejki
PROGRAM TESTOWY LCWIN.EXE OPIS DZIAŁANIA I INSTRUKCJA UŻYTKOWNIKA
EGMONT INSTRUMENTS PROGRAM TESTOWY LCWIN.EXE OPIS DZIAŁANIA I INSTRUKCJA UŻYTKOWNIKA EGMONT INSTRUMENTS tel. (0-22) 823-30-17, 668-69-75 02-304 Warszawa, Aleje Jerozolimskie 141/90 fax (0-22) 659-26-11
Mogą pracować w środowisku: Scentralizowanym -mikrokontroler Rozproszonym sieć sterująca, systemy hierarchiczne. Komunikacja z syst.
J. Ułasiewicz Programowanie aplikacji współbieżnych 1 1 Podstawowe definicje i pojęcia współbieżności Współczesne aplikacje sterowania i akwizycji danych są zbiorem komunikujących się wątków lub procesów
Współczesne aplikacje sterowania i akwizycji danych są zbiorem komunikujących się wątków lub procesów współbieżnych.
J. Ułasiewicz Programowanie aplikacji współbieżnych 1 1 Podstawowe definicje i pojęcia współbieżności Współczesne aplikacje sterowania i akwizycji danych są zbiorem komunikujących się wątków lub procesów
Politechnika Warszawska
Politechnika Warszawska Wydział Elektryczny Laboratorium Podstaw Techniki Mikroprocesorowej Skrypt do ćwiczenia M.43 Obliczanie wartości średniej oraz amplitudy z próbek sygnału język C .Część teoretyczna
1 Podstawowe definicje i pojęcia współbieżności
J. Ułasiewicz Programowanie aplikacji współbieżnych 1 1 Podstawowe definicje i pojęcia współbieżności 1.1 Dlaczego zajmujemy się współbieżnością? W ciągu ostatnich 30 lat wzrost mocy przetwarzania osiągano
Struktura QSM (Queued Serial Module)
Struktura QSM (Queued Serial Module) MW-ZPCiR-ICT-PWr 1 Nadajnik transmisji asynchronicznej (SCI) MW-ZPCiR-ICT-PWr 2 Odbiornik transmisji asynchronicznej (SCI) MW-ZPCiR-ICT-PWr 3 SCIbaud 32 f SYS SCBR
Temat: System przerwań, liczniki i wyświetlacz w STRC51. Ćwiczenie 3.
1. Mechanizm przerwań w procesorze C51 Przerwania są mechanizmem umożliwiającym połączenie zdarzeń (sygnałów) z odpowiednim wykonaniem fragmentu programu - wywoływanymi niezależnie od aktualnie wykonywanego
Poradnik programowania procesorów AVR na przykładzie ATMEGA8
Poradnik programowania procesorów AVR na przykładzie ATMEGA8 Wersja 1.0 Tomasz Pachołek 2017-13-03 Opracowanie zawiera opis podstawowych procedur, funkcji, operatorów w języku C dla mikrokontrolerów AVR
PROGRAMOWALNE SYSTEMY MECHATRONIKI
PROGRAMOWALNE SYSTEMY MECHATRONIKI Laboratorium nr 5 Podstawy programowania mikrokontrolerów. Przerwania. 1. System przerwań informacje ogólne Programy sterujące mikrokontrolerów rzadko mają postać listy
Sygnały. 7. Sygnały (2005/2006)
Sygnały Sygnał jest to informacja dla procesu, że wystąpiło jakieś zdarzenie. Sygnały mogą być wysyłane: z procesu do innego procesu (grupy procesów) z procesu do siebie samego z jądra do procesu Sygnały
4. Procesy pojęcia podstawowe
4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa
Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.
Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,
Wykład 3: Implementacja programów wbudowanych
Systemy wbudowane Wykład 3: Implementacja programów wbudowanych Problemy implementacji oprogramowania wbudowanego Szeregowanie zadań System operacyjny Obsługa przerwań 10/16/2010 S.Deniziak:Systemy wbudowane
LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Mechanizm przerwań i menadżer zdarzeń procesora sygnałowego F/C240
LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ Mechanizm przerwań i menadżer zdarzeń procesora sygnałowego F/C240 Strona 1 z 12 Opracował mgr inż. Jacek Lis (c) ZNE 2004 1. Mechanizm przerwań
Embedded Systems Programming
Embedded Systems Programming Device drivers - interrupts and timers Iwona Kochańska Katedra Systemów Elektroniki Morskiej WETI PG April 7, 2019 Przerwania Przerwanie - sygnał powodujacy zmianę przepływu
Instytut Teleinformatyki
Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikroprocesory i Mikrokontrolery Dostęp do portów mikrokontrolera ATmega32 język C laboratorium: 10 autorzy: dr
Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.
J. Ułasiewicz Programowanie aplikacji współbieżnych 1 11 Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.
LEKCJA TEMAT: Zasada działania komputera.
LEKCJA TEMAT: Zasada działania komputera. 1. Ogólna budowa komputera Rys. Ogólna budowa komputera. 2. Komputer składa się z czterech głównych składników: procesor (jednostka centralna, CPU) steruje działaniem
WYKŁAD 9. Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c. Tomasz Zieliński
WYKŁAD 9 Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c Tomasz Zieliński /* Przyklad 4.1 - SORTOWANIE TABLIC - metoda najprostsza */ #include #define ROZMIAR 11 void
Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)
Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi) Ćwiczenie drugie (jedne zajęcia) Temat: Procesy i sygnały w Linuksie. Opracowanie: mgr in ż. Arkadiusz Chrobot Wprowadzenie 1. Budowa procesu
Programowanie mikrokontrolerów 2.0
Programowanie mikrokontrolerów 2.0 Tryby uśpienia Marcin Engel Marcin Peczarski Instytut Informatyki Uniwersytetu Warszawskiego 19 grudnia 2016 Zarządzanie energią Często musimy zadbać o zminimalizowanie
Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780
Dane techniczne : Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780 a) wielkość bufora znaków (DD RAM): 80 znaków (80 bajtów) b) możliwość sterowania (czyli podawania kodów znaków) za pomocą
Urządzenia wejścia-wyjścia
Urządzenia wejścia-wyjścia Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Plan wykładu Klasyfikacja urządzeń wejścia-wyjścia Struktura mechanizmu wejścia-wyjścia (sprzętu i oprogramowania) Interakcja
Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.
Przykład: $ ls more Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi. Tworzenie łącza #include int pipe(int filedes[2]); Przykład: int
1. Szeregowanie w systemach czasu rzeczywistego
J. Ułasiewicz Systemy Czasu Rzeczywistego 1 1. Szeregowanie w systemach czasu rzeczywistego 1.1 Definicje Zadanie - proces lub wątek Gotowych do wykonania zadań jest zwykle dużo więcej niż mogących je
System mikroprocesorowy i peryferia. Dariusz Chaberski
System mikroprocesorowy i peryferia Dariusz Chaberski System mikroprocesorowy mikroprocesor pamięć kontroler przerwań układy wejścia wyjścia kontroler DMA 2 Pamięć rodzaje (podział ze względu na sposób
Działanie systemu operacyjnego
Budowa systemu komputerowego Działanie systemu operacyjnego Jednostka centralna dysku Szyna systemowa (magistrala danych) drukarki pamięci operacyjnej I NIC sieci Pamięć operacyjna Przerwania Przerwania
Wydział Elektryczny. Katedra Telekomunikacji i Aparatury Elektronicznej. Konstrukcje i Technologie w Aparaturze Elektronicznej.
Politechnika Białostocka Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej Konstrukcje i Technologie w Aparaturze Elektronicznej Ćwiczenie nr 5 Temat: Przetwarzanie A/C. Implementacja
MIKROPROCESORY architektura i programowanie
Systematyczny przegląd. (CISC) SFR umieszczane są w wewnętrznej pamięci danych (80H 0FFH). Adresowanie wyłącznie bezpośrednie. Rejestry o adresach podzielnych przez 8 są też dostępne bitowo. Adres n-tego
4. Procesy pojęcia podstawowe
4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa
PDF created with pdffactory trial version www.pdffactory.com. Programowanie aplikacji czasu rzeczywistego w systemie QNX6 Neutrino 2
Programowanie aplikacji czasu rzeczywistego w systemie QNX6 Neutrino 1 INSTYTUT INFORMATYKI, AUTOMATYKI I ROBOTYKI POLITECHNIKI WROCŁAWSKIEJ Raport serii Sprawozdania nr: / 2013 Programowanie aplikacji
Wykład 12. Przetwornik ADC
Wykład 12 Przetwornik Przetwornik analogowo-cyfrowy () Moduł w mikrokontrolerach Stellaris posiada rozdzielczość 10-bitów i cztery kanały wejściowe oraz dodatkowo wewnętrzny czujnik temperatury. Moduł
Przerwania w systemie mikroprocesorowym. Obsługa urządzeo wejścia/wyjścia
Przerwania w systemie mikroprocesorowym 1 Obsługa urządzeo wejścia/wyjścia W każdym systemie mikroprocesorowym oprócz pamięci programu i pamięci danych znajduje się szereg układów lub urządzeo wejścia/wyjścia,
Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego
Wątki Wątek - definicja Ciąg instrukcji (podprogram) który może być wykonywane współbieżnie (równolegle) z innymi programami, Wątki działają w ramach tego samego procesu Współdzielą dane (mogą operować
Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1
Wątki 1. Wątki - wprowadzenie Wątkiem nazywamy sekwencyjny przepływ sterowania w procesie, który wykonuje dany program np. odczytywanie i zapisywanie plików Program Javy jest wykonywany w obrębie jednego
Działanie systemu operacyjnego
Działanie systemu operacyjnego Budowa systemu komputerowego Jednostka centralna Sterownik dysku Sterownik drukarki Sterownik sieci Szyna systemowa (magistrala danych) Sterownik pamięci operacyjnej Pamięć
Funkcja, argumenty funkcji
Funkcja, argumenty funkcji Funkcja to jest część programu, która ma swoje imię, może być wywołaną z drugiej części programu tyle razy, ile to jest koniecznie. Przykład: funkcja power podnosi liczbę rzeczywistą
Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Wskaźniki w C. Anna Gogolińska
Wskaźniki w C Anna Gogolińska Zmienne Zmienną w C można traktować jako obszar w pamięci etykietowany nazwą zmiennej i zawierający jej wartość. Przykład: kod graficznie int a; a a = 3; a 3 Wskaźniki Wskaźnik
1. Kolejki komunikatów POSIX
Jędrzej Ułasiewicz IIAiR Politechnika Wrocławska 1 1. Kolejki komunikatów POSIX 1.1 Podstawowe własności Kolejki FIFO maja następujące wady: Komunikaty pozbawione struktury Nie można testować stanu kolejki
dr inż. Jarosław Forenc
Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2010/2011 Wykład nr 7 (24.01.2011) dr inż. Jarosław Forenc Rok akademicki
Działanie systemu operacyjnego
Budowa systemu komputerowego Działanie systemu operacyjnego Jednostka centralna dysku Szyna systemowa (magistrala danych) drukarki pamięci operacyjnej sieci Pamięć operacyjna Przerwania Przerwania Przerwanie
2.1 Przesył danych między procesorem a tabelą zmiennych
1 Wstęp...1 2 Jak aplikacja obsługuje procesory?...2 2.1 Przesył danych między procesorem a tabelą zmiennych...2 2.2 Polecenia wysyłane do procesorów...2 3 Podstawowe peryferia procesora HallChip...3 3.1
Wykład IV. Układy we/wy. Studia Podyplomowe INFORMATYKA Architektura komputerów
Studia Podyplomowe INFORMATYKA Architektura komputerów Wykład IV Układy we/wy 1 Część 1 2 Układy wejścia/wyjścia Układy we/wy (I/O) są kładami pośredniczącymi w wymianie informacji pomiędzy procesorem