lekcja dokumentacja z książki


Lekcja 15: Sterownik przerwań DSM-51

W lekcji 12 przedstawiony był system przerwań mikrokontrolera 8051. Występują w nim m.in. dwa zewnętrzne źródła przerwań. W wielu systemach może okazać się to niewystarczające. W takim przypadku należy dobudować do systemu zewnętrzny sterownik przerwań. Istnieją gotowe układy scalone spełniające tę funkcję, na przy­kład Intel 8259. Mają one dość duże możliwości, ale również dość skomplikowaną obsługę. Często wystarczające jest zbudowanie prostego sterownika w oparciu o standardowe układy cyfrowe.

jf W systemie DSM-51 zdecydowano się na rozwiązanie pośrednie. Sterownik prze­rwań zbudowano w oparciu o programowalny układ logiczny typu GAL. Pozwoliło to na stosunkowo duże jego możliwości przy jednocześnie niewielkich wymiarach. Istotną zaletą jest fakt, że przy pewnych specyficznych potrzebach możliwa jest mo­dyfikacja działania sterownika poprzez zmianę zawartości układu GAL. Opis zawarty w tej lekcji dotyczy standardowej konfiguracji sterownika przerwań.

Do sterownika doprowadzono sześć sygnałów przerwań:

IAD - z przetwornika analogowo-cyfrowego 101 - z wejścia izolowanego galwanicznie IPA -z układu 8255 IPB -z układu 8255

IX - ze złącza szyny systemowej IRS - z kanału COM2.

Sterownik może sygnalizować przyjście przerwania poprzez obydwa zewnętrzne wejścia przerwań mikrokontrolera 8051 - INTO i INT1. Oprócz tego, sterownik jest podłączony do szyny systemowej DSM-51 jako urządzenie wybierane sygnałem CSIC. Doprowadzone są do niego sygnały sterujące oraz dwie linie danych. Dzięki temu, możliwy jest odczyt numeru zgłoszonego przerwania i zapis kasujący to zgło­szenie.

Na dwóch liniach możliwe jest przesłanie 4 różnych numerów. Tyle przerwań ste­rownik potrafi zapamiętać. Ponieważ do sterownika doprowadzonych jest więcej sygnałów przerwań, w ich wyróżnieniu pomaga linia P 1.1 mikrokontrolera podłączo­na do sterownika.

Jak to zostało przedstawione w poprzedniej lekcji, sygnał przerwania z portu szere­gowego COM2 (IRS) jest praktycznie bezpośrednio podłączony do wejścia INTO mikrokontrolera. Pozostałe przerwania są zapamiętywane w sterowniku i zgłaszane do mikrokontrolera poprzez wejście INT1. Linia P 1.1 wyróżnia dwa tryby pracy sterownika przerwań.

******* tabelka***********

Po sygnale RESET linia Pl .1 jest w stanie l, więc możliwe jest zatrzaśnięcie jednego z trzech przerwań: z przetwornika analogowo-cyfrowego, z wejścia 12 izolowanego galwanicznie i ze złącza szyny systemowej. Jako przykład obsługi przerwania zgło­szonego przez sterownik przerwań posłuży wejście izolowane galwanicznie.

System DSM-51 jest wyposażony w złącza, do których można podłączyć urządzenia zewnętrzne. Jednym z nich jest złącze wejść/wyjść izolowanych galwanicznie.

Izolacja galwaniczna wykonywana jest zazwyczaj z wykorzystaniem transoptorów. Pozwala ona na przesyłanie sygnałów między dwoma urządzeniami, których masy znajdują się na różnych potencjałach. Izolacja galwaniczna jest również wykorzysty­wana do uniknięcia tworzenia tzw. pętli masy, która może stać się źródłem poważ­nych zakłóceń.

Producent systemu DSM-51, firma MicroMade, oferuje szereg modeli podłączonych do systemu. Jednym z nich jest model M-07 służący do połączenia ze sobą wielu systemów DSM-51. Model ten jest interfejsem sieci RS485, sterowanym przez złącze wejść/wyjść izolowanych galwanicznie.

