czy dobrze obliczyłem przerwanie z UART

Feb 25, 2004 4 Replies

Witam Mam ustawioną transmisję asynch. w 8051 - 19200 bodów i uaktywnione przerwanie z UART. Mam pytanie czy przerwanie bedzie nastepowało co ok. 50us czyli po odbiorze każdego bitu i co za tym idzie obsługa tegoż przerwania nie powina być dłuższa niz 50us. Dodam jeszcze że cykl zegara wynosi 1us. Czy dobrze policzyłem? Za wszelkie odpowiedzi z góry dziękuje i pozdrawiam.



Użytkownik "|PrezO|" <m.szycko-wytnij snipped-for-privacy@bsk.vectranet.pl> napisał w wiadomości news:c1hqco$1hv$ snipped-for-privacy@bialystok.bsk.vectranet.pl...

Przerwanie jest zgłaszane po skompletowaniu całego bajtu (bit startu + 8 bitów danych + bit stopu) czyli 10 bitów, a więc mniej więcej to, co policzyłeś razy 10 (ok. 520us). A czas wykonywania procedury obsługi jest zależny od tego co w niej napiszesz. Nie powinna być dłuższa niż tych 520 cykli maszynowych.

QmX.

Z tego co pamiętam przerwanie nastapi po zapełnieniu bufora czyli po wczytaniu całego znaku z bitem stopu.

Aczkolwiek w pojedynczych przypdkach moze siegnac nawet do 1000 cykli, tyle ze nastepne trzeba obsluzyc w 40 ;-)

Użytkownik "Milosz Skowyra" snipped-for-privacy@wp.pl napisał w wiadomości news: snipped-for-privacy@wp.pl...

ale tylko przy zalozeniu, ze w ciagu pierwszych 520 us obsugi przerwania wyciagniemy znak z SBUF'a a nie na koncu tych 1000 us

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required