Dekódování dat

Dotazy na technické problémy, vlastní řešení technických problémů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
procesor
Příspěvky: 5286
Registrován: 02 říj 2009, 00:00
Bydliště: PO

#16 Příspěvek od procesor »

Tvoj prijímač sa musí synchronizovať na byt 255, ak je tam v každom rámci.
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.
p32
Příspěvky: 16427
Registrován: 13 led 2007, 00:00

#17 Příspěvek od p32 »

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.
Uživatelský avatar
Atlan
Příspěvky: 4514
Registrován: 10 kvě 2004, 00:00
Bydliště: Košice

#18 Příspěvek od Atlan »

Aby ti ten IR prijimac neotacal polaritu signalu teda to co primas ako log1 nebola log0 v skutocnosti.
petrfilipi
Příspěvky: 2901
Registrován: 13 zář 2005, 00:00

#19 Příspěvek od petrfilipi »

Kdyby Ti ten RfId kod vysilalo neco porad dokola, tak taky nebudes vedet, co ctes. Jestli jsi cetl Weigand26, tak aspon vis, ze je tam 26 bitu. Proste kdyz prides nahodne k zarizeni, ktere neustale neco vysils, tak se musis nekde chytit A kdyz vis, co mas cekat, je synchronizace jednodussi a rychlejsi.
PF
Uživatelský avatar
procesor
Příspěvky: 5286
Registrován: 02 říj 2009, 00:00
Bydliště: PO

#20 Příspěvek od procesor »

Podľa mňa a toho osciloskopu to má zobrazené a označené dobre. Musí sa to najprv zosynchronizovať na nejakú jedinečnú kombináciu bitov a potom sa už prečíta príslušný počet bytov. A tou kombináciou je určite 255, asi sa bude stále opakovať a v datách sa nebude používať. Na to sa dobre "chytne".
Uživatelský avatar
Zmije
Příspěvky: 1691
Registrován: 30 čer 2005, 00:00
Bydliště: Pardubický kraj

#21 Příspěvek od Zmije »

Asi blbej nápad, ale nepřenáší se tam někde CRC, či jiná ochrana? Pak by se dalo synchronizovat podle toho.
Uživatelský avatar
procesor
Příspěvky: 5286
Registrován: 02 říj 2009, 00:00
Bydliště: PO

#22 Příspěvek od procesor »

Fakt blbý :roll:
Zatiaľ sa mu nepodaril preniesť čo i len jeden znak(Byt).
Uživatelský avatar
Zmije
Příspěvky: 1691
Registrován: 30 čer 2005, 00:00
Bydliště: Pardubický kraj

#23 Příspěvek od Zmije »

Další blbý nápad, použít log. analyzátor např. vzor saleae, na podobné opičárný je to výborný a cena velmi příznivá.
Jenda_KL
Příspěvky: 1173
Registrován: 10 zář 2008, 00:00
Bydliště: Kadaň
Kontaktovat uživatele:

#24 Příspěvek od Jenda_KL »

Je ta mezera na konci (255) dlouhá alespoň 0.00105?
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
Odpovědět

Zpět na „Poradna“