[UART 8051] problem z przerwaniem od UART-u

Jun 07, 2004 10 Replies

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



U¿ytkownik "Pablo C" <pch[ciach]@poczta.onet.pl> napisa³ w wiadomo¶ci news:ca1egj$j2a$ snipped-for-privacy@nemesis.news.tpi.pl...

Prawdopodobnie masz obs³ugê odbioru podpiêt± do przerwania timera T1 (adres

1BH), a nie przerwania RS (23H).

Tymczasem Jarek

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

U¿ytkownik "Predator" snipped-for-privacy@op.pl napisa³ w wiadomo¶ci news:ca1eu8$rgu$ snipped-for-privacy@news.onet.pl...

Nie zgadzam siê. Przerwanie generuje tylko zmiana stanu znacznika z 0 na 1.

Wiesza siê, bo mo¿e zapomnia³ przechowaæ ACC lub znaczniki na stosie:-)

Przy odczycie flagê RI mo¿na/nale¿y wyzerowaæ po odczycie danej z SBUF.

Tymczasem Jarek

na 100% w³±czam w³a¶ciwe przerwanie. pojawia mi siê odpowiednia flaga odbioru lub nadawania i koniec.

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

U¿ytkownik "Pablo C" <pch[ciach]@poczta.onet.pl> napisa³ w wiadomo¶ci news:ca1g23$q8v$ snipped-for-privacy@nemesis.news.tpi.pl...

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

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 :))

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

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

U¿ytkownik "Pablo C" <pch[ciach]@poczta.onet.pl> napisa³ w wiadomo¶ci news:ca1jrt$lhp$ snipped-for-privacy@atlantis.news.tpi.pl...

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

Pozd Gissbourne

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

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required