[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