[elektro] PIC 16 bit megszakítás
Zoltán Balla
sdrlab at yandex.ru
Fri Oct 31 12:40:32 CET 2014
2014.10.31. 11:50 keltezéssel, potyo írta:
> Nem volt dolgom 16 bitessel, de logikus lenne, hogy ugyanolyan prioritású
> megszakításba mégegyszer nem futhat bele, amíg ki nem ért az előzőből. De a
> TXIF bitet szerintem nem kell kézzel törölni, hanem amikor írsz valamit a
> TXREG regiszterbe, akkor sajátmagától törlődik a TXIF bit. Sőt, lehet, hogy
> azzal, hogy kézzel törlőd a bitet, ha kétbájtos a hardveres puffer, akkor
> épp elrontod a működést.
>
> C-ben van a program? Esetleg volatile-nak deklarálni az index változót?
> Mindenesetre ne mi találgassunk már, hogy mit csináltál rosszul, mutasd meg
> a kódrészletet, aztán abból tudunk valamit mondani.
>
A kód semmiben sem más, mint amit a mikrovezérlő adatlapján található
minta is tartalmaz! Én a spanyolviaszt nem akartam keresgélni, mikor
írtam...ott úgy volt, a megszakítási rutin elején, kézzel van törölve a
flag!
A volatile itt nem ad semmit sem, mert az index változó statikusan csak
a megszakítási rutinban létezik, sehol máshol hozzá nem nyúlhatok.
Gyak ennyi a kód a rutinban:
static u16 index;
IFS1bits.U2TXIF = 0;
U2TXREG=tomb[index];
if(index<227) index++;
else index=0;
More information about the Elektro
mailing list