[elektro] PIC18 számláló

Kiss Gabor kissg at ssg.ki.iif.hu
Thu Jun 13 11:59:13 CEST 2013


On 06/13/2013 10:24 AM, Nemka wrote:
> Én így szoktam:
>
> - tiltsd le a timer megszakítást
> - olvasd ki a timer értékét
> - ellenőrizd a timer megszakítás flag-et
> -- ha a flag aktív, akkor ellenőrizd a timerből kiolvasott érték legfelső bitjét
> --- ha a legfelső bit 0, akkor növeld eggyel a szoftveres számlálódat és
>      töröld a megszakítás flag-et
> - olvasd ki a szoftveres számlálódat
> - engedélyezd a timer megszakítást

Most már csak óvatosan merek megnyikkanni. :-)
Mi van, a következő hipotetikus esetben?

A számláló felső szavát inkrementáló IT rutin elindul. Már növelte is.
Épp készül törölni az Overflow bitet (TMR0IF), mikor beüt egy magasabb
prioritású interrupt, és elkezdi kiolvasni a számlálót a fentiek
szerint. Az IT rutinban tehát nem mindegy a sorrend.
Ha így csinálja, duplán inkrementálódik a felső szó.

Szóval vigyázni kell, sokkal több rossz megoldás van, mint jó. :-)
Jól meg kell vizsgálni a peremfeltételeket.
(Csak hangosan gondolkodom...)

g
-- 
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing in e-mail?



More information about the Elektro mailing list