[elektro] PIC18 számláló

Kiss Gabor kissg at ssg.ki.iif.hu
Thu Jun 13 15:47:54 CEST 2013


On 06/13/2013 01:19 PM, Nemka wrote:

>>> - 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...)
>
>
> A FI által leírt esetre írtam választ. Ott szerepel, hogy van

Én pedig továbbgondoltam, és felvázoltam egy kézenfekvő lehetőséget
az elrontásra.

> lehetőség letiltani a megszakítást, tehát a) nem megszakítás rutinban
 > van a kiolvasó rész, b) nem magasabb prioritású megszakítás rutinban
 > van a kiolvasó rész.

Csak a szőrszálhasogatás kedvéért. :-)
Ezt írta:
| Az IT tiltható rövid időre, de a számláló nem állítható meg,

Úgy is lehet érteni, hogy a kiolvasó kódnak kis időre szabad tiltania
a _timer_ interruptját. És akkor abszolúte nem következik belőle, hogy a
kiolvasás maga nem egy másik IP rutinban történik.

> Az általad felvetett esetre az a megoldás, hogy a timer megszakítást
> magasabb prioritásúra kell beállítani (hiszen az innen kapott érték az
> alapja a kiolvasó rész további műveleteinek), mint a kiolvasó rutint és
> így már nem is lesz probléma.

Igen, a másik lehetőség ez.

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