Przy łączeniu ze sobą kilku systemów DSM-51 połączonych z różnymi komputerami nie można wykluczyć istnienia różnicy potencjałów między ich masami. Przy czym nie chodzi tu wyłącznie o składową stałą, ale również o różne impulsy powstające w wyniku pracy zasilaczy impulsowych w tych komputerach. Dlatego najbezpieczniej­sze jest wykorzystanie do połączenia ze sobą systemów DSM-51 złącz wejść/wyjść izolowanych galwanicznie.

W sieci RS485 nadawanie bajtu odbywa się analogicznie do transmisji szeregowej RS232. Istotną różnicą jest to, że do sieci RS485 może być podłączonych kilka urzą­dzeń nadawczo-odbiorczych. Jednocześnie może nadawać tylko jedno urządzenie, choć odbierać mogą wszystkie. Nad tym, aby nie zaczęły nadawać wszystkie jedno­cześnie, musi czuwać odpowiednie oprogramowanie sieciowe.

Za pomocą modeli M-07 można połączyć maksymalnie 16 systemów DSM-51. W tym celu należy wykorzystać jeden model M-07a i odpowiednią liczbę modeli M-07. Tak zbudowana sieć RS485 jest izolowana galwanicznie od wszystkich systemów DSM-51, poza tym, przy którym podłączono model M-07a. Poprzez ten model jest rozprowadzane zasilanie sieci.

W dwóch krańcowych modelach należy załączyć obciążenie linii poprzez włączenie przełączników DIP (pozycja ON).

Standard RS485 wymaga dwuprzewodowej linii przesyłowej. Linia ta powinna być na końcach obciążona rezystorami dopasowanymi do rezystancji linii. Wynikiem takiego dopasowania jest brak odbić sygnałów w torze przesyłowym. Pozwala to na uzyskanie znacznie większych prędkości transmisji niż w standardzie RS232, w któ­rym transmisja odbywa się po pojedynczym niedopasowanym przewodzie.

Ograniczeniem prędkości transmisji między systemami DSM-51 z wykorzystaniem modelu M-07 są transoptory realizujące izolacje galwaniczne. Zbocza sygnału prze­syłanego przez transoptor podlegają opóźnieniom rzędu 3... l O ^s.

W lekcji jest przedstawiony prosty sposób transmisji pomiędzy dwoma systemami DSM-51. Przykład l zawiera program nadający poprzez sieć RS485.

*********************** przykład 1 ****************************

Praktycznie przykład ten jest identyczny z przykładem Iż lekcji 14. Tyle tylko, że nadawanie odbywa się tu poprzez linię P l.2 mikrokontrolera. Sygnał ten poprzez transoptor dociera do złącza jako wyjście pierwsze (01). W modelu M-07 do tego wyjścia podłączony jest układ scalony realizujący transmisję RS485.

Jak już wspomniano, w sieci RS485 może pracować wiele urządzeń, ale w danym momencie może nadawać tylko jedno. Z tego powodu układy do transmisji RS485 wyposażone są w wejście odłączające je od linii przesyłowej. W modelu M-07 zada­nie to spełnia sygnał z wyjścia 02. Ustawienie jedynki na bicie P1.3 mikrokontrolera powoduje odłączenie nadajnika od linii przesyłowej, natomiast ustawienie O na tym bicie powoduje przyłączenie nadajnika.

Ponieważ program z pierwszego przykładu stale nadaje, na początku ustawia on bit P1.3 na O, powodując w ten sposób przyłączenie nadajnika na stałe do linii przesyło­wej.

W przykładzie drugim przedstawiony jest program odbierający dane z sieci RS485.

************************** przykład 2 *****************************

Działanie powyższych przykładów można zaobserwować łącząc dwa systemy DSM-51 poprzez łącze RS485 (modele M-07). Do jednego z systemów należy załadować przykład l, natomiast do drugiego przykład 2. Po uruchomieniu tych programów naciśnięcie klawisza klawiatury matrycowej systemu nadawczego powoduje wyświe­tlenie odpowiedniego znaku na wyświetlaczach LCD obu systemów. Dzieje się tak dzięki przesłaniu znaku do drugiego systemu poprzez sieć RS485.

