ster przerwan dms51


S. Jemioło B. Jakubiec

G. Kulig Ł. Król

D. Gorący K. Kubik P. Kurek

Klasa VgT

Ćwiczenie nr 15

TEMAT: Sterownik przerwań DSM-51.

Cel ćwiczenia:

Celem ćwiczenie jest poznanie możliwości oraz właściwości sterownika przerwań systemu DSM-51

Wiadomości wstępne:

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.

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

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.

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.

PRZYKŁAD 15.1

NADAWANIE RS-485

T0_G EQU 0 ;GATE

T0_C EQU 0 ;COUNTER/-TIMER

T0_M EQU 2 ;MODE (0..3)

TIM0 EQU T0_M+T0_C*4+T0_G*8

T1_G EQU 0 ;GATE

T1_C EQU 0 ;COUNTER/-TIMER

T1_M EQU 0 ;MODE (0..3)

TIM1 EQU T1_M+T1_C*4+T1_G*8

TMOD_SET EQU TIM0+TIM1*16

BIT_TIME EQU 11059200/12/4800

T0_SET EQU 256-BIT_TIME

OUT EQU P1.2

OUT_EN EQU P1.3

LJMP START

ORG 0BH

PUSH PSW

PUSH ACC

DJNZ R2,NEXT ;koniec transmisji bajtu

SETB OUT ;bit stopu

CLR TR0 ;stop Timer 0

POP ACC

POP PSW

RETI

NEXT: ;kolejny bit transmisji

MOV A,R7

RRC A

MOV OUT,C ;bit na port

MOV R7,A

POP ACC

POP PSW

RETI

ORG 100H

START:

MOV TMOD,#TMOD_SET ;Timer 0 dla

MOV TH0,#T0_SET ;transmisji

MOV TL0,#T0_SET

CLR OUT_EN ;wˆĄcz nadajnik RS485

SETB EA ;włącz przerwanie

SETB ET0 ;od Timera 0

LCALL LCD_CLR

LOOP:

LCALL WAIT_KEY

ADD A,#30H

MOV R7,A ;znak do nadania

MOV R2,#9 ;licznik bitów

CLR OUT ;bit startu

SETB TR0 ;start Timera 0

LCALL WRITE_DATA ;wyświetl na LCD

SJMP LOOP

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 15.2

ODBIÓR RS-485

T0_G EQU 0 ;GATE

T0_C EQU 0 ;COUNTER/-TIMER

T0_M EQU 2 ;MODE (0..3)

TIM0 EQU T0_M+T0_C*4+T0_G*8

T1_G EQU 0 ;GATE

T1_C EQU 0 ;COUNTER/-TIMER

T1_M EQU 0 ;MODE (0..3)

TIM1 EQU T1_M+T1_C*4+T1_G*8

TMOD_SET EQU TIM0+TIM1*16

;Timer/Bit = Fosc[Hz] /12 /V[bod]

BIT_TIME EQU 11059200/12/4800

T0_SET EQU 256-BIT_TIME

T0_STRT EQU 256-BIT_TIME/2

IN EQU P3.4

LJMP START

ORG 0BH

PUSH PSW

PUSH ACC

DJNZ R2,NEXT

SJMP LAST

ORG 13H

PUSH PSW

PUSH ACC ;obsługa sterownika

MOVX A,@R1 ;odczyt numeru przerwania

ANL A,#03H

MOVX @R1,A ;skasowanie przerwania

CJNE A,#1,INT_END ;czy przerwanie nr 1

SETB TR0 ;włącz Timer 0

CLR EX1 ;blokuj przerwanie INT1

INT_END:

POP ACC

POP PSW

RETI

LAST: ;odebrano cały bajt aktualnie trwa bit stopu

CLR TR0 ;wyłącz Timer 0

MOV TL0,#T0_STRT ;ustawienia dla kolejnej

MOV R2,#10 ;transmisji

MOVX @R1,A ;skasowanie przerwania

LCALL WRITE_DATA

POP ACC

POP PSW

RETI

NEXT: ;kolejny bit transmisji

MOV C,IN ;pobierz bit

MOV A,R7

RRC A ;dopisz do poprzednich

RETI

ORG 100H

START:

LCALL LCD_CLR

MOV TMOD,#TMOD_SET ;Timer 0 dla

MOV TH0,#T0_SET ;transmisji

MOV TL0,#T0_STRT ;1/2 bitu startu

