czas trwania przerwania timera

0

Majać mikrokontroler 8051 i wywułując przerwanie od timera0 (T0) ,przyjmując że T0 pracuje w trybie 16 bit i przyjmując, że cykl maszynowy trwa 1 mikrosekundę,timer odmierza 65535 mikrosekund czyli 65ms i w momencie przepełnienia wywołuje przerwanie. Pytanie pierwsze: ile czasu trwa przerwanie, pytanie drugie: po zakończeniu przerwania timer znów odlicza 65535 cykli i po przepełnieniu wywołuje przerwanie czy dalsza część programu zostaje wykonywana?

1

Na 8051 sie nie znam, ale dam ci kilka protipów natury ogólnej gdyż z tego co czytam to całkiem podobne do przerwań w AVRach.

Pytanie pierwsze: ile czasu trwa przerwanie

Przerwanie, a konkretnie jego kod, będzie trwało tyle, ile cykli będą miały instrukcje zawarte w tym przerwaniu, aczkolwiek przerwanie (nie wiem jak do końca jest na 8051 (przypuszczam że sie da)) może zostać przerwane przez inne przerwanie ( (czytaj maskowanie przerwań, btw da sie fajnie tym sposobem uzyskać cooperative multitasking).

pytanie drugie: po zakończeniu przerwania timer znów odlicza 65535 cykli i po przepełnieniu wywołuje przerwanie czy dalsza część programu zostaje wykonywana?

Nie do końca rozumiem o co ci chodzi. Ale po zakończeniu przerwania timer znów odlicza 65535 cykli to jest prawda, i dalsza część programu zostaje wykonywana to też jest prawda. Bo timer pewnie chodzi niezależnie od reszty bebechów w procku.
Bo jak następuje przerwanie to, mówiąc mniej więcej.

  • Procesor zapamiętuje do którego miejsca powinien wrócić (via stos pewnie).
  • Procesor wykonuje przerwanie
  • Zakładając że przerwanie nie zostanie przerwane, procesor wraca do miejsca w którym jego praca została przerwana.
1

Czemu po zakończeniu przerwania? Raczej po jego zgłoszeniu.
Timer "klepie" sobie, dolicza do wartości max, wywołuje przerwanie od overflow, które zostaje jakoś tam obsłużone ale sam timer pracuje dalej. Bo inaczej działanie jego działanie jako timera nie miałoby sensu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1