[UART 8051] problem z przerwaniem od UART-u



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "Pablo C" <pch[ciach]_at_nospam_poczta.onet.pl>
Subject: [UART 8051] problem z przerwaniem od UART-u
Date: Mon, 7 Jun 2004 11:59:40 +0200


nie potrafię wykorzystać przerwania od układu uart do komunikacji procka z
pc-tem. komunikacja w ogóle działa i steruję sobie pracą procesora z pc-ta.
ale zaistniała potrzeba aby procek cały czas coś robił a komunikacja ma się
odbywać sporadycznie i tylko na wywołanie z pc-ta. po uaktywnieniu
przerwania procek mi się wiesza. próbowałem zaraz po wejściu do obsługi
przerwania zablokować je, żeby się nie pojawiło w trakcie wysyłania albo
odbierania ale to nic nie daje. może nie można w trakcie obsługi przerwania
od uartu wysyłać albo odbierać transmisjii??
jeszcze jedno. jak nie wyzeruję flag scon.0 albo scon.1 to teoretycznie nie
powinienem dostać kolejnego przerwania. a jest odwrotnie ja dostaję je
cyklicznie mimo, że nic nie odbieram ani nie wysyłam. co jest grane??

Pozdrawiam
PC



========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.internetia.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "JarekC" <jarekc_at_nospam_alpha.net.pl>
Subject: Re: [UART 8051] problem z przerwaniem od UART-u
Date: Mon, 7 Jun 2004 12:04:23 +0200



Użytkownik "Pablo C" <pch[ciach]_at_nospam_poczta.onet.pl> napisał w wiadomości
news:ca1egj$j2a$1_at_nospam_nemesis.news.tpi.pl...
nie potrafię wykorzystać przerwania od układu uart do komunikacji procka z
pc-tem. komunikacja w ogóle działa i steruję sobie pracą procesora z
pc-ta.
ale zaistniała potrzeba aby procek cały czas coś robił a komunikacja ma
się
odbywać sporadycznie i tylko na wywołanie z pc-ta. po uaktywnieniu
przerwania procek mi się wiesza. próbowałem zaraz po wejściu do obsługi
przerwania zablokować je, żeby się nie pojawiło w trakcie wysyłania albo
odbierania ale to nic nie daje. może nie można w trakcie obsługi
przerwania
od uartu wysyłać albo odbierać transmisjii??
jeszcze jedno. jak nie wyzeruję flag scon.0 albo scon.1 to teoretycznie
nie
powinienem dostać kolejnego przerwania. a jest odwrotnie ja dostaję je
cyklicznie mimo, że nic nie odbieram ani nie wysyłam. co jest grane??

Prawdopodobnie masz obsługę odbioru podpiętą do przerwania timera T1 (adres
1BH), a nie przerwania RS (23H).

Tymczasem
Jarek



========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Pablo C" <pch[ciach]_at_nospam_poczta.onet.pl>
Subject: Re: [UART 8051] problem z przerwaniem od UART-u
Date: Mon, 7 Jun 2004 12:21:40 +0200



Prawdopodobnie masz obsługę odbioru podpiętą do przerwania timera T1
(adres
1BH), a nie przerwania RS (23H).

na 100% włączam właściwe przerwanie. pojawia mi się odpowiednia flaga
odbioru lub nadawania i koniec.



========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.onet.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Predator" <energetykaNospam_at_nospam_op.pl>
Subject: Re: [UART 8051] problem z przerwaniem od UART-u
Date: Mon, 7 Jun 2004 12:11:49 +0200


jeszcze jedno. jak nie wyzeruję flag scon.0 albo scon.1 to teoretycznie
nie
powinienem dostać kolejnego przerwania.

dlaczego? Przerwania będziesz miał generowane non stop,
dlatego Ci się "wiesza" (wykonuje obsługę przerwania) procek.

Po przyjęciu przerwania nalezy wyzerować flagę.

Pozdrawiam
Darek


========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.internetia.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "JarekC" <jarekc_at_nospam_alpha.net.pl>
Subject: Re: [UART 8051] problem z przerwaniem od UART-u
Date: Mon, 7 Jun 2004 12:13:51 +0200



Użytkownik "Predator" <energetykaNospam_at_nospam_op.pl> napisał w wiadomości
news:ca1eu8$rgu$1_at_nospam_news.onet.pl...
jeszcze jedno. jak nie wyzeruję flag scon.0 albo scon.1 to teoretycznie
nie
powinienem dostać kolejnego przerwania.

dlaczego? Przerwania będziesz miał generowane non stop,
Nie zgadzam się. Przerwanie generuje tylko zmiana stanu znacznika z 0 na 1.

dlatego Ci się "wiesza" (wykonuje obsługę przerwania) procek.
Wiesza się, bo może zapomniał przechować ACC lub znaczniki na stosie:-)

Po przyjęciu przerwania nalezy wyzerować flagę.
Przy odczycie flagę RI można/należy wyzerować po odczycie danej z SBUF.

Tymczasem
Jarek





========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.nask.pl!news-stoc.telia.net!217.209.241.210.MISMATCH!news-stod.telia.net!telia.net!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Pablo C" <pch[ciach]_at_nospam_poczta.onet.pl>
Subject: Re: [UART 8051] problem z przerwaniem od UART-u
Date: Mon, 7 Jun 2004 12:26:04 +0200


dlaczego? Przerwania będziesz miał generowane non stop,
dlatego Ci się "wiesza" (wykonuje obsługę przerwania) procek.

