PICAXE vice seriovych linek

Zapletal Martin zapletal na inoma.cz
Pátek Říjen 17 11:08:22 CEST 2014


Prekryvat se nemohou. Postup je presne dany a zasebou.
1: prectou se data z pinu B.1(pokud nejsou po timeoutu se jde dal)
2: jsou-li data z pinu B.1, preposlou se na pin B.3
3: byla-li odeslana data z pinu B.3 do PC, PC odesle prikaz na pin C.2
4: vykona se akce na zaklade dat z pinu C.2 a cyklus se vraci na zacatek a cekani na data z B.1

Nicmene uz vidim problem. Cist data z PC pinu C.2 by se melo pouze v pripade, ze data byla do PC odeslana na pin B.3. Prubnu to...

Zaplik
  ----- Original Message ----- 
  From: Hynek Sladky 
  To: HW-news 
  Sent: Friday, October 17, 2014 10:55 AM
  Subject: Re: PICAXE vice seriovych linek


  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... 

  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)
  Stejne se ale nevyhnete problemu, pokud se datove pakety budou prekryvat...

  Hynek Sladky




  Dne 17.10.2014 10:15, Zapletal Martin napsal(a):

    Zdravim. 
    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. 
    Jak to ma fungovat: 
    Prectu data z TTL, zjistim stav pinu1 a vysledek poslu do PC. PC zareaguje a odpovi. Na odpoved zareaguje PICAXE a provede select. 
    Tady je fragment hlavni casti kodu: 

    MAIN1:;cteni dat a obsluha 
     b11="" 
     b12="" 
     if pin1 = 1 then 
       b13="1" else b13="0" endif 
     SERIN [10],B.1,T9600_16,b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11 
     if b11<>"" then 
       serout B.3,N9600_16,("#0A",b13,b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,13,10) 
    endif 
    SERIN [10],C.2,N9600_16,b12,b13 
    if b12="S" then 
     select b13 
     case "0" 
       low B.4 
       low B.5 
       low B.6 
     case "1" 
       high B.4 
     case "2" 
       high B.4 
       high B.5 
     case "3" 
       high B.4 
       high B.5 
       high B.6 
     endselect 
    endif 
    goto MAIN1 

    dik Zaplik 





------------------------------------------------------------------------------


  _______________________________________________
  HW-list mailing list  -  sponsored by www.HW.cz
  Hw-list na list.hw.cz
  http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20141017/3c01c1bf/attachment.html>


Další informace o konferenci Hw-list