Odbiór danych z sieci RS485 jest w zasadzie identyczny z programowym odbiorem transmisji szeregowej ze złącza COM2. Dane przychodzące z układu realizującego transmisję RS485 są podłączone do obu wejść izolowanych galwanicznie. Bit startu, docierający poprzez wejście 12 do sterownika przerwań, generuje przerwanie inicju­jące odbiór przesyłanego bajtu. Natomiast wartość kolejnych bitów może być bezpo­średnio odczytywana z linii P3.4, do której doprowadzony jest poprzez transoptory sygnał z wejścia II.

Obsługa przerwania przychodzącego do mikrokontrolera poprzez sterownik przerwań składa się z dwóch elementów:

• właściwa obsługa przerwania

• obsługa sterownika przerwań.

Elementy te mogą występować w różnej kolejności, mogą też się przeplatać. Zależy to od sterownika przerwań oraz od urządzenia zgłaszającego przerwania. Właściwa obsługa przerwania od bitu startu sprowadza się do dwóch czynności:

• włączenie timera, który ma odliczyć czas do odczytu pierwszego bitu

• zablokowanie obsługiwanego przerwania, aby nie przeszkadzało przy odbiorze kolejnych bitów.

Spełniane funkcje są takie same, jak przy programowej obsłudze transmisji szerego­wej. Natomiast dodatkowo występuje tutaj obsługa sterownika przerwań.

Przerwanie zgłaszane przez sterownik na wejście INT1 mikrokontrolera może pocho­dzić z kilku źródeł (patrz tabela na początku lekcji). Przerwanie przychodzące do sterownika jest w nim zapamiętywane. Nawet krótki impuls zostanie zatrzaśnięty i wygeneruje przerwanie do mikrokontrolera. Dopiero właściwa obsługa sterownika może spowodować skasowanie tak zapamiętanego przerwania. W sterowniku mogą zostać jednocześnie zapamiętane maksymalnie 4 przerwania.

W obsłudze przerwania z wejścia INT1 należy dowiedzieć się, które przerwanie jest zatrzaśnięte w sterowniku. Można to wykonać poprzez odczyt numeru przerwania ze sterownika przerwań. Sterownik jest podłączony do szyny systemu DSM-51 jako urządzenie wejść/wyjść pod adresem OOH. Liczba odczytana spod tego adresu jest numerem przerwania. Jeżeli w sterowniku jest zatrzaśniętych kilka przerwań, to od­czytany będzie najniższy numer zatrzaśniętego przerwania.

Należy pamiętać, że do sterownika podłączone są tylko dwie linie danych: DO i Dl. Tak więc, w odczytanym bajcie tylko dwa bity będą prawidłowo ustawione. Pozosta­łe 6 bitów będzie miało stany losowe. Prawidłowe odczytanie numeru przerwania wygląda tak:

MOV R1,#CSIC

MOVX A,@R1

ANL A,#03H

Zgodnie z tak odczytanym numerem, należy wykonać obsługę odpowiedniego prze­rwania. W powyższym przykładzie jedynym przerwaniem, które powinno się zda­rzyć, było przerwanie z wejścia izolowanego 12, czyli przerwanie o numerze l -101. Dla tego przerwania przygotowana jest specjalna obsługa związana z rozpoczęciem odbioru bajtu z sieci RS485. Może się zdarzyć, że w wyniku zakłóceń bądź podłą­czenia innych urządzeń zewnętrznych do systemu DSM-51, zostanie zgłoszone inne przerwanie. Program zawsze powinien przewidywać wszelkie możliwości, aby w takim przypadku nie nastąpiło zawieszenie jego pracy. Ponieważ nie jest znana przy­czyna tego przerwania, jedyne co można zrobić, to skasować przerwanie ze sterowni­ka. Wykonuje się to poprzez zapis do sterownika numeru przerwania, które ma zostać skasowane. Najwygodniej jest to wykonać, tak jak w przykładzie, zaraz po odczycie numeru, gdyż zarówno rejestr RIJak i A maj ą odpowiednie wartości:

MOVX @R1,A

