Jak programowo ustawić flagi TI i RI w 8051 oraz wywołać obsługę przerwania UART?
Przerwania w 8051
From: Romuald Bialy <romekb_at_nospam_polbox.com>
Subject: Przerwania w 8051
Date: Sun, 07 May 2000 21:06:38 GMT
Witam !
2 krotkie pytanka...
Czy programowe ustawienie flagi TI (lub RI) poprzez SETB TI spowoduje
wygenerowanie przerwania UARTA ?
Jesli nie, to czy mozna z petli glownej wywolac procedure obslugi
takiego przerwania (przez ACALL) czyli czy po powrocie przez RETI nic
sie nie pokopie ?
--
Pozdrawiam.... Romuald Bialy
E'mail: romekb_at_nospam_polbox.com
WWW: http://www.polbox.com/r/romekb
From: "Willaim Bonawentura" <alchemik_at_nospam_bigfoot.com>
Subject: Odp: Przerwania w 8051
Date: Mon, 8 May 2000 10:20:43 +0200
Czy programowe ustawienie flagi TI (lub RI) poprzez SETB TI spowoduje
wygenerowanie przerwania UARTA ?
Tak i dotyczy to wszystkich IRQ.
From: "=?windows-1250?Q?Sylwester_=A3azar?=" <elektronik_at_nospam_alpro.com.pl>
Subject: Re: Przerwania w 8051
Date: Mon, 08 May 2000 20:19:42 GMT
Może się "pokopać".
Jeśli sztucznie wywołasz tą procedurę, to jeśli w trakcie jej obsługi
zostanie wygenerowane "prawdziwe" przerwanie - będzie kłopot.
Zazwyczaj w POP (Procedurze Obsługi Przerwania) masz gdzieś kasowanie tego
bitu.
Pół biedy jeśli na początku!
pozdrawiam,
Sylwester Łazar
electronics engineer
http://www.alpro.com.pl
elektronik_at_nospam_alpro.com.pl
__________________________________________
//ALPRO//- Projektowanie Systemów Elektronicznych
tel: +48 604 873468
tel/fax: (061) 8223-788
__________________________________________
Willaim Bonawentura napisał(a) w wiadomości:
<8f5tch$oqh$1_at_nospam_galaxy.uci.agh.edu.pl>...
Czy programowe ustawienie flagi TI (lub RI) poprzez SETB TI spowoduje
wygenerowanie przerwania UARTA ?
Tak i dotyczy to wszystkich IRQ.
From: "/\\_MS_/\\" <m____s_at_nospam_viper.pl>
Subject: Re: Przerwania w 8051
Date: Tue, 9 May 2000 07:25:59 +0200
Sylwester Łazar napisał(a) w wiadomości: ...
Może się "pokopać".
Jeśli sztucznie wywołasz tą procedurę, to jeśli w trakcie jej obsługi
zostanie wygenerowane "prawdziwe" przerwanie - będzie kłopot.
Zazwyczaj w POP (Procedurze Obsługi Przerwania) masz gdzieś kasowanie tego
bitu.
Pół biedy jeśli na początku!
pozdrawiam,
Sylwester Łazar
electronics engineer
Chwila moment ! Co sie moze pokopac?
AFAIK procedura obslugi przerwania nie startuje
dopuki jest wykonywane przerwanie o priorytecie
wyzszym lub ROWNYM . Efektem bedzie tylko
powtorne wykonanie procedur przerwania
po skonczeniu tego wywolanego sztucznie.
||\_/||
|| S || m___s_at_nospam_viper.pl
--
Własna strona WWW, w 5 minut, bez znajomości HTML - http://wizytowka.pl
From: "Wojtek Sujkowski" <wpsujkowski_at_nospam_qdnet.pl>
Subject: Re: Przerwania w 8051
Date: Tue, 9 May 2000 10:12:22 +0200
Sylwester Łazar napisał(a) w wiadomości: ...
Może się "pokopać".
Jeśli sztucznie wywołasz tą procedurę, to jeśli w trakcie jej obsługi
zostanie wygenerowane "prawdziwe" przerwanie - będzie kłopot.
Prawda,
ale wystarczy przed wywolaniem tej procedury zablokowac przerwanie
mogace ja wywolac
Wojtek
From: "=?iso-8859-2?Q?Sylwester_=A3azar?=" <elektronik_at_nospam_alpro.com.pl>
Subject: Re: Przerwania w 8051
Date: Tue, 09 May 2000 08:44:02 GMT
ale wystarczy przed wywolaniem tej procedury zablokowac przerwanie
mogace ja wywolac
Wojtek
No oczywiście! Równie dobrze można przekaźnikiem odłączyć drut transmisyjny
od kontrolera!
Jeżeli dane lecą nieregularnie - nie wystarczy ich po prostu ignorować :-)
pozdrawiam,
Sylwester Łazar
electronics engineer
http://www.alpro.com.pl
elektronik_at_nospam_alpro.com.pl
__________________________________________
//ALPRO//- Projektowanie Systemów Elektronicznych
tel: +48 604 873468
tel/fax: (061) 8223-788
__________________________________________
From: "Wojtek Sujkowski" <wpsujkowski_at_nospam_qdnet.pl>
Subject: Re: Przerwania w 8051
Date: Tue, 9 May 2000 21:08:03 +0200
Sylwester Łazar napisał(a) w wiadomości: ...
ale wystarczy przed wywolaniem tej procedury zablokowac przerwanie
mogace ja wywolac
Wojtek
No oczywiście! Równie dobrze można przekaźnikiem odłączyć drut
transmisyjny
od kontrolera!
Jeżeli dane lecą nieregularnie - nie wystarczy ich po prostu
ignorować :-)
pozdrawiam,
Nie przesadzaj, przeciez blokowaniem przerwania nie wylaczasz UARTA.
Zwroc uwage, ze Romuald potrzebuje wywolac procedure zawarta w
przerwaniu. Moze to zrobic poprzez programowe wygenerowanie przerwania
lub wywolanie wprost procedury. Niezaleznie od tego, ktora metode
wybierze to i tak na czas wykonywania tejze procedury musi zablokowac
odpowiednie przerwanie. Gdy wybierze metode sztucznego wywolania
przerwania to z zalozenia przy wykonywaniu tejze procedury ma
zablokowane przerwanie - czyz nie? Jesli wywola procedure jawnie to
musi tez jawnie zablokowac to przerwanie bo w przeciwnym wypadku w
trakcie jej wykonywanie moze nastapic rzeczywiste przerwanie, ktore
bedzie oddzialywac na te same dane!!
Pozdrowienia,
Wojtek
From: "=?iso-8859-2?Q?Sylwester_=A3azar?=" <elektronik_at_nospam_alpro.com.pl>
Subject: Re: Przerwania w 8051
Date: Wed, 10 May 2000 13:13:42 GMT
Nie przesadzaj, przeciez blokowaniem przerwania nie wylaczasz UARTA.
Zwroc uwage, ze Romuald potrzebuje wywolac procedure zawarta w
przerwaniu. Moze to zrobic poprzez programowe wygenerowanie przerwania
lub wywolanie wprost procedury. Niezaleznie od tego, ktora metode
Tu chyba masz rację. Chodziło mi o to, że trzeba uważać w takich przypadkach
na czas wykonania takiej procedury.
Jeśli POP od portu szeregowego trwa dłużej niż 0,5 znaku to jeśli wywoła się
"sztucznie" taką procedurę to może być kłopot.
Ale to są tylko dywagacje.
Jeśli dobrze pamiętam to sam wywoływałem POP z programu głównego i jakoś to
działało _at_nospam_9600 bodów. Ale uważam, że nie jest to dobra metoda.
A może zrobić osobną procedurą (podobną do tej w POP) i wywoływać ją w
programie głównym, tak aby raczej nie operować na wspólnych danych?
pozdrawiam,
Sylwester Łazar
http://www.alpro.com.pl
elektronik_at_nospam_alpro.com.pl
__________________________________________
//ALPRO//- Projektowanie Systemów Elektronicznych
tel: +48 604 873468
tel/fax: (061) 8223-788
__________________________________________
From: "Wojtek Sujkowski" <wpsujkowski_at_nospam_qdnet.pl>
Subject: Re: Przerwania w 8051
Date: Thu, 11 May 2000 01:49:35 +0200
Sylwester Łazar napisał(a) w wiadomości: ...
Nie przesadzaj, przeciez blokowaniem przerwania nie wylaczasz UARTA.
Zwroc uwage, ze Romuald potrzebuje wywolac procedure zawarta w
przerwaniu. Moze to zrobic poprzez programowe wygenerowanie
przerwania
lub wywolanie wprost procedury. Niezaleznie od tego, ktora metode
Tu chyba masz rację. Chodziło mi o to, że trzeba uważać w takich
przypadkach
na czas wykonania takiej procedury.
Jeśli POP od portu szeregowego trwa dłużej niż 0,5 znaku to jeśli
wywoła się
"sztucznie" taką procedurę to może być kłopot.
Całkowicie sie zgadzam. Nie znamy innych uwarunkowan w aplikacji
Romualda - np. jak jest szybkosc transmisji? jak czesto przychodza
dane?, czy sa w postaci strumienia czy pojedynczyvh ramek? itp. Byc
moze z analizy czasowej wyszlo mu, ze moze taki tricki stosowac
Ale to są tylko dywagacje.
Jeśli dobrze pamiętam to sam wywoływałem POP z programu głównego i
jakoś to
działało _at_nospam_9600 bodów. Ale uważam, że nie jest to dobra metoda.
Powiedzialbym tez ryzykowna - mozna sie "omsknac" (czasowo) na jednej
instrukcji i system sie wysypuje.
A może zrobić osobną procedurą (podobną do tej w POP) i wywoływać ją
w
programie głównym, tak aby raczej nie operować na wspólnych danych?
Jest to jakas idea tyle, ze rozrasta mu sie program i zajeta pamiec
RAM (rejestry). Moze tez probowac "pociac" te procedure tak aby
wywolywac tylko ten kawalek, ktory mu jest potrzebny - mozna
zredukowac do minimum mozliwosc kolizji.
pozdrawiam,
Takze
Wojtek
From: Romuald Bialy <romekb_at_nospam_polbox.com>
Subject: Re: Przerwania w 8051
Date: Wed, 10 May 2000 22:59:50 GMT
Wojtek Sujkowski napisał(a):
[ciap]
Dzieki wszystkim ! Teraz mam pelna jasnosc... SETB TI i po krzyku.
Konkretnie chodzi tu o spowodowanie wyslania paczki danych przez uart
(kolejne dane wysylane w przerwaniu, paczka 256 Bajtow). Ale
najlatwiej jest mi to zainicjowac z petli glownej poprzez SETB TI,
reszte zrobi przerwanie uart'a.
--
Pozdrawiam.... Romuald Bialy
E'mail: romekb_at_nospam_polbox.com
WWW: http://www.polbox.com/r/romekb
From: Grzegorz Redlarski <gred_at_nospam_kki.net.pl>
Subject: Re: Przerwania w 8051
Date: Tue, 09 May 2000 22:33:24 GMT
Mon, 08 May 2000 20:19:42 GMT "Sylwester Łazar"
<elektronik_at_nospam_alpro.com.pl> napisal:
Może się "pokopać".
Jeśli sztucznie wywołasz tą procedurę, to jeśli w trakcie jej obsługi
zostanie wygenerowane "prawdziwe" przerwanie - będzie kłopot.
Zazwyczaj w POP (Procedurze Obsługi Przerwania) masz gdzieś kasowanie tego
bitu.
Pół biedy jeśli na początku!
AFAIK TI jest kasowany automatycznie po przyjęciu przerwania.
Czy programowe ustawienie flagi TI (lub RI) poprzez SETB TI spowoduje
wygenerowanie przerwania UARTA ?
Tak i dotyczy to wszystkich IRQ.
Coś mi się zdaje, że nie dotyczy to przerwań zgłaszanych poziomem ale
głowy za to nie dam...
gr
From: "/\\_MS_/\\" <m____s_at_nospam_viper.pl>
Subject: Re: Przerwania w 8051
Date: Wed, 10 May 2000 07:27:02 +0200
Czy programowe ustawienie flagi TI (lub RI) poprzez SETB TI spowoduje
wygenerowanie przerwania UARTA ?
Tak i dotyczy to wszystkich IRQ.
Coś mi się zdaje, że nie dotyczy to przerwań zgłaszanych poziomem ale
głowy za to nie dam...
gr
Ustawienie flagi przerwania jest juz efektem
wykrycia przerwania , niezaleznie od
tego jak jest aktywowane
||\_/||
|| S || m____s_at_nospam_viper.pl
--
Przyznajemy się do niskich cen - http://rubikon.pl
From: Grzegorz Redlarski <gred_at_nospam_kki.net.pl>
Subject: Re: Przerwania w 8051
Date: Thu, 11 May 2000 22:04:45 GMT
Wed, 10 May 2000 07:27:02 +0200 "/\\ MS_\\" <m____s_at_nospam_viper.pl>
napisal(a):
Czy programowe ustawienie flagi TI (lub RI) poprzez SETB TI spowoduje
wygenerowanie przerwania UARTA ?
Tak i dotyczy to wszystkich IRQ.
Coś mi się zdaje, że nie dotyczy to przerwań zgłaszanych poziomem ale
głowy za to nie dam...
Ustawienie flagi przerwania jest juz efektem
wykrycia przerwania , niezaleznie od
tego jak jest aktywowane
Ustawienie tej flagi dla przerwan zewnetrznych jest "efektem wykrycia
przerwania" przy wyzwalaniu zboczem. Przy wyzwalaniu poziomem
odzwierciedla biezacy stan linii wejsciowej (w zwyklej '51 jest on
negacja wejsc INTx).
Przerwanie zewnetrzne wyzwalane poziomem, jesli nie zdazy byc
wywolane, a linia wroci na poziom nieaktywny, nie bedzie juz wywolane.
Podobnie wpisanie "1" do znacznika przerwania przy nieaktywnym wejsciu
bedzie niemozliwe gdyz bedzie natychmiast skasowane ze wzgledu na stan
wejscia INTx i nie dojdzie do uruchomienia obslugi przerwania.
gr
From: "Willaim Bonawentura" <alchemik_at_nospam_bigfoot.com>
Subject: Odp: Przerwania w 8051
Date: Wed, 10 May 2000 15:09:50 +0200
AFAIK TI jest kasowany automatycznie po przyjęciu przerwania.
TI oraz RI jako jedyne należy akurat kasować samodzielnie ...