Dekódování dat
Moderátor: Moderátoři
Hľadať postupnosť 8x za sebou vysokú úroveň. Predpokladám, že byt 0xFF slúži presne na synchronizáciu prijímača. Toto sa nedá prijímať ako Byt, musí sa to robiť nazačiatku príjmu po bitoch.
Ak zistíš 8x bit vysokej úrovne spustíš príjem po bytoch.
To isté platí aj ak máš integrovaný UART, alebo to prijímaš softom.
petrfilipi píše:p32 píše:Jak jsi přišel na to, že to tak má být ? Nemůže to být posunuto např. o 1 nebo 2 bity doleva ?
Když ví co má přečíst, tak to asi u vzorlu dat může napasovat do rámce správně.
PF
Ale o tom to právě není. Kdyby to všechno věděl, tak sem nepíše. Kdysi jsem dělal programy pro čtení bezdotykových karet na vrátnicích a nikdo nemusel vědět, co má číst a kde. To z toho vycházelo jaksi automaticky.
-
petrfilipi
- Příspěvky: 2901
- Registrován: 13 zář 2005, 00:00
PF
Ověřil jsi funkčnost převodníku TTL-232?
Na neznámé kódování použijeme MCU, jeho 1 pin a 2 přerušení:
data připojit na MCU pin EXINT0
event EXINT0 nastavit na sestupnou hranu.
časovač0 nastavíme na bitovou rychlost.
INT_EXINT0:
- zablokovat EXINT0
- reset počítadla bitů, reset počítadla stop-bitu
- počkat 0.5bitu, povolit a nastartovat TIMER0 v bitové rychlosti
INT_TIMER0:
- není-li konec, rotovat 64b, načíst stav linky do volného bitu, přičíst počítadlo bitů a vyhodnotit
- je-li dosaženo konce, přičítej stop-bit počítadlo pokud je v tom stavu linka, v opačném ho resetuj.
- pokud dovrší stop-bit počítadlo, předej data dál, povol EXINT0, zastav TIMER0
dodatek: volnou sériovou linku procesoru použijeme na monitoring a lazení konstant dekodéru-reciveru a pak uvidíme co dál.
konstanty: bitrate, bits, stops