Jak víš, že testuje nuly ? Myslím, že by ses měl pořádně podívat Ty. První dva dlouhé pulzy jsou 80us dlouhé. Odstup od sestupné hrany k jeho toggle NENÍ 120us, ale nějakých 32-33us. On totiž dílek, tedy těch 50us, je od jedné dlouhé čáry ke druhé. Ty krátké čárky jsou po 10us. V tomhle datagramu se nemůžeš dívat na to, kde je toggle, resp. jak daleko je od té které hrany - tady je to úplně jedno, protože :
- udělá toggle
- čeká na náběžnou hranu (to je while smyčka, ne přesně daný delay)
- počká 35us (to je přesně daný delay)
- přečte si stav pinu
- případě, že je pin high, tak počká na low (opět while smyčka)
Tím smyčka končí a jde na 1) nebo po 8. bitu vrátí hodnotu. Všimni si, že toggle dělá PŘED ČEKÁNÍM na náběžnou hranu, takže toggle = vstup do smyčky, následuje náběžná hrana a 35us po ní čte pin, jenže ve kterém je to místě nezjistíš, protože tam toggle NENÍ !!!. Místo, kde čte si můžeš jenom odpočítat a říct “tady někde se čte pin”. Ten high impulz pro 0 trvá cca 25us, pro 1 trvá asi 68us. Z toho plyne, že číst by měl cca 1 čárku za sestupnou hranou nuly, v případě jedničky zcela bezpečně cca v polovině pulzu.
Než něco napíšeš, měl by sis především pořádně prohlídnout program, projít datasheet, zkontrolovat, jestli jsi v datagramu pochopil správně dílky a pak to ještě jednou zkontrolovat.