Antena a AV vstup u televize
Ing. Petr Procházka
pprochaz
Středa Březen 17 12:06:48 CET 2004
Zdravim,
tak jsem po nekolika experimentech s onim kodem prisel
na to, kde byla chyba...
Nebylo potreba ani zakazovat preruseni, jen jsem si vytahl
kontrolni ledky a sledoval, kdy a hlavne jak se obsluhuje
preruseni.
Pokud se totiz vyvola preruseni od serioveho kanalu,
muze to mit 3 duvody. Ja si myslel ze to muzou byt jen
dva, a to ty, ktere jsou indikovany priznakovymi bity
RI (recive) a TI (transfer). Jenze pak jsem si vsiml
v knize "Mikrokontrolery ATMEL s jadrem 8051" obrazku 31
na str. 46 a koukam, on je tam jeste jeden priznakovy
bit SPIF - ten ale nevim co dela. Takze jsem upravil
cast kodu, resp. zamenil podminku jb TI, xmit za
jnb RI, xmit a ono se to rozbehlo.
Cili vetev, ktera obsluhuje preruseni pri prijmu znaku
se spusti pouze a jen tehdy, kdyz bude nastaven priznak RI.
Predtim se to spoustelo jen kdyz nebyl nastaven TI (a vyvolalo
se preruseni), takze se mohlo stat, ze to reagovalo i na onen SPIF.
Kazdopadne pomohla zamena jednoho radku a uz to chodi.
Diky vsem za rady, pripominky, namety, nasmerovani...
Cast zmeneneho kodu (cely je prilozen u meho posledniho
mailu, pripadne na pozadani zaslu).
Chodi to spolehlive na 19.2kbps, bufferovane (32B prijem,
32B vysilani, mezi vysilanim a prijmem je prodleva),
zadna ztrata dat.
uart:
jnb RI, xmit
; !!! puvodne bylo: jb TI, xmit !!!
mov @R0, SBUF ; co prislo, dam do akumulatoru
inc R0 ; posun ukazatele
inc R2 ; inkrementace poctu doslych bytu
clr RI
cjne R2,#32, end_uart ; pokud je buffer plny,
setb RTS ; zastavim tok dat
setb Buf_FULL ; nastavim priznak plneho bufferu
cpl P1.6
jmp end_uart
xmit:
cpl P1.7
end_uart:
reti
--
----
Martin Sveda
email: sejda@kn.vutbr.cz
martin.sveda@kn.vutbr.cz
www: www.kn.vutbr.cz/~sveda3
Další informace o konferenci Hw-list