POLITECHNIKA POZNAŃSKA

Slides:



Advertisements
Podobne prezentacje
Watchdog Paweł Trojanowski
Advertisements

Tryby adresowania Prawie każda operacja wykonywana przez mikroprocesor wykonywana jest na pewnych argumentach (lub argumencie). Sposoby wskazywania argumentów.
Zerowanie mikroprocesorów Cel: wprowadzenie mikroprocesora w określony stan początkowy Zwykle realizowany poprzez: inicjalizację licznika rozkazów (PC)
Programowanie obiektowe
Związki w UML.
Mechanizmy pracy równoległej
Modelowanie aktywności
Diagramy stanów i diagramy aktywności
Wykonał : Marcin Sparniuk
Odpytywanie - Polling Program czeka na nadejście danych z urządzenia i nie może wykonywać innych zadań. Urządzenie zewnętrzne dostarcza dane w trudnym.
Siemens S7-300 Konfiguracja, Programowanie, Symulacja
Tomasz Andrejczuk Łukasz Razmuk gr. 620
Moduł 2. Struktury Systemów Komputerowych
PRZERZUTNIKI W aktualnie produkowanych przerzutnikach scalonych TTL wyróżnia się dwa podstawowe rodzaje wejść informacyjnych: - wejścia asynchroniczne,
Wykład 5 Przerwania w systemie SAB80C537 dr inż. Andrzej Przybył
Wykład 4 Przetwornik Analogowo-Cyfrowy
Podstawowe składniki funkcjonalne procesora i ich rola.
Systemy operacyjne Wykład nr 5: Wątki Piotr Bilski.
Wykład nr 2: Struktura systemu komputerowego a system operacyjny
Komputer, procesor, rozkaz.
Temat nr 10: System przerwań
Budowa systemów operacyjnych czasu rzeczywistego
ZARZĄDZANIE PROCESAMI
Problem rozbieżności czasów jednym z wielu problemów pojawiających się w systemach rozproszonych jest rozbieżność wartości zegarów na poszczególnych węzłach-maszynach.
Wątki.
Układy wejścia-wyjścia
ogólne pojęcia struktury
Programowalny układ we-wy szeregowego 8251
Architektura komputerów
Podstawy programowania II
przykładowy 8-bitowy mikroprocesor uniwersalny CISC
MCS51 - wykład 5.
Mikroprocesor Z80 przerwania.
ogólne pojęcia struktury
MCS51 - wykład 6.
Architektura komputerów
POLITECHNIKA POZNAŃSKA
Opracowanie: Maria W ą sik. Pierwsze komputery budowano w celu rozwi ą zywania konkretnych problemów. Gdy pojawiało si ę nowe zadanie, nale ż ało przebudowa.
POLITECHNIKA POZNAŃSKA
Zasada działania komputera
Protokół drzewa opinającego
Mikroprocesory.
Mikroprocesory mgr inż. Sylwia Glińska.
Problem sekcji krytycznej
Przerwanie ang. interrupt.
Koncepcja procesu Zadanie i proces. Definicja procesu Process – to program w trakcie wykonywania; wykonanie procesu musi przebiegać w sposób sekwencyjny.
Wykład 7 Synchronizacja procesów i wątków
W ą t e k (lekki proces) thread.
Wykład 3 Praca systemu komputerowego
Przerzutniki bistabilne
Procesor, pamięć, przerwania, WE/WY, …
Procesy, wątki Program a proces Proces: Przestrzeń adresowa, kod, dane, stos (część pamięci do przechowania zmiennych lokalnych i niektórych adresów) Otwarte.
Układy i systemy mikroprocesorowe
I T P W ZPT Konwerter BIN2BCD 1 LK „8” DEC LK = 0 LOAD1 R3R2R1  K S3 S2S1 A B „5” K  5 MUX 1 0 A R4 LOAD2 Y = LD B LB „3” US Układ wykonawczy Układ sterujący.
POLITECHNIKA POZNAŃSKA WBMiZ Zakład Urządzeń Mechatronicznych STEROWNIKI URZĄDZEŃ MECHATRONICZNYCH LAB CMBiN p.209.
Przerwania timera i przerwania zewnętrzne
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
PWM, obsługa wyświetlacza graficznego
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
POLITECHNIKA POZNAŃSKA
POLITECHNIKA POZNAŃSKA WBMiZ Zakład Urządzeń Mechatronicznych STEROWNIKI URZĄDZEŃ MECHATRONICZNYCH
POLITECHNIKA POZNAŃSKA WBMiZ Zakład Urządzeń Mechatronicznych STEROWNIKI URZĄDZEŃ MECHATRONICZNYCH
POLITECHNIKA POZNAŃSKA WBMiZ Zakład Urządzeń Mechatronicznych STEROWNIKI URZĄDZEŃ MECHATRONICZNYCH
S7-300.:: Konfiguracja Programowanie Symulacja ::. Konfiguracja,Programowanie,Symulacja.
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Mikrokontrolery System przerwań
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Transmisja radiowa Arduino & nRF24L01P
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Zapis prezentacji:

