<html>
<head>
<meta content="text/html; charset=ISO-8859-2"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<font face="Helvetica, Arial, sans-serif">Podle popisu v manualu to
vypada jasne: SERIN ceka po dobu timeoutu nebo dokud neprijme
vsechna pozadovana data. Takze pokud behem vykonavani jednoho
SERIN prikazu zacnou prichazet data na druhy SERIN kanal, tak ta
se samozrejme nezachyti, resp. muze se zachytit nejaky zbytek dat,
jakmile se ukonci jeden SERIN a spusti druhy... <br>
<br>
Napada me jedno reseni: ve smycce kontrolovat stavy pinu pro jeden
a druhy UART. Jakmile se na jednom vydetekuje uroven L, tak se
pusti prislusny SERIN. Obejdou se tim timeouty a prislusny SERIN
se spusti okamzite, jakmile se vydetekuje, ze protistrana zacla
vysilat. Otazka ale je, zda to takto jde pouzit... (napr. zda
nepotrebuje SERIN po spusteni nejprve uroven H)<br>
Stejne se ale nevyhnete problemu, pokud se datove pakety budou
prekryvat...<br>
<br>
Hynek Sladky<br>
<br>
<br>
<br>
</font>
<div class="moz-cite-prefix">Dne 17.10.2014 10:15, Zapletal Martin
napsal(a):<br>
</div>
<blockquote cite="mid:0A27A8E202ED4854A5D6E2B6635AD88B@MZPC"
type="cite">Zdravim.
<br>
Do PICAXE18M2 bych potreboval nacpat celkem dve seriove linky. 1x
SERIN a 2x SEROUT. Mam to nadratovane, v principu to chodi, ale...
Pokud jede vse soucasne, tak data obcas prijdou, obcas ne. Pokud
pustim jen jednu linku, je vse OK. Da se to vubec provozovat
soucasne, nebo je treba dat v takoven pripade 2PICAXE? Zkousel
jsem laborovat s TimeOuty, ale to nic neresi. Pokud je vyhodim,
tak procesor ceka, nez data prijdou a nic jineho se neprovede. V
simulaci chodi vse OK, v procesoru to zlobi. Zkousel jsem to i na
ruznych pinech! V teto oblasti nejsem zadny guru mozna jsem neco
nepochopil nebo neco delam spatne, tak si rad vyslechnu Vase
nazory.
<br>
Jak to ma fungovat:
<br>
Prectu data z TTL, zjistim stav pinu1 a vysledek poslu do PC. PC
zareaguje a odpovi. Na odpoved zareaguje PICAXE a provede select.
<br>
Tady je fragment hlavni casti kodu:
<br>
<br>
MAIN1:;cteni dat a obsluha
<br>
b11=""
<br>
b12=""
<br>
if pin1 = 1 then
<br>
b13="1" else b13="0" endif
<br>
SERIN [10],B.1,T9600_16,b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11
<br>
if b11<>"" then
<br>
serout
B.3,N9600_16,("#0A",b13,b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,13,10)
<br>
endif
<br>
SERIN [10],C.2,N9600_16,b12,b13
<br>
if b12="S" then
<br>
select b13
<br>
case "0"
<br>
low B.4
<br>
low B.5
<br>
low B.6
<br>
case "1"
<br>
high B.4
<br>
case "2"
<br>
high B.4
<br>
high B.5
<br>
case "3"
<br>
high B.4
<br>
high B.5
<br>
high B.6
<br>
endselect
<br>
endif
<br>
goto MAIN1
<br>
<br>
dik Zaplik <br>
</blockquote>
<br>
</body>
</html>