Donton
Guest
Fri Aug 04, 2006 10:23 pm
pisze program w C dla at89c52. na starcie ustawiam brak zezwolenia dla
przerwania od timera 0 (ET0=0) i w pewnym momencie programu wlaczam
zezwolenie (ET0=1). wszystko bylo by po mojej mysli, gdyby nie to, ze w
tym momencie wykonuje sie to przerwanie. czy tak musi byc, czy da sie to
jakos ominac, aby przerwanie od timera 0 wykonalo sie dopiero w momencie
jego przepelnienia?
--
Donton
dziadek Ben
Guest
Fri Aug 04, 2006 11:03 pm
Quote:
czy da sie to jakos ominac, aby przerwanie od timera 0
wykonalo sie dopiero w momencie jego przepelnienia?
Przed włączeniem zezwolenia skasuj przerwanie, zerując znacznik TF0
(TCON.5).
--
dziadek Ben
[z adresu wytnij co trzeba]
Konop
Guest
Sat Aug 05, 2006 12:16 pm
Quote:
pisze program w C dla at89c52. na starcie ustawiam brak zezwolenia dla
przerwania od timera 0 (ET0=0) i w pewnym momencie programu wlaczam
zezwolenie (ET0=1). wszystko bylo by po mojej mysli, gdyby nie to, ze w
tym momencie wykonuje sie to przerwanie. czy tak musi byc, czy da sie to
jakos ominac, aby przerwanie od timera 0 wykonalo sie dopiero w momencie
jego przepelnienia?
Zezwolenie na przerwanie nie ma nic wspólnego z pracą licznika. Licznik
liczy od początku, przepełnia się, zgłasza przerwanie, ale to jest
zablokowane. Procedura obsługi przerwania jest więc wykonywana w momencie
zezwolenia na to przerwanie. Musisz skasować flagę przerwania przed
zezwoleniem na to przerwanie, albo zamiast blokować i odblokowywać
przerwanie - steruj pracą licznika. Nie wiem, jak ma działać ten licznik,
więc nie wiem, która opcja jest dla Ciebie lepsza - ale czujesz różnicę??
Pozdrawiam
Konop