POLITECHNIKA POZNAŃSKA WBMiZ Zakład Urządzeń Mechatronicznych STEROWNIKI URZĄDZEŃ MECHATRONICZNYCH GRZEGORZ.PITTNER@PUT.POZNAN.PL www.zum.put.poznan.pl

Przerwania zewnętrzne EXTI / INT

Licznik instrukcji PC (Program Counter) Egzekucja programu Licznik instrukcji PC (Program Counter) 1 2 3 Adres Rejestr PC: 0000 Instrukcja 0 0001 Instrukcja 1 0002 Instrukcja 2 0003 Instrukcja 3 Opisać na tablicy krok po kroku jak wykonywany jest program klasycznie

#include <avr/io. h> #include <util/delay #include <avr/io.h> #include <util/delay.h> unsigned int i; void main(void) { DDRC=0b11111111; //diody LED DDRD=0b00000000; //przyciski SW while(1) for(i=0;i<50;i++) _delay_ms(100); //czekaj PORTC|= (1<<0); //LED nr 0 ON PORTC&=~(1<<0); //LED nr 0 OFF if(bit_is_clear(PIND,2)) PORTC|= (1<<1); //jeśli SW1 to LED 1 ON if(bit_is_clear(PIND,3)) PORTC&=~(1<<1); //jeśli SW2 to LED 1 OFF }

Przerwania Pod pojęciem przerwania rozumiemy wbudowaną sprzętowo funkcję CPU, która po wystąpieniu danego zdarzenia (sygnału) pozwoli na zatrzymanie aktualnie wykonywanego zadania i czasowego przejścia do innego wątku. Posługując się przerwaniami możemy ustawić pracę mikrokontrolera tak, aby przerywał pewne mniej istotne zadania na rzecz innych, ważniejszych w danej chwili, poczym dokańczał te mniej istotne niejako „w wolnym czasie”.

Rodzaje przerwań ze względu na sygnał przerwania wewnętrzne: generowane przez wewnętrzne peryferia mikrokontrolera takie jak liczniki czasowe, liczniki zdarzeń, przetworniki analogowo cyfrowe, pamięci, peryferia komunikacyjne itd… przerwania zewnętrzne: generowane przez specjalnie dedykowane do tego zdania wejścia GPIO. MCU TIM1 CPU PORTA

Potocznie przerwania określa się akronimem INT (ang. INTerrupt), przerwania zewnętrzne można spotkać także pod skrótem EXTI (ang. External INTerrupt).

Rodzaje przerwań ze względu na czas asynchroniczne: wyzwalane jednorazowo po wystąpieniu danego zdarzenia synchroniczne: wyzwalane cyklicznie tak długo jak trwa zdarzenie U[V] t

EXTI - hardware

Funkcja obsługi przerwania Gdy sygnał żądania przerwania zostanie aktywowany i obsłużony CPU: dokańcza aktualnie wykonywaną instrukcję, Odkłada na stos adres kolejnej instrukcji programu oraz stan rej. akumulatorów, Zmienia wartość rejestru PC aby zrealizować skok do funkcji obsługi przerwania Adres pod jakim znajduje się funkcja obsługi przerwania nazywamy „wektorem przerwania” Po zakończeniu funkcji obsługi przerwania (instrukcja „RETI”) do rejestru PC pobierany jest ze stosu adres kolejnej instrukcji programu oraz poprzedni stan rej. akumulatorów

Program: Adres: 0000 Instrukcja 0 0001 Instrukcja 1 0002 Instrukcja 2 0003 Instrukcja 3 …. Funkcja obsługi przerwania: Adres: 0100 Instrukcja 0 0101 Instrukcja 1 0102 Instrukcja 2: RETI Stos: CP=0003, akum=…………. Rejestr PC: Rejestry rdzenia (akumulatory)

