[UART 8051] problem z przerwaniem od UART-u
Masz problem? Zapytaj na forum elektroda.pl
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
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
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
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
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
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
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
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
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
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
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