PIC UART
Attila Sass
attila.sass at palettainvent.hu
Sat Sep 3 17:18:24 CEST 2005
> -----Original Message-----
> From: elektro-bounces at tesla.hu
> [mailto:elektro-bounces at tesla.hu] On Behalf Of Moczik Gabor
> Sent: Saturday, September 03, 2005 4:29 PM
> To: elektro at tesla.hu
> Subject: PIC UART
>
>
> Hali!
>
> Lenne egy kerdesem a PIC fun-okhoz.
> Interrupt-bol hasznalom az UART-ot fogadasra es kuldesre is.
> Kuldesnel ha
> nincs tobb adat, akkor a TXIE-t 0-ra kell allitani, hogy ne
> zaklasson, aztan
> a tx bufferbe irasnal meg 1-re, hogy mehet.
> Az lenne a kerdes, hogy kotelezo-e 0-ra allitani a TXIE-t mar
> akkor, amikor
> eppen irom be az utolso byteot a TXREG-be?
> Tehat ekkor ha ez a byte elment mar nem is lesz tobb TX interrupt.
>
> Problema-e, ha ekkor meg nem tiltom le, hanem az utolso byte
> utan jon egy
> megszakitas, de kiderul hogy nincs mit kuldeni, erre torlom a
> TXIE-t, de a
> TXREG-be nincs mit irni.
Szerintem nem kötelező, a TXIF és a TXIE teljesen független egymástól.
Vagyis a TXIE és a TXIF is 1, akkor megszakítás történik. A TXIF pedig
akkor 1, ha a TXREG üres (és ha teszel bele valamit akkor még 1 ut.
ciklus ideig 1 marad!) , vagyis, a legelején, és még akkor ha tartalma
beíródhatott a TSR-be (mert abból maradéktalanul kiment az előző adat),
és így új adatot lehet bele tenni. Ha nem teszel bele új adatot, mert
tudod, hogy nincs több, akkor csak simán letiltod a TXIE-t és kész. A
TXIF ettől még 1 marad, és amint a TXIE-be 1-et írsz, megint meghívódik
a megszakítási rutinod, hogy tegyél bele valamit.
>
> Valamint azt szeretnem meg, hogy ha kesobb a TXIE-t 1-be
> allitom, akkor
> rogton generaljon is megszakitast. Ezt alapbol igy csinalja?
Ha a TXEN == 1 és kiürült a TXREG (vagy még sosem volt benne adat),
akkor végig 1 lesz a TXIF, vagyis a "TXIE = 1" parancs után a
megszakításkezelő jön (feltéve persze, hogy amúgy engedélyezve vannak a
megszakítások).
A "TXEN = 1" parancs is azonnal 1-be teszi a TXIF-et, mert még üres a
TXREG.
--
sassi
More information about the Elektro
mailing list