jurazbabic píše:belgarat píše:Ciste teoreticky - to je situace kdyz se zmrsi delka (aby prijemce zbytecne cekal). A mluvime-li nahodnych chybach tak pravdepodobnost zmrseni byte A (delka) a byte B (stop) je stejna. V pripade zmrseni (vynechani) stop by take cekal ... a cekal ?
Jestli je to tak, hodim si zrejme korunou a asi vyhraje delka (viz vsechny packetove hierarchicke protokoly).
Máš pravdu, je to jedno, měli jsme původně stop i délku, délka nám připadla jako zbytečná. Mě se asi víc líbí stop, je to takové symetrické.
OK - dekuji. Jestli je to zalezitost estetiky, kazdy jsme jiny a obe reseni jsou pouzitelna. Sorry ... chtel jsem se ujistit ze jsem neprehledl "detail".
belgarat píše: Hraje napr. 200-300ms vyznamnou roli
Hraje. Představ si situaci, že ti polovina nebude odpovídat (odpojení půlky, napájení, nepřítomnost...) a na každého by jsi čekal i třeba jen 100ms.
Aha, rozumim. A zmotal jsem jabka a hrusky: master prece nemusi cekat tak dlouho, vyprsi (kratky) timeout, rekneme 20ms (zalezi na delce zprav, pri jednotkach byte a 9600b jsou na zpravu nizke desitky ms), a jede se na dalsiho. Opetovne odeslani nejlepe round-robinem.
Timeout na strane masteru by se dalo resit timeoutem na odstup dat v "packetu". Prijde dlouha delka (nebo se zmrsi stop), master zbytecne ceka ... ale pouze treba 5ms (~2 byte pri 9600baud) a pak ma packet za nedoruceny (nepotvrzeny).
belgarat píše:mam sotva 2 kila
Při dnešních cenách např. mega88? V avrgcc je na ccit crc knihovna, netuším, kolik to zabere. Ale v té 88 mám spoustu místa. Používáš optimalizaci?
belgarat píše:Planuji to udelat tak, ze po zmene snimace musi "novy" stav trvat urcity pocet ctecich cyklu,
Sorry
) rad bych "to sve" nacpal do Nano. Pri slusnejsim stylu programovani jde v lepsich podminkach checksum jednoduse vymenit; budu na to pamatovat.
Jo tak nějak. Já používám něco jako filtr. Bit v 0 odečítá a v 1 přičíta do třeba bajtu, když je bajt > 2/3 maxima je výsledek 1, když < 1/3 je 0. Takže na každý bit potřebuješ jen 1B, to by se snad mohlo vejít. Můžeš třeba přičítat 10, odečítat jen 1, prostě to doladit dle potřeb.
Podobnou vec jsem pouzil v IR optosenzoru (tez Arduino Nano. Reklamni vsuvka:
http://cs.ttodbocna.wikia.com/wiki/IRDetektor)
Osobně jsem nikdy nenarazil na limity ani FLASH ani SRAM. Co tam máš za procesor?
[/quote]
Nano = 32K flash, 2K SRAM, 1K EEPROM. U toho serva to trochu "drelo"
, kdyz bude nejhur muzu odstrelit nejake "fancy" funkce.