Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

RFID въпрос
http://mcu-bg.com/mcu_site/viewtopic.php?f=4&t=8812
Страница 1 от 1

Автор:  borisov [ Сря Апр 20, 2011 9:39 pm ]
Заглавие:  RFID въпрос

Здравейте, разработвам RFID четец, не е кой знай какво нещо. Използвам ЕМ4095 успявам да прихвана цялата поредица в манчестърски код, след което откривам хедъра от 9 единици
(010101010101010101) после започвам декодирането на кода за да се получат 64 бита като последният е стоп бит '0' (както е дадено в документа на EM4100 ) накрая ги изпращам по rs232, всичко е ОК слагам една и съща карта и винаги изкарва еднакъв код. Проблемът е,че като почна да смятам битовете по четност не излизат :( . Гледах със скопа поредицата от битове на извода за данни на ЕМ4095 и ги сравнявам на 'око' със резултатите и си съвпадат, но проблема си остават тия битове по четност. Пробвах и схема от дискретни елементи, а не с ЕМ4095 резултатите съвпадат, ползвам същите карти. Ако някой е попадал на такъв проблем може да сподели, че вече само 0101 сънувам :lol: :lol: :lol:.

Автор:  Cino [ Сря Апр 20, 2011 10:44 pm ]
Заглавие: 

много е възможно да хващаш поредица от 9 нули , :)

EM4095 дава инвертирани битове,
http://www.avrfreaks.net/index.php?name ... 80&start=0

, ако не ти излиза стартовата поредица , прихвани повече битове (128), и върху тях потърси стартовите 9,
и след това провери по колони и редове следващите.

128 бита= поне 256 прехода

Автор:  CarBeta [ Сря Апр 20, 2011 10:45 pm ]
Заглавие: 

Питаш как се смятат битовете за четност или ... ?? Кое точно не ти излиза ? За елементарни изпълнения спокойно можеш да ги пренебрегнеш. Аз грешка досега не съм хващал при декодиране. Иначе е елементарно. Ако има четен брой единици бита за четност е 0 а за нечетен брои единици - 1. Да не бъркаш кой точно бит за кой ред и колона е ?

Автор:  default_pz [ Сря Апр 20, 2011 10:48 pm ]
Заглавие: 

Преди около година правих нещо с тоя чип и вече не помня добре, ама като взех една карта с написан на нея номер, се оказа, че чета не както трябва. Или бяха девет нули (не девет единици), или четях инвертирано, нещо такова. Иначе си бачкаше стабилно, всеки път еднакъв номер ми даваше дадена карта, ама грешен.

Автор:  borisov [ Сря Апр 20, 2011 10:58 pm ]
Заглавие: 

Здравейте, ами щом ги изкарва инвертирани значи е възможно да прихващам "0"-ли, а иначе първо прихващам 128 бита и после търся хедъра. За проверката на битовете за четност, според документацията след хедъра битовете се разделят на по 5 като 5-тият е бита за четност има и битове за четност и на колонит т.н. Чудя се дали да се занимавам с тях, но пък се появи интересен случай попаднах на карта, в която има две поредици от 9 единици :lol: и ми изкарва два различни кода за това мисля, че трябва да ги проверявам.

Автор:  zaphod [ Чет Апр 21, 2011 7:55 am ]
Заглавие: 

от инвертиране няма как да не излезе четността, понеже е ксорване. най-вероятно декодирането ти е изместено половин такт и четеш грешни данни. въобще манчестър кода е много противен с тая си особеност че не нацелиш ли добре началото, край. затова аз правя друго - декодирам цикличните карти все едно са с бифазен код, който е много надежден за декодиране (в смисъл не се допускат бъгове от програмиста), не е полярно зависим, после резултата го обръщам в манчестър, ето така:
for(int i=0;i<n;i++){
if(bits[i]){
lastb^=1;
}
bits[i]=lastb;
}
спестявайки си треперенето да не сбъркам с половин такт и да се чудя какво става. директно декодирам манчестър код единствено при транспондерите които не лъчат циклично, а отговарят с единични пакети, където старта е пределно ясен.
разбира се тоя трик не те спасява от това да прочетеш инверсни данни (началната стойност на lastb определя това), понеже манчестър кода е полярно зависим (втора причина да го смятам за лоша идея) а бифазния не е, но както казах четността не се влияе от инвертиране.

Автор:  Cino [ Чет Апр 21, 2011 8:52 am ]
Заглавие: 

не искам да спора , ама точно контрола по четност не излиза ако са инвертирани битовете
пример: 00101 е правилната поредица
инвертираната е 11010, вижда се че контрола по четност не излиза

Автор:  CarBeta [ Чет Апр 21, 2011 10:45 am ]
Заглавие: 

Преди да се стигне до смятане на битовете за четност трябва да изкараш хедъра. Това ти е маркер за началото. Какво точно ще смяташ ако не знаеш къде ти е първия бит? Не виждам какъв е проблема. Просто търсиш 9 единици(или 9 нули). От тук насетне се мисли декодирането ли е криво или сметките. Човека казва, че намира хедъра (111111111). Тая дискусия с инвертираните данни е излишна.

@borisov:
Пусни какво точно прочиташ от една карта !

Автор:  Wise [ Чет Апр 21, 2011 11:36 am ]
Заглавие: 

http://www.atmel.com/dyn/resources/prod ... oc4661.pdf
Виж алгоритъма на стр.15 как се чете манчестер код.
//нищо, че е за друг чип

Автор:  borisov [ Пон Апр 25, 2011 6:37 pm ]
Заглавие: 

Здравейте, проблема е решен, инвертирах битовете и всичко се оправи всички битове си излезнаха както е на теория, благодаря за помощта.

Автор:  zaphod [ Вто Апр 26, 2011 4:33 pm ]
Заглавие: 

Cino написа:
не искам да спора , ама точно контрола по четност не излиза ако са инвертирани битовете
пример: 00101 е правилната поредица
инвертираната е 11010, вижда се че контрола по четност не излиза


прав си мадафака, тоест това което казах важи само за четен брой битове сумарно, а тука са нечетен

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/