Niestety, nie zawsze takie działanie jest skuteczne. Sterownik przerwań reaguje na stan linii wejściowych. Oznacza to, że jeżeli sygnał przerwania jest nadal aktywny, to przerwanie zostanie natychmiast zatrzaśnięte z powrotem. Tak to odbędzie się m.in. dla przerwania od bitu startu. W momencie obsługi przerwania bit startu jeszcze trwa, a więc na linii wejściowej jest ciągle stan 0. Jeżeli obsługa przerwania zostałaby w ten sposób zakończona, to natychmiast mikrokontroler rozpocząłby po raz kolejny obsługę tego samego przerwania.

Tak więc przed skasowaniem przerwania w sterowniku należy zlikwidować źródło przerwania. W przypadku transmisji nie jest to możliwe (nadaje inny system), a jed­nocześnie nie jest to przerwanie potrzebne w czasie odbioru bajtu. Stąd też, aby prze­rwanie nie przeszkadzało, zostało ono zablokowane w mikrokontrolerze. Po zakończeniu transmisji, a w zasadzie już w czasie trwania bitów stopu, wartość na linii wejściowej ustala się ponownie na l. W tym momencie można skasować prze­rwanie w sterowniku (wysłanie numeru l do sterownika) i ponownie włączyć prze­rwania. Od tej pory mikrokontroler znowu oczekuje na przyjście bitu startu kolejnego bajtu transmisji.

Podsumowując, można stwierdzić, że obsługa każdego przerwania podłączonego do sterownika przerwań wygląda tak:

• odczytanie numeru przerwania

• wykonanie właściwego programu obsługi

• zlikwidowanie źródła przerwania (jeśli nie jest to automatycznie wykonane w poprzednim punkcie)

• skasowanie właściwego numeru przerwania. /

Oprócz obsługi w czasie każdego przerwania, sterownik wymaga jeszcze obsługi na początku programu. Do sterownika nie jest podłączony sygnał RESET, tak więc trze­ba go zastąpić programowo. Przy włączeniu zasilania lub w wyniku działania pro­gramu (przerwanego przez sygnał RESET) mogą w sterowniku być zatrzaśnięte przerwania. Przed zezwoleniem na przerwania w mikrokontrolerze z linii INT1 nale­ży skasować w sterowniku ewentualne przerwania. Dokonać można tego przez wy­słanie kolejno numerów 0,1,3 do sterownika (przerwanie 2 nie może być nigdy zatrzaśnięte przy P 1.1 = l). Jak już powiedziano, przed skasowaniem przerwania należy zlikwidować jego źródło. Po sygnale RESET może być w systemie ustawiony sygnał przerwania z przetwornika analogowo-cyfrowego. Sygnał RESET nie jest podłączony do przetwornika. Aby sygnał ten skasować, należy odczytać wartość z przetwornika - przerwanie będzie automatycznie skasowane. Tak więc przed skaso­waniem przerwań w sterowniku należy jeszcze dokonać odczytu przetwornika A/C. Cała sekwencja ustawiania sterownika w stan wyjściowy zamieszczona jest w przy­kładzie 2.

Do tego zagadnienia można podejść jeszcze inaczej. Metody tej użyto w kolejnym przykładzie .

************************* przykład 3 ******************************

W programie wykorzystane jest tylko przerwanie l w sterowniku przerwań, a więc przerwanie z wejścia izolowanego galwanicznie. Dla prawidłowej pracy programu należy zapewnić, aby przy sygnale RESET to przerwanie zostało skasowane w ste­rowniku przerwań. Tak więc, ustawianie sterownika zostało sprowadzone tylko do wysłania cyfry l pod adres sterownika. Gwarantuje to, że nie będzie z transmisji RS485 odczytany znak, który faktycznie nie był wysłany. Natomiast w sterowniku mogą pozostać zawieszone przerwania z innych źródeł. Aby nie przeszkadzały one w pracy programu, należy obsługę sterownika przerwań odpowiednio zorganizować. W przypadku innego przerwania niż l, musi nastąpić nie tylko skasowanie numeru tego przerwania w sterowniku, ale również należy zlikwidować źródło przerwania. Jeżeli nie ma innych przeciwwskazań, można zorganizować jednakową obsługę dla wszystkich tych dodatkowych przerwań. W powyższym przykładzie odczyt z prze­twornika A/C w celu skasowania wystawionego przez niego przerwania, będzie wy­konany zarówno przy zgłoszeniu przerwania O (od przetwornika A/C), jak i przerwania 3 - z wejścia IX. W niczym to nie przeszkadza, a obsługa przerwania jest szybsza - uniknięto niepotrzebnego rozgałęziania programu według źródła przerwa­nia.

