ATmega128 USART TXC flag mizeria
VFX
info at vfx.hu
Sun Jan 18 03:07:35 CET 2004
Hali!
Füzesi Arnold wrote:
>
> Sziasztok!
>
> Van ugye a TXC flag, meg az UDRE flag.
> TXC jelzi 1-el, hogy ures a shiftreg is, meg az adatreg is. Magyarul kiment
> a cuccos teljesen.
>
> Namost, az a gondom, hogy mivel a TXC-t nézem, hogy vége-e az
> adatatvitelnek, ezert az elsõ
> adatatvitel nem lehet ugyan olyan mint a tobbi. Merthogy a TXC power-up
> erteke nulla. :(((
>
> Azaz a szokasos kuldesem:
> TXC vizsgalat.
> Buffer feltoltes
> UDRE interrupt enable (interrupt pakolja be a bufferbol az UDR-be az
> adatokat esznelkul amig a vegere nem er)
>
> Merthogy nemlogikusan szerintem az atmel fejlesztoi
> a TXC power-up erteket 0-nak vettek.
>
> Mivel a TXC-t beallitani nem lehet (1-et irok bele, akkor torlodik), ezert
> frankon ga'nyolhatok, hogy az elsõ sorosportra kuldes mas kell legyen mint a
> tobbi.
> (Jóó, tudom, csak egy if-el mondjuk, vagy ezer mas megoldas van ra...)
>
> Vagy ki kell kuldenem egy dummy karaktert (meg nagyobb ga'ny).
>
> Van erre valamilyen epkezlab trukk?
> Ami eszembejutott kiprobaltam. (UDRE interrupt engedelyez, majd az interrupt
> rutin letiltja merthogy ures a buffer)
Az UDRE-t nem kell hasznalni. Sima RETI es kesz.
Az USART_TXC vektort hasznalom csak.
Karakter kuldes elott (rcall SendChr) ellenorzom, hogy van-e aktiv RS232
atvitel (rcall Tx0Running), ha igen akkor a krakter megy a pufferbe. Ha
nincs akkor is megy a pufferbe, de azutan raugrok a USART_TXC interrupt
vektorra, mintha megszakitas jott volna. Igy jelentos kodhelyet
takaritok meg. Az interrupt rutin, meg vegzi a dolgat. User oldalon
teljesen latens modon megy igy a komunikacio.
Ha RTS/CTS is van, akkor az rendszerinterrupt rutinban ellenozrom, hogy
mehet-e tovabb a komunikacio. Igy ezzel sem kell a fo programot
'terhelni'.
UDV. VFX.
http://www.vfx.hu
More information about the Elektro
mailing list