Funkcja obsługi przerwania #include <avr/interrupt.h> ISR(INT0_vect) { //tutaj umieść swoją funkcję obsługo przerwania INT0 } //automatyczny powrót do programu głównego void main(void) .. … } RETI

Adres wektora przerwania oraz nazwa przerwania Szukajcie w nocie katalogowej od CPU

Zezwolenie na przerwania Zezwolenie globalne: sei(); - globalne zezwolenie na przerwania cli(); - globalne zablokowanie przerwań Zezwolenie lokalne: Poza globalnym pozwoleniem na przerwania w systemie, każde zdarzenie musi być dodatkowo lokalnie odblokowane za pomocą rejestrów sterujących aby dany sygnał mógł aktywować przerwanie.

Zezwolenie na przerwania Domyślnie wszystkie przerwania są zablokowane. Domyślnie globalne zezwolenie na przerwania jest zablokowane. Podczas każdego skoku do funkcji obsługi przerwania globalne zezwolenie na przerwania jest automatycznie blokowane. Podczas każdego powroty z funkcji obsługi przerwania globalne zezwolenie na przerwania jest automatycznie odblokowane.

Pytania?

Priorytety Odświeżenie stanu sygnałów odbywa się w sposób dyskretny (raz na takt zegara systemowego) Pomiędzy kolejnymi taktami może zgłosić się więcej niż jeden sygnał przerwania W sytuacji takiej system obsługi przerwań musi podjąć decyzję o dalszym działaniu CPU 0/1 [-] 1 INT1 1 INT2 1 CLK t

Priorytety przerwań Priorytet przerwania w mcu typu AtMega zależy od adresu funkcji obsługi przerwania i jest niezmienny. Istnieją również bardziej zaawansowane rozwiązania mcu w których priorytety przerwań mogą być zmieniane w sposób programowy.

Priorytety przerwań Jeśli więcej niż jeden sygnał wyzwalający przerwanie jest aktywny to porównywane są priorytety przerwań Przerwanie o niższym adresie jest obsługiwane w pierwszej kolejności, a wektor przerwania o wyższym adresie odkładany jest na stos Po zakończeniu przerwania o niższym adresie (RETI) zdejmowany jest ze stosu adres kolejnej wykonywanej instrukcji którą jest skok do przerwania o wyższym adresie. Po zakończeniu przerwania o wyższym adresie (RETI) zdejmowany jest ze stosu adres kolejnej wykonywanej instrukcji którą jest już powrót do wątku sprzed wyzwolenia przerwania.

Zagnieżdżenie przerwań może przepełnić stos Uwaga! Zagnieżdżenie przerwań może przepełnić stos Zapętlenie przerwań może zablokować program Umieszczenie funkcji opóźniających (np. delay) w przerwaniach może znacząco spowolnić program i powinno być unikane

REJESTRY STERUJĄCE PRZERWANIAMI ZEWNĘTRZNYMI

EIMSK - External Interrupt Mask Logiczne 1 na pozycji X zezwala lokalnie na obsługę przerwania o numerze X

EIFR: External Interrupt Flag Register Logiczne 1 na danej pozycji oznacza oczekiwanie na obsługę przerwania

EICRx - External Interrupt Control Register x (A/B)

EICRx - External Interrupt Control Register x (A/B)

Przykładowy program #include <AVR/io.h> #include <AVR/interrupt.h> #include <util/delay.h> unsigned int i; ISR(INT2_vect) { PORTC|=(1<<1); //LED nr 1 ON } void main(void) { DDRC=0b11111111; DDRD=0b00000000; EICRA&=~(1<<ISC20); //ustaw zdarzenie wyzwalające przerwanie INT2 EICRA |=(1<<ISC21); //ustaw zdarzenie wyzwalające przerwanie INT2 EIMSK |=(1<<INT2); //odblokuj przerwanie INT2 sei(); //globalne zezwolenie na przerwania while(1) for(i=0;i<50;i++) _delay_ms(100); //czekaj PORTC|= (1<<0); //LED nr 0 ON PORTC&=~(1<<0); //LED nr 0 OFF

Pytania? 16.09 nieobecny www.zum.put.poznan.pl

Dziękuję (lista)