OT: Arduino a software serial

Software pro železniční modelářství, simulátory, ovládání, plánování....

Moderátoři: Michal Dalecký, Jarda H.

OT: Arduino a software serial

Příspěvekod belgarat » čtv 06 zář, 2018 5:46 am

Tak jsem si ted nabil pekne usta -- pisu pro pripad ze nekdo bude take vynalezat znova kolo. Nebo pro pripad, ze se bude psat neco o produkcnim reseni zalozenem na Arduinu. Neduverovat knihovnam !

Pouzil jsem k Arduinu NeoSWSerial (https://github.com/SlashDevin/NeoSWSerial, v nabidce knihoven v Arduino IDE), kteryzto nema blokovat preruseni pri cteni a vubec ma byt rychlejsi atd atd. Na nepajivem poli O.K., Arduina si hezky vymenovaly data. Takze vyleptat desky, osadit, testnout ... No ... a nefungovalo to. Kdyz se arduino zaplo "spatne", tak se partnerovi rozjely pri prijmu bity ... a rozhodne se nesrovnal na konci "packetu" (klidovy stav linky).

Serii testu se ukazalo, ze NeoSWSerial spatne cte; neco dalsiho se mi mozna hrabe v TCNT0 registru, ale urcite, ackoliv je registrovana funkce pro obsluhu dat z preruseni, se stale musi periodicky volat available(), jinak se PO byte, ktery ma na nejvyssich bitech nuly precte dalsi byte spatne. V navodu ani slovo, pochoppitelne; nakonec pomohl google a dalsi projekty. No a pak mam urcite podezreni ze kod
Kód: Vybrat vše
uint8_t t0 = TCNTX
while ((uint8_t)(TCNTX - t0) < width) {
   // aktivni cekani
}

mozna nebude fungovat uplne 100%, kdyz bude t0 = 250 a TCNTX (tez 8 bit ?) se prehoupne pres 255 na treba 1. (uint8_t)(1 - 255) bude dost velke cislo.

Achjo.
TT ep. IVa-b; analog + NanoX, DR5000. Pseudoprogramator, pindac nesmyslu
http://modelwiki.klfree.net
belgarat
 
Příspěvky: 2367
Registrován: čtv 27 pro, 2012 9:36 pm
Bydliště: Hřebeč u Kladna

Zpět na Software

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 3 návštevníků