Перейти к содержанию
    

Карта EM Marin выдает неверный код

Собрал схему похожую на

http://chipmk.ru/index.php/spisok-statej/8...na-rfid-kartakh

Аналоговая часть работала плохо, переделал по-другому, но не в этом суть. Сначала я обнаружил, что читается код немного отличающийся от пропечатанного на карте - ошибка всегда в последнем ниббле. Подумал, что по чьей-то халатности код на карте не совпадает с фактическим. В экспериментах обнаружил, что возникновение ошибки зависит от того, с какой скоростью подносить карту. Если быстро - ошибка почти всегда, если медленно - никогда, и если карта лежит на считывателе и после сброса процессора считывателя - тоже никогда.

 

Всё ещё греша на программу или схему, начал искать, где появляется ошибка. Дошел до того, что поймал код на осциллографе, расшифровал его вручную, и оказалось, что считывание происходит правильно, но сама карта неправильно отдает код! Так ведут себя и пластиковые карты, и домофонные брелки. Судя по тому, что ошибка зависит от скорости нарастания несущей, это как-то связано с начальным сбросом контроллера карты. Видимо, чтение флэш происходит при низком напряжении с ошибками, а потом выдача идет из ОЗУ, с формированием правильных битов четности, но код не тот.

 

Собственно, непонятно, как в таком случае добиться надежности чтения? Как вообще они работают в миллионах экземпляров и никто не жалуется? Видимо, я чего-то еще не знаю?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

. . .

Собственно, непонятно, как в таком случае добиться надежности чтения? Как вообще они работают в миллионах экземпляров и никто не жалуется?

. . . .

Первый этап обеспечить надежность чтения - передача данных - схемотехникой.

Второй этап - защита от ошибок, обеспечивается контрольными кодами, например CRC16.

Ситуации, когда раз читает и отображает один номер, а раз - другой - не должно быть.

Должно быть:

- читаем номер 123. Ошибки проверки по контрольному коду нет.

- читаем номер 456. Ошибка контрольного кода. --> В мусор. Повторный запрос-чтение.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Теоретически, карта транслирует номер постоянно, пока у ней есть питание. Дождитесь чтения одного и того же кода несколько раз, если уж "биты чётности" корректные...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Победил :)

Прошу прощения, если отнял у вас время.

Контроль по четности реализовал полный - мышь не проскочит. Оттого и изумлялся почти сутки.

С картой оказалось всё в порядке, у меня был косяк в программе. А именно: и в прерывании со входа считывателя, и в программе вывода на LCD использовался бит пользователя T (AVR), и в момент вывода последнего символа могло прийти прерывание, которое его портило, а могло и не прийти.

Никак не научусь грешить сначала на свои кривые руки, а уж потом на чужие.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

. . . С картой оказалось всё в порядке, у меня был косяк в программе. . . .

Это нормально. А не страдать (излишней) самоуверенностью - очень полезно :)

Типа "процессор глючный, компилятор косячный, комп дохлый, зарплата маленькая . . . ".

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, с учётом этого

Дошел до того, что поймал код на осциллографе, расшифровал его вручную, и оказалось, что считывание происходит правильно, но сама карта неправильно отдает код!

косяк не только в программе... Осциллограф видимо тоже бит T использует :lol:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело было ночью, темно, плохо видно :)

Реально - уже сложилась уверенность, что косяк в карте, а предубежденный разум не замечает реальности и трактует всё в пользу своей правоты.

И еще один факт - смотрел фирменный считыватель, он зачем-то производит опрос пачками импульсов 125 кГц разной амплитуды. Этот факт нашел естественное объяснение в рамках теории заговора ;) - стало понятно, зачем пачками - чтобы сначала зарядить емкость фильтра питания в карте, затем сделать сброс, и только потом читать правильный код, а за время сброса питание не просядет настолько, чтобы флэш читался с ошибкой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...