Po przyjęciu przerwania nalezy wyzerować flagę.

zeruję flagi ale to nic nie daje. z chwilą gdy w trakcie obsługi przerwania
próbuję coś wysłać program zawiesza się. zaraz po wejściu do obsługi
przerwania wyłączam przerwanie od uartu, żeby się nie zapętlił. powinien
więc spokojnie wykonać kilka pleceń i zakończyć przerwanie. ale on już dawno
wisi :-( mam wrażenie, że nie daje się wysłać z z uartu w trakcie obsługi
przerwania.

mov sbuf.acc <<<< tu staje



========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.internetia.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "JarekC" <jarekc_at_nospam_alpha.net.pl>
Subject: Re: [UART 8051] problem z przerwaniem od UART-u
Date: Mon, 7 Jun 2004 12:43:02 +0200



Użytkownik "Pablo C" <pch[ciach]_at_nospam_poczta.onet.pl> napisał w wiadomości
news:ca1g23$q8v$1_at_nospam_nemesis.news.tpi.pl...
dlaczego? Przerwania będziesz miał generowane non stop,
dlatego Ci się "wiesza" (wykonuje obsługę przerwania) procek.

Po przyjęciu przerwania nalezy wyzerować flagę.

zeruję flagi ale to nic nie daje. z chwilą gdy w trakcie obsługi
przerwania
próbuję coś wysłać program zawiesza się. zaraz po wejściu do obsługi
przerwania wyłączam przerwanie od uartu, żeby się nie zapętlił. powinien
więc spokojnie wykonać kilka pleceń i zakończyć przerwanie. ale on już
dawno
wisi :-( mam wrażenie, że nie daje się wysłać z z uartu w trakcie obsługi
przerwania.

mov sbuf.acc <<<< tu staje

Według mnie tak powinno to wyglądać:

RSINT:
CLR EA ; blokujemy zezwolenie na przerwania
PUSH ACC ; odkładamy ACC na stos

JNB SCON.0, RSINT1 ; czy znacznik odbioru ustawiony? nie, skok
MOV ACC, SBUF ; tak odczytujemy znak
MOV SBUF, ACC ; i odsyłamy
CLR SCON.0 ; zerujemy znacznik odbioru

RSINT1:
JNB SCON.1, RSINTEND ; czy znacznik wysłania ustawiony? nie, skok
CLR SCON.1 ; zerujemy znacznik wysłania

RSINTEND:
POP ACC
SETB EA
RETI

Tymczasem
Jarek



========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!news-stoc.telia.net!217.209.241.210.MISMATCH!news-stod.telia.net!telia.net!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Pablo C" <pch[ciach]_at_nospam_poczta.onet.pl>
Subject: Re: [UART 8051] problem z przerwaniem od UART-u
Date: Mon, 7 Jun 2004 13:33:15 +0200


dzięki
zapodam do procka i zobaczę. ja blokowałm tylko przerwanie od uartu bo
oprócz niego mam jeszcze jedno zewnętrzne ale najwyższy priorytet ustawiłem
dla seriala.

pozdrawiam
PC



========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.onet.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Gissbourne" <gissbourne_at_nospam_poczta.onet.pl>
Subject: Re: [UART 8051] problem z przerwaniem od UART-u
Date: Mon, 7 Jun 2004 14:37:39 +0200



Użytkownik "Pablo C" <pch[ciach]_at_nospam_poczta.onet.pl> napisał w wiadomości
news:ca1jrt$lhp$1_at_nospam_atlantis.news.tpi.pl...
dzięki
zapodam do procka i zobaczę. ja blokowałm tylko przerwanie od uartu bo
oprócz niego mam jeszcze jedno zewnętrzne ale najwyższy priorytet
ustawiłem
dla seriala.

Przerwanie nie moze przerwac przerwania tego samego poziomu (priorytetu),
wiec blokowanie przerwan w procedurze obslugi przerwania jest pozbawione
sensu.

Pozd
Gissbourne



========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!newsfeed.atman.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Pablo_C" <pch[ciach]_at_nospam_poczta.onet.pl>
Subject: Re: [UART 8051] problem z przerwaniem od UART-u
Date: Tue, 8 Jun 2004 08:16:11 +0200


okazało się, że kaszaniło się bo używam procka 89s8252 a on ma jeszcze
przerwanie od spi i to powodowało zawieszanie. teraz w procedurze wysyłania
znaku czekam aż skończy i automatycznie zeruję bit przerwania i działa.

dzięki za pomoc

PC



========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Predator" <energetykaNospam_at_nospam_op.pl>
Subject: Re: [UART 8051] problem z przerwaniem od UART-u
Date: Mon, 7 Jun 2004 12:57:00 +0200


zeruję flagi ale to nic nie daje.

być może tu Jarek ma rację, jak znajdę chwilę
to zerknę do opisu (nie żebym nie wierzył Jarkowi ;)
ale dlaczego mnie się inaczej wydawało :))

mov sbuf.acc <<<< tu staje

wstaw tu całą procedure obsługi tego
przerwania, łącznie z powrotami z przerwania
i wywołaniem ewentualnych podprogramów. Zapodaj
wszystko nawet jeśli wydaje ci się nieistotne
tutaj :). Może faktycznie coś zostawiasz na stosie.
Że tak głupio zapytam, a czy z przerwania powracasz RETI?
Co znaczy zawiesza? - wpada w pętle, czy skacze do jakiegoś
losowego adresu w kodzie programu?

Pozdrawiam
Darek



========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!fu-berlin.de!uni-berlin.de!not-for-mai