PECA: Tak posun. Kdyby to někoho zajímalo.
V konfigu (
/etc/modprobr.d/w.conf) jsem měl "
options wire slave_ttl=1 timeout=0 timeout_us=250000". Jak jsem to ladil, tak jsem nastavil konzervativní timeout 1 sekundu a to začalo vykazovat výrazně lepší chování. Pokusováním jsem dospěl k hodnotě timeoutu 550 ms. Tedy asi takto "
options wire slave_ttl=1 timeout=0 timeout_us=550000".
Důvodem bude asi kombinace čtení sběrnice ze strany RPi a fungování čtečku RFId, která po "chvilkách" testuje přítomnost čipu, "chvílku" jí trvá čtení čipu a "chvíli" Id podrží načtené. Podle dokumentace by to mělo být čtení přibližně 6× za sekundu (~ 50 ms na test přítomnosti), k tomu ~ 100 ms rozmezí mezi dvěma úspěšnými kontrolami. Dále ~ 120 ms čtení Id z RF čipu. A nakonec úspěšně načtenou hodnotu uchová ~ 500 ms pro případné odeslání skrze emulaci 1wire. No a pokud v průběhu těch 500 ms přijde RESET (tedy požadavek na čtení sběrnice), tak se to podržení prodlouží o dalších 500 ms. Ale asi je tam nějaký nedokumentovaný strop, takže nakonec (cca mezi 4. a 5. sekundou se to zapomene).
No ty bláho!
Takže issue solved. Reakce není úplně bleskurychlá, když s tím blbnu, tak mi to někdy nestihne čip načíst, protože prostě musím vydržet alespoň tu půlsekundu, než vyprší timeout na malině. Uff.