iev91 0 27 апреля, 2017 Опубликовано 27 апреля, 2017 · Жалоба Собрал схему похожую на http://chipmk.ru/index.php/spisok-statej/8...na-rfid-kartakh Аналоговая часть работала плохо, переделал по-другому, но не в этом суть. Сначала я обнаружил, что читается код немного отличающийся от пропечатанного на карте - ошибка всегда в последнем ниббле. Подумал, что по чьей-то халатности код на карте не совпадает с фактическим. В экспериментах обнаружил, что возникновение ошибки зависит от того, с какой скоростью подносить карту. Если быстро - ошибка почти всегда, если медленно - никогда, и если карта лежит на считывателе и после сброса процессора считывателя - тоже никогда. Всё ещё греша на программу или схему, начал искать, где появляется ошибка. Дошел до того, что поймал код на осциллографе, расшифровал его вручную, и оказалось, что считывание происходит правильно, но сама карта неправильно отдает код! Так ведут себя и пластиковые карты, и домофонные брелки. Судя по тому, что ошибка зависит от скорости нарастания несущей, это как-то связано с начальным сбросом контроллера карты. Видимо, чтение флэш происходит при низком напряжении с ошибками, а потом выдача идет из ОЗУ, с формированием правильных битов четности, но код не тот. Собственно, непонятно, как в таком случае добиться надежности чтения? Как вообще они работают в миллионах экземпляров и никто не жалуется? Видимо, я чего-то еще не знаю? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 27 апреля, 2017 Опубликовано 27 апреля, 2017 · Жалоба . . . Собственно, непонятно, как в таком случае добиться надежности чтения? Как вообще они работают в миллионах экземпляров и никто не жалуется? . . . . Первый этап обеспечить надежность чтения - передача данных - схемотехникой. Второй этап - защита от ошибок, обеспечивается контрольными кодами, например CRC16. Ситуации, когда раз читает и отображает один номер, а раз - другой - не должно быть. Должно быть: - читаем номер 123. Ошибки проверки по контрольному коду нет. - читаем номер 456. Ошибка контрольного кода. --> В мусор. Повторный запрос-чтение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RabidRabbit 0 27 апреля, 2017 Опубликовано 27 апреля, 2017 · Жалоба Теоретически, карта транслирует номер постоянно, пока у ней есть питание. Дождитесь чтения одного и того же кода несколько раз, если уж "биты чётности" корректные... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iev91 0 27 апреля, 2017 Опубликовано 27 апреля, 2017 · Жалоба Победил :) Прошу прощения, если отнял у вас время. Контроль по четности реализовал полный - мышь не проскочит. Оттого и изумлялся почти сутки. С картой оказалось всё в порядке, у меня был косяк в программе. А именно: и в прерывании со входа считывателя, и в программе вывода на LCD использовался бит пользователя T (AVR), и в момент вывода последнего символа могло прийти прерывание, которое его портило, а могло и не прийти. Никак не научусь грешить сначала на свои кривые руки, а уж потом на чужие. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 27 апреля, 2017 Опубликовано 27 апреля, 2017 · Жалоба . . . С картой оказалось всё в порядке, у меня был косяк в программе. . . . Это нормально. А не страдать (излишней) самоуверенностью - очень полезно :) Типа "процессор глючный, компилятор косячный, комп дохлый, зарплата маленькая . . . ". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RabidRabbit 0 27 апреля, 2017 Опубликовано 27 апреля, 2017 · Жалоба Ну, с учётом этого Дошел до того, что поймал код на осциллографе, расшифровал его вручную, и оказалось, что считывание происходит правильно, но сама карта неправильно отдает код! косяк не только в программе... Осциллограф видимо тоже бит T использует Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iev91 0 27 апреля, 2017 Опубликовано 27 апреля, 2017 · Жалоба Дело было ночью, темно, плохо видно :) Реально - уже сложилась уверенность, что косяк в карте, а предубежденный разум не замечает реальности и трактует всё в пользу своей правоты. И еще один факт - смотрел фирменный считыватель, он зачем-то производит опрос пачками импульсов 125 кГц разной амплитуды. Этот факт нашел естественное объяснение в рамках теории заговора ;) - стало понятно, зачем пачками - чтобы сначала зарядить емкость фильтра питания в карте, затем сделать сброс, и только потом читать правильный код, а за время сброса питание не просядет настолько, чтобы флэш читался с ошибкой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться