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