MOV R2,#10 ;licznik bitów

MOV R1,#CSAD ;skasowanie przerwania

MOVX A,@R1 ;w przetworniku A/C

MOV R1,#CSIC ;skasowanie przerwań

CLR A ;w sterowniku

MOVX @R1,A ;A=0 (IAD)

INC A

MOVX @R1,A ;A=1 (IOI)

MOVX @R1,A ;A=3 (IX)

SETB EA ;włącz przerwania

SETB ET0 ;od Timera 0

SETB EX1 ;i z wejścia INT1

SJMP $

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

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.

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.

PRZYKŁAD 15.3

ODBIÓR RS-485

T0_G EQU 0 ;GATE

T0_C EQU 0 ;COUNTER/-TIMER

T0_M EQU 2 ;MODE (0..3)

TIM0 EQU T0_M+T0_C*4+T0_G*8

T1_G EQU 0 ;GATE

T1_C EQU 0 ;COUNTER/-TIMER

T1_M EQU 0 ;MODE (0..3)

TIM1 EQU T1_M+T1_C*4+T1_G*8

TMOD_SET EQU TIM0+TIM1*16

BIT_TIME EQU 11059200/12/4800

T0_SET EQU 256-BIT_TIME

T0_STRT EQU 256-BIT_TIME/2

IN EQU P3.4

LJMP START

ORG 0BH

PUSH PSW

PUSH ACC

DJNZ R2,NEXT

PUSH ACC

MOVX A,@R1 ;odczyt numeru przerwania

ANL A,#03H

MOVX @R1,A ;skasowanie przerwania

CJNE A,#1,INT_END ;czy przerwanie nr 1

SETB TR0 ;włącz Timer 0

CLR EX1 ;blokuj przerwanie INT1

POP ACC

POP PSW

RETI

INT_END: ;obsługa innych przerwań

PUSH ACC

MOV R1,#CSAD ;skasowanie przerwania

MOVX A,@R1 ;w przetworniku A/C

POP ACC

MOV R1,#CSIC ;skasowanie przerwania

MOVX @R1,A ;w sterowniku

POP ACC

POP PSW

RETI

LAST: ;odebrano cały bajt

MOV TL0,#T0_STRT ;ustawienia dla kolejnej

MOV R2,#10 ;transmisji

MOV A,#1

MOVX @R1,A ;skasowanie przerwania

SETB EX1

MOV A,R7 ;odebrany bajt na LCD

LCALL WRITE_DATA

POP ACC

POP PSW

RETI

NEXT: ;kolejny bit transmisji

MOV C,IN ;pobierz bit

MOV A,R7

RRC A ;dopisz do poprzednich

MOV R7,A

POP ACC

ORG 100H

START:

MOV TMOD,#TMOD_SET ;Timer 0 dla

MOV TH0,#T0_SET ;transmisji

MOV TL0,#T0_STRT ;1/2 bitu startu

MOV R2,#10 ;licznik bitów

MOV R1,#CSIC ;skasowanie przerwania

MOV A,#1 ;1 (IOI) w sterowniku

MOVX @R1,A

SETB EA ;włącz przerwania

SETB ET0 ;od Timera 0

SETB EX1 ;i z wejścia INT1

SJMP $

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.

Wnioski:

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.



Wyszukiwarka

Podobne podstrony:
Napęd i ster
3 kanał ster świateł dysko
13 programowalny kontroler przerwan 8259
CW 06 B przerw
ADA wyjatki przerw3
przerwania urz peryf
Twórczość Kazimierza Przerwy -Tetmajera, Szkoła, Język polski, Wypracowania
Jak przerwać wykonywanie pętli (for, PHP Skrypty
Teoria ster. 4, Politechnika Lubelska, Studia, semestr 5, Sem V, Nowy folder
przerwa
przerwan
111-4, materiały studia, 111. WYZNACZANIE SZEROKOŚCI PRZERWY ENERGETYCZNEJ W PÓŁPRZEWODNIKU METODĄ T
kospekt12, Elektrotechnika AGH, Semestr II letni 2012-2013, Fizyka II - Laboratorium, 12 Wyznaczanie
PRZERWANIE CIĄŻY DO 9 TYGODNIA, Wszechnica Świętokrzyska, praca, seminarium
AVT503 Zdalne ster rygla
Mokroprocesorowy moduł do ster piecem

więcej podobnych podstron