ZADANIA

Zadanie l

W przykładach 2 i 3 zamiast pustej pętli SJMP $ umieścić pętlę inicjującą co sekundę pomiar przetwornikiem A/D. Wykonuje się to poprzez wysłanie dowolnego bajtu pod adres CSAD. Który z tych przykładów będzie mimo to poprawnie działał? (Przetwor­nik A/D po zakończeniu pomiaru (ok. 150 ^s) wygeneruje przerwanie - sygnał IAD.)

Zadanie 2

Napisać program odbierający transmisję RS485, który nie będzie korzystał z ze­wnętrznego sterownika przerwań.

WSKAZÓWKI

Ad. l

Fragment, który należy wstawić może wyglądać następująco:

MOV RO, #CSAD

LOOP:

MOV A,#10

LCALL DELAY_100MS

MOVX @RO,A

SJMP LOOP

Jak można się przekonać, jedynie przykład 3 będzie poprawnie działał, gdyż przy zgłoszeniu przerwania z przetwornika obsłuży on zarówno sterownik przerwań, jak i przetwornik. W ten sposób zlikwiduje sygnał przerwania. Natomiast w przykładzie 2 obsługiwany jest tylko sterownik przerwań. Od momentu wystawienia przerwania przez przetwornik A/D, sygnał tego przerwania będzie na stałe obecny i sterownik przerwań będzie zawsze zgłaszał przerwanie nr O - ma ono najwyższy priorytet. W ten sposób przerwanie z wejścia izolowanego, czyli z transmisji RS485, nigdy nie zostanie zgłoszone do mikrokontrolera.

Ad. 2

Całe zagadnienie sprowadza się do pytania: jak zainicjować odbiór bajtu korzystając z wejścia TO? Można oczywiście w programie głównym sprawdzać stan tego wejścia i w ten sposób czekać na bit startu. Ale program nie może już nic innego robić. Istnie­je jednak inne, znacznie lepsze rozwiązanie. Timer O może liczyć impulsy, a dokład­niej ujemne zbocza z wejścia TO. Jeżeli timer jest ustawiony na liczenie impulsów zewnętrznych i na przykład w trybie 2 wpiszemy do niego wartość 255, to przy pierwszym ujemnym zboczu nastąpi przepełnienie timera i zgłoszone będzie prze­rwanie do mikrokontrolera. Program oparty na tej zasadzie zamieszczony jest na dyskietce jako przykład 4 do lekcji.



Wyszukiwarka

Podobne podstrony:
lekcja dokumentacja z książki
lekcja dokumentacja z książki
konspekt dla gości, dokumentacja rozwoju zawodowego nauczyciela stażysty, Umiejętność prowadzenia za
nagrody książkowe, Dokumenty szkolne
Ksiazka polecana Dokumentacja szkoleniowa BHP
K Ksiazka kontroli wzor dokumentu
Grupy, dokumentacja rozwoju zawodowego nauczyciela stażysty, Umiejętność prowadzenia zajęć, Konspekt
Metody Ściągania na lekcjach, Zabawne dokumenty i inne pierdoły ;p, Metody ściągania na sprawdzianac
0016 - książka codziennej eksploatacji wózka, DOKUMENTY BHP(1)
K 05 Ksiazka kontroli wzor dokumentu
Photoshop - lekcja 8 (wykorzystanie technik Slice i Rollover(1), Dokumenty- Różności, Szkoła fotogra
Photoshop - lekcja 6 (ścieżki-podstawowe techniki)(1), Dokumenty- Różności, Szkoła fotografii, Porad
zal.1 Książka kontroli prac spawalniczych[1], BHP dokumenty, P.POŻ - W ZAKŁADZIE
Photoshop - lekcja 7 (obiekty wektorowe i sciazka wycinajaca(1), Dokumenty- Różności, Szkoła fotogra
konspekt dla gości, dokumentacja rozwoju zawodowego nauczyciela stażysty, Umiejętność prowadzenia za
nagrody książkowe, Dokumenty szkolne

więcej podobnych podstron