forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
Dekódování znaků
Jdi na stránku 1, 2, 3  Další
 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Microchip
 
Mikop
Profesionál
Profesionál


Založen: 22.2.2009
Příspěvky: 280

PříspěvekZaslal: 21 červenec 2017, 18:29    Předmět: Dekódování znaků Citovat

Ahoj.
Mám dotaz, zda existuje nějaká finta v asembleru pro dekodování bytů. Konkrétně se mi jedná o situaci, kdy mám 3-5 byte dat v hexa a potřebuji to přiřadit jménu pro LCD. Mám použít tabulku nebo nějak roztřídit byte? Je to pro zobrazení RFID karty ke jménu uživatele. V tom vedru mi to už nemyslí ... Díky za nakopnutí. Mikop
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Mahoney
Profesionál
Profesionál


Založen: 26.12.2013
Příspěvky: 140

PříspěvekZaslal: 23 červenec 2017, 12:17    Předmět: Citovat

Ahoj, málo ses rozepsal co přesně vlastně tvoříš, jak to má vypadat (coby návrh systému, vnější desgn nás samozřejmě nezajímá Very Happy ) a jak to přesně má fungovat.

Obecně: To, co tu zhruba popisuješ, se obvykle řeší tak, že mikrořadič (v nějaké čtečce, terminálu apod) tohle vůbec neřeší - jen získá číslo karty a odešle ho po nějaké sběrnici či datové lince nadřízenému systému, a až ten provádí vyhodnocení a případně zasílá zpět z vyhodnocení získaná data / povely (např. u dveří, jestli se mají odjistit / otevřít či ne, apod... naopak např. docházkový terminál typicky žádná data zpět nezajímají, ten jenom odesílá).

Nadřízený systém může být buď nějaká výkonnější komunikační jednotka (bývá v ní často ARM nebo něco podobného "vícebitového" a s větší pamětí), nebo přímo k tomu určené PC (např. nějaké IPC, server apod). Jde především o to, že počet uživatelů se může měnit, stejně tak jejich oprávnění, těch dat může být celkem hromada.

Pokud tvoříš nějaký "mikrosystém" např. doma pro jedny dveře do dílny a víš, že počet uživatelů a jejich akcí bude celkem malý a neměnný, můžeš to samozřejmě narvat do jednočipu všechno - tam mi pak ale neladí "jeho potřeba" s něčím komunikovat, tu v takovém případě mít nebude (samozřejmě kromě čtečky karet apod).

Jinak k tomu co ses ptal - samozřejmě tabulkou a jejím postupným procházením po znacích, ale to se dá vážně jen v případě malého počtu záznamů, jinak by vyhodnocení a následná navázaná akce mohly trvat neúměrně dlouho.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Mikop
Profesionál
Profesionál


Založen: 22.2.2009
Příspěvky: 280

PříspěvekZaslal: 25 červenec 2017, 11:01    Předmět: Citovat

Ahoj. Díky za odpověď. Vytvářím mobilní LCD čtečku RFID s modulem RDM6300. Procesor PIC16F628A nebo 88. Čtečka pošle v TTL data (02, 10byte, CRC, 03), které zpracuji v MCU a zobrazím na LCD. Chodí mi i posílání zpracovanych dat z MCU na UART zase ven. Pro někdy. Kód karty není problém, ale potřeboval bych k tomu číslu přiřadit jméno z nějaké vnitřní tabulky. Cca 40 uživatelů. Klasickou tabulku dám, ale nikdy jsem neřešil více byte. RFID čtečka sice posílá více dat, ale pro tento EM4100 125kHz je výstup 26bite, tj. MSB + 3 byte + LSB. A reálně se používají jen ty 3 byte.
PS. To, jak se dekódují a přenášejí data ze čteček a následně zpracovávají v nadřízené jednotce samozřejmě vím, dělal jsem více jak 5 let aktivně přístupové a docházkové systémy a nárazově i nyní. To, co se snažím vytvořit, je co nejmenší mobilní provedení. Karty i přívěšky mají již smazaná čísla a potřebuji ověřit jméno pro obsluhu na místě a ne u PC, kde to není problém.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Mahoney
Profesionál
Profesionál


Založen: 26.12.2013
Příspěvky: 140

PříspěvekZaslal: 25 červenec 2017, 14:52    Předmět: Citovat

No to nemáš vůbec zač Wink Pokud můžu doporučit: EM4100 používá pro ID 32 bitů (+ 4 paritní) - využívej to všechno. Měli jsme v praxi případy, že si klienti (což byly firmy, které buď dodávaly nebo si samy nainstalovaly přístupáky) vybrali jen několik bajtů z toho ID, a pak se strašně divili když si po čase dokoupili další karty odjinud, že "zničehonic" nemají unikátní ID a mají víc "stejných" karet. Dokonce jsme měli jeden "príma" případ, kdy si z toho ID počítali hash a až ten vyhodnocovali, ale počítali ho špatným algoritmem, takže opět byl výsledek neunikátní. Sranda k popukání (obzvlášť když máš jako technik dohledávat "proč to nefunguje").

Dál se zeptám: Kam to teda posíláš, když říkáš že přes UART ti to běhá také?

Jinak teda počítej se mnou (pro ten PIC, dejme tomu že si budu myslet, že tvoříš offline terminál, kdyby nebylo spojení s nadřazeným systémem): třeba 56 klientů (ať je nějaká rezerva) * 8 bajtů + "\n" (nebo něco podobného, prostě ať víš, kdy je konec řetězce a neprohledáváš donekonečna; C používá \0 ) = 560B ve flash jenom tabulka, takže vzhledem k tomu, že pomocí ADDWF PCL,F můžeš skákat jen o 127 adres bude už trochu pakárna (+ případně ještě zohlednit stránkování flash paměti). Píšeš to aspoň v C?

Další nevýhoda je, že jakákoliv aktualizace užavetelských data = přeprogramování PICu pokud budou ve flash, a nebo použít externí EEPROM a mít v programu funkce, které to budou umět updatovat skrze ten UART. Máš tam aspoň tu EEPROM?

K tomu porovnávání: V paměti máš pole znaků, záznamy v něm jsou pokaždé zakončené tím "\n", a v RAM máš někde uložené číslo, které jsi právě vyčetl z nějaké karty. Pak se bude dít to, že vezmeš první záznam z flash, a jeho první bajt porovnáš s prvním bajtem vyčteného. Pokud se budou shodovat, vezmeš druhý bajt z obojího a opět porovnáš, pokud se budou shodovat tak... toto pořád dokolečka, dokud buď a) dojde k neshodě - v takovém případě nemusíš záznam už dál porovnávat, není to on, a můžeš vzít další záznam, na kterém začneš provádět to samé zase od začátku - nebo b) dokud nenarazíš na "/n". Pokud jsi došel až k \n, tak víš že onen záznam je ten, který hledáš, další záznamy už nemusíš prověřovat. Po záznamech v tabulce skáčeš tak, že před ADDWF PCL,F přičteš ještě index záznamu, což bude pořadí záznamu * 10 (velikost záznamu) - a samozřejmě dáváš pozor na přetečení a podobné srandy.

Přiřazení jména by šlo udělat třeba tak, že tam budeš mít ještě jednu tabulku, ve které budou ona jména, a podle (předchozího získaného) indexu záznamu jen přiřadíš jméno. Nebo to třeba nemusí být další tabulka, může to být po sobě v té jedné a v případě shody záznamu jen pokračuješ dál - struktura dat uložených v paměti je jen na tobě, aby se ti to dobře zpracovávalo i programovalo.

Je to trochu srozumitelné?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Mikop
Profesionál
Profesionál


Založen: 22.2.2009
Příspěvky: 280

PříspěvekZaslal: 25 červenec 2017, 15:50    Předmět: Citovat

Díky za odpovědi. O té duplicitě při 3 bytech samozřejmě vím. Setkal jsem se s tím dokonce i u Dallas čipů DS1990A, kde to taky ořezali na 3 byte a divili se, že mají stejné ID, když výrobce garantuje jedinečnost. Proto to ještě rozvedu. Je to trochu jako hec pro jednoho známého. Má malou firmu a potřebuje pro ostrahu, aby mohla ověřit kartu zaměstnance kdekoliv po areálu i mimo něj. Fluktuace zaměstnanců není skoro žádná a navíc to bude víceméně jednorázová záležitost, jak naučit zaměstnance "správným návykům" Smile Co se týká aktualizace dat, tak to tím pádem nebude tak horké. Navíc mám na vstupu RX tu čtečku. Musel bych napsat ještě SW UART. Protože je kladen důraz na miniaturizaci, chtěl bych použít Flash MCU místo externí Eeprom. Teda kdyby se to nevlezlo, tak ji použiju. Data (ID) se nikam neposílájí, jen na LCD. Z UARTu MCU to mám připravené, ale nepoužívám to. Je to vlastně něco jako personifikační jednotka, ale pouze zobrazuje ID a uživatele. Jinak ke čtečce RDM6300 stačí přidat MAX 232 a posílat data rovnou do COM portu. Formát dat jsem psal výše. Píšu to v asm, protože Céčko nedávám. To porovnání jsem tak nějak myslel, ale potřeboval jsem nakopnout, jak dál.
PS. Těch ID byte z karty bude nakonec zřejmě opravdu více.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Mahoney
Profesionál
Profesionál


Založen: 26.12.2013
Příspěvky: 140

PříspěvekZaslal: 25 červenec 2017, 16:30    Předmět: Citovat

Aha... no pokud ty karty nemá potištěné fotkou zaměstnance, jménem a podpisem tak to stejně asi nebude mít ten efekt - ostraha bude bez fotky a podpisu schopná jen určit, že "tahle karta patří člověku jménem X.Y.", ale už ne to, že to je přesně ten člověk, který stojí před nimi a tu kartu drží. To je schopná provést až podle fotky na té kartě, jinak ne - i přesto, že ten člověk bude tvrdit, že to on je. On ten člověk klidně může držet kartu někoho jiného a vědět koho karta to je, tedy jaké jméno má říct - známe lidi, jak jde o nějakou levotu tak jsou zpravidla velmi vynalézaví. Záleží samozřejmě co to je za firmu za zaměstnance a jde taky o celkovou kulturu a klima ve firmě - neznám ani jedno z toho, hovořil jsem pouze obecně a hypoteticky.

Jinak tedy ještě k technické stránce věci - když tedy ASM (nic proti, já jsem taky spíš "assemblerák", i když teda v C něco málo /a blbě/ píšu), tak by stálo za zvážení, jestli to nepřestěhovat na 18F - např. takový PIC18F1320 zůstává dostatečně miniaturním a přidává lepší komfort práce - paměti je více a je v souvislých blocích, odpadá pagesel a pro práci s tabulkami je daleko lépe vybaven (má na ně speciální instrukce a registry).



tblrd.png
 Komentář:

Stáhnout
 Soubor:  tblrd.png
 Velikost:  34.29 kB
 Staženo:  67 krát

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Mikop
Profesionál
Profesionál


Založen: 22.2.2009
Příspěvky: 280

PříspěvekZaslal: 25 červenec 2017, 19:00    Předmět: Citovat

Já to tedy zkusím s tím PIC18F1320. Ještě jsem s řadou 18F nic nedělal, tak asi budu ještě otravovat, ale uvidíme. Budu teď do konce týdne mimo, tak se když tak ozvu. Díky
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Mahoney
Profesionál
Profesionál


Založen: 26.12.2013
Příspěvky: 140

PříspěvekZaslal: 25 červenec 2017, 19:52    Předmět: Citovat

V pohodě, klidně se ptej. Jsem zrovna shodou okolností "na marodce" (záda) a možná budu i příští týden - uvidíme - takže bych eventuálně měl čas a dokázal pomoci i prakticky (s kódem atd).

18F řady se vůbec neboj, práce s nimi je lepší, ale pár odlišností samozřejmě mají (tedy krom toho že jsou asi o třetinu dražší) - jako třeba že adresy skoků atd jsou výhradně sudé (protože mají šířku instrukčního slova 16 bitů), nebo že mají dvě úrovně přerušení a je třeba to buď správně nastavit, nebo vypnout... ale v klidu, nic dramatického se nekoná, to v pohodě zvládneš / zvládnem.

Něco málo na začátek k pročtení (týká se toho inst. slova):
Link1 zde z fóra
Link2 zde z fóra
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Billy Bob Bean
Profesionál
Profesionál


Založen: 21.9.2009
Příspěvky: 302
Bydliště: OLOMOUC - BRNO

PříspěvekZaslal: 27 červenec 2017, 21:53    Předmět: Citovat

Za mě bych už asi nic s PIC16 v ASM nedělal. PIC18 tolik usnadní programování, že i v assembleru se dobře píše. Ale já jsem se už tak rozežral PIC24 a C, že bych si asi na asm pořádně nevzpomněl.

Mám oblíbený PIC18F23K22 a PIC18F13K22, jsou za super cenu v TME.

_________________
Stavím UPSky
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Mahoney
Profesionál
Profesionál


Založen: 26.12.2013
Příspěvky: 140

PříspěvekZaslal: 27 červenec 2017, 23:17    Předmět: Citovat

Nevěděl jsem co má přesně za programátor, tak jsem mu ty novější typy právěže nechtěl radši moc doporučovat - např. Pickit 2 „v defaultu” umí jen ten 18F13K22 a 18F23K22 už neumí (dá se to samozřejmě upravit)… Navíc novější typy bohužel bývají více zabugované přímo na čipu (mají zpravidla „hustší” errata sheety, takový 18F26K22 mě v tomto vyloženě zklamal), starší brouci byly odladěnější a nemusely se moc dělat kdovíjaké workaroundy - to se ovšem týče i 16F řady. Navíc 18F13K22 už je 20pin, nebude vývodově kompatibilní s 16F628A a s 16F88, nevíme jestli už nemá hotový nějaký návrh HW.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Billy Bob Bean
Profesionál
Profesionál


Založen: 21.9.2009
Příspěvky: 302
Bydliště: OLOMOUC - BRNO

PříspěvekZaslal: 28 červenec 2017, 22:58    Předmět: Citovat

To je fakt, že zabugovanost nových čipů je poměrně obsáhlá. Hlavně mi přijde, že to vůbec neřeší a nové revize co by dané chyby řešily se jaxi nedělají.
_________________
Stavím UPSky
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Mikop
Profesionál
Profesionál


Založen: 22.2.2009
Příspěvky: 280

PříspěvekZaslal: 29 červenec 2017, 9:51    Předmět: Citovat

Kluci díky za podporu. Dostanu se k tomu až příští týden. Desku mám sice hotovou pro 18 pin, ale to se dá předělat. Spíš jde o to, že nemám nic z řady 18F. Tedy myslím. Co se týká programátoru, koupil jsem před lety Presto, protože má za tu cenu skvělou podporu. A navíc, jak mají ve sloganu: Bez PRESTA se obejdete. Z Prahy do Ostravy taky dojdete pěšky... Když jsem pročítal problémy s různými programátory, jevil se mi jako velice dobrý.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Mahoney
Profesionál
Profesionál


Založen: 26.12.2013
Příspěvky: 140

PříspěvekZaslal: 29 červenec 2017, 10:46    Předmět: Citovat

V pohodě, nemáš zač. Co se mě týče jsem pořád marod, takže čas zatím bude, pak na to mrknem jak se k tomu dostaneš.

Jestli máš desku už hotovou tak je asi zbytečné to předělávat, ten 18F1320 (či 18F1330) pro tvé účely v pohodě postačí (čas jsou peníze, těch 30 korun úspory za to při tom jednom kusu nestojí). Presto je výborný programátor, ovšem nativně umí jen typy s Vpp 13V (tedy ty starší), i když program UP podporuje i novější typy - takže co se týče novějších typů brouků, je potřeba číst datasheety a na Vývod Vpp mezi programátor a brouka dát odpor 2k, aby se napětí srazilo (2k2 už ne, to už by bylo moc, takže dát si za sebe 2x 1k odpor). PIC18F1320 je starší typ a má Vpp 13V, tady odpor potřeba nebude.

Asix - podpora typů
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Billy Bob Bean
Profesionál
Profesionál


Založen: 21.9.2009
Příspěvky: 302
Bydliště: OLOMOUC - BRNO

PříspěvekZaslal: 30 červenec 2017, 8:46    Předmět: Citovat

Presto používám v práci na 18F řadách, odpor 1k na MCLR a 9V zenerka k tomu. Už to naprogramovalo tak 10 000,- brouků. Akorát odchází po čase ty propojovací káblíky a dutinky na jumpery.
Je to daleko lepší programovadlo jak Pickit3 a Mplab IPE dohromady.

_________________
Stavím UPSky
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Radius
Profesionál
Profesionál


Založen: 22.2.2013
Příspěvky: 506

PříspěvekZaslal: 01 srpen 2017, 12:36    Předmět: Citovat

V C na pár řádek, v ASM si to užij Wink
_________________
x51 , ARM , XILINX
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Microchip Časy uváděny v GMT + 2 hodiny
Jdi na stránku 1, 2, 3  Další
 
Strana 1 z 3
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2018 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)