Подскажите пожалуйста у вас программа выложена ведь,вы в какой проге пишите?,хочу полностью проект открыть,раньше смотрел через блокнот. Нашел вчера у ся ошибку,вывел все передаваемые данные с устройства по юарт,ошибок в данных больше нет,все исправил,проверял несколько раз,но запись не идет,вот хотелось бы все длительности точно посмотреть,может чего упустил.
Тут вы тоже что то непонятное пишите: "//в слова 5 и 6 карты EM4305 записываем UID (40 бит сначала конвертируем в 64 бита)"
Еще вопросик, смотрите я честность столбцов смотрю как?,к примеру я все байты перевернул , что такое PC0? это четность столбцов D00D08D16D24?,или же D07D15D23D31 - тобишь четность тех байтов которые уже перевернул, а потом еще раз переворачиваем младшим байтом или как?
тоесть смотрите к примеру я байты уже перевернутые т е отправленные байты младшим битом вперед
Код:
000011110 111100000 101010100 100000001 ;////////// 110101010 или же так шлем четность столбцов? 101010110
В WinAVR. Но по сути там достаточно обычного текстового редактора.
Цитата:
всмысле???
А чего тут не понятного-то? Полный передаваемый номер карты - 64 бита (с битами чётности, девятью единицами и нулём в конце). Вот это и надо записать в блок 5 и блок 6. Блики по 32 бита. А нужно 64. Значит, нужно два блока.
Цитата:
,к примеру я все байты перевернул , что такое PC0?
А вы не пробовали взять строго, как в программе сделано?
А вы не пробовали взять строго, как в программе сделано?
я же писал уже я си вспоминать полностью не хочу,что то я помню. PC0-это D0D8D16D24 как в даташите, или же это D7D15D23D31 -тобишь перевернули опять?
кстати even parity-это у нас как получается 11=0?- это по строкам а по столбцам также even parity?
я так понимаю для записи это все что нужно отослать карте?
Код:
;/////////////////////////////////// FieldOn() delay_ms(500); //запись конфигурации (манчестер, RF/64, выдача слова 6) WriteEM4305Word(4,0x5F,0x80,0x01,0x00); //запись ID карты в слова 5 и 6 WriteEM4305Word(5,RFID_Send_Buffer[0],RFID_Send_Buffer[1],RFID_Send_Buffer[2],RFID_Send_Buffer[3]); WriteEM4305Word(6,RFID_Send_Buffer[4],RFID_Send_Buffer[5],RFID_Send_Buffer[6],RFID_Send_Buffer[7]); FieldOff();//отключаем электромагнитное поле _delay_ms(500);
;///////////////////////////// каждый байт мы переворачиваем и шлем младшим байтом вперед? странно что у вас функция Логин стоит на первом месте перед записью,тоесть тот кто повторит ваш проект,если у него карточка пустая без пароля получается не запишет данные?
я же писал уже я си вспоминать полностью не хочу,что то я помню.
Там такой Си, что и вспоминать нечего.
Цитата:
я так понимаю для записи это все что нужно отослать карте?
Да. Записать вот это в 5 и 6 слова.
Цитата:
странно что у вас функция Логин стоит на первом месте перед записью,тоесть тот кто повторит ваш проект,если у него карточка пустая без пароля получается не запишет данные?
Запишет. Логин на карточке включать надо, чтобы он работал. Изначально он отключён.
Логин на карточке включать надо, чтобы он работал. Изначально он отключён.
Автор я конечно все понимаю,если вы не знаете зачем вы путаете людей,если на карте нет пароля нахрен этот логин,тем более он выключен у вас в конфиге:
логин не читается если 0
Код:
co18: Read Login Whensetto logic 1, the reading of all words, except Words 0and1, byusing the Read Word command is protected. Reading any of these words using the Read Word command, can be done upon successful execution of a Login command.
;//запись пароля запрещена если 0
Код:
co20: Write Login When the Write Login bit issetto logic 1, modification of EEPROM content isprotected. Writing any word using Write Word command or changing protection using Protect command, can be done upon successful execution of a login command. Note: Independent of write login configuration bit state, Password (word 2) reprogramming can be done upon successful execution of a login command
Вообщем я собрал устройство и все работает,даташит рулит как всегда,но не ваша программа.
Напишу основные ошибки из-за которых сделать по алгоритму автора ничего не выйдет это все 100 процентов. Пишу для тех кто будет делать протокол для карт EM4305.
Во первых всегда смотрим даташит:
Кому лень искать то даташит есть на первой странице этой Ветке:
Что это вообще такое??? ,я не хочу вас обидеть но это угар. Открываем даташит и пишем правильно: Как говориться останавливаем поле на 55 циклов и включаем 17
Итак с этим разобрались,теперь с остальным. Внимание у тех у кого карточка пустая не нужно при записи ставить вначале Логин и сбрасывать его ,либо еще что то с ним делать,в этом нету смысла!!!,ИТАК ВСЕ ЗАПИШЕТСЯ. ///////////////////////////////////////////////////
Автор я конечно все понимаю,если вы не знаете зачем вы путаете людей,если на карте нет пароля нахрен этот логин,тем более он выключен у вас в конфиге:
Я же сказал, всё это оставлено на будущее для тех, кому это потребуется.
Цитата:
Вообщем я собрал устройство и все работает,даташит рулит как всегда,но не ваша программа.
Странно, а как же тогда она работает вот уже почти два года? И ещё удивительнее, что у вас по даташиту заработало. Вы, наверное, первый, у кого по этому даташиту карточка записалась. На kazus протокол записи em4305 долго был камнем преткновения даже с даташитом.
Цитата:
Напишу основные ошибки из-за которых сделать по алгоритму автора ничего не выйдет это все 100 процентов.
Учитывая, что снималось всё это с реального копировщика, это не вышло почему-то только у вас.
Цитата:
Что это вообще такое???
Это то, что было снято с реального копировщика.
Цитата:
Внимание у тех у кого карточка пустая не нужно при записи ставить вначале Логин и сбрасывать его ,либо еще что то с ним делать,в этом нету смысла!!!,ИТАК ВСЕ ЗАПИШЕТСЯ.
Я же сказал, что он не нужен для незапароленых карточек.
Хм да уж,поверьте не вышло, это снималось тоже с реального копировщика,там ничего сверхестественного нет,а протокол этот никакая ни тайна,все написано в даташите: вот осциллограммы действительно с реального копировщика :
Я даже не удивлен что у меня ваш алгоритм не заработал,а по даташиту с первого раза запахал,странно неправда ли.
Я даже не удивлен что у меня ваш алгоритм не заработал,а по даташиту с первого раза запахал,странно неправда ли.
У меня обратная ситуация. По даташиту не работало ни в какую. А по снятой диаграмме заработало сразу. Посмотрите начало темы:
Цитата:
Пришли брелоки em4305. Пробую реализовать протокол записи ключа. Я нашёл руководство по записи ключа (оно во вложении). Как я понял, ключ можно записать, например, в блок 5, а в блок 4 нужно записать конфигурационное слово (манчестер, RF/64, выдача слова 5). Согласно руководству (как я его понял), для записи блока нужно сделать следующее: 1 ) Включить поле на некоторое время. 2 ) Сформировать First Field Stop - отключить поле на 55 циклов (8 микросекунд один цикл = 1/125000) 3 ) Включить поле на 17 циклов. 4 ) Послать "0". 5 ) Послать команду с битом чётности в конце ("0101" - запись блока). Для всех блоков данных принят порядок "младший бит первый". 6 ) Послать адрес блока (4 бита). 7 ) Послать "00". 8 ) Послать бит чётности для адреса. 9 ) Послать блок данных (32 бита данных): после каждых 8 бит данных шлётся бит чётности этих переданных восьми бит. После передачи всех 32 бит данных шлётся 8 бит чётности этих бит данных по столбцам. 10 ) Послать "0". 11 ) Включить поле и подержать его ещё некоторое время, чтобы произошла запись и пришёл ответ. Ответ я не принимаю и не анализирую.
Чтобы послать "0" нужно: 1) На 15 циклов убрать поле. 2) На 17 циклов включить поле.
Чтобы послать "1" нужно на 32 цикла включить поле.
Я, собственно, так и сделал. Но брелок не записывается. Может, кто-нибудь знает, что я делаю не так?
Добавлено after 2 minutes 1 second:
Цитата:
Вы даташит плохо значит смотрели,данные не переворачиваем.
Вот именно что перевернули,почитайте как я выше данные отправляю,я их не переворачиваю,а вы данные шлете так: начиная с младшего бита и заканчивая старшим
покажите в битах как вы их шлете попорядку со всеми битами четности строк и колонок
Не покажу. Я же выше уже сказал, что я давно уже не помню всего этого. В любом случае, не заработало по даташиту. Так как нифига не получалось, я взял реально работающую игрушку и снял с неё осциллограмму. Там всё было ровно, как я и написал в программе (и как работает у всех повторивших (и переделавших), кроме вас). И вот это и заработало.
Хм ну да,давно,но у меня работает все четко,проверял на карточках,на брелках,вы осцилограммы посмотрите,у меня тоже снято с реального копировщика,у вас бы и не заработала потомучто вы слали данные младшим битом вперед,я у вас в программе это вижу.
Я в какие-нибудь выходные посмотрю, что будет, если текущую программу переделать под даташит и исправить фишку с таймером (которая, тем не менее, работает и так). Возможно, заработает.
Цитата:
потомучто вы слали данные младшим битом вперед,я у вас в программе это вижу.
Они и сейчас вроде как так шлются. И всё работает.
Обратите внимание на данные карточки!!!!! отправляйте их не переворачивая младшим битом вперед. Я написал выше как я отправляю данные. Очень странно,но я не меняю порядок бит как у вас,возможно есть команда какая то вначале. Пробуйте,потом пишите ,я же тоже не дурачек,все проверил,какие данные идут по Uart именно вашим методом,мерил длительности осциллографом,не работало.
Последний раз редактировалось sirha Вс мар 25, 2018 17:13:56, всего редактировалось 1 раз.
da-nie, sirha, каждый из вас в чем-то прав. sirha, вот Вы пишете по поводу FirstFieldStop:
sirha писал(а):
Что это вообще такое??? ,я не хочу вас обидеть но это угар.Открываем даташит и пишем правильно:Как говориться останавливаем поле на 55 циклов и включаем 17
Но я тоже видел такое на китайском копировщике, и он отлично записывал заготовки. Также я собирал копировщик с казуса, в котором не было "такой кракозябры", и он также отлично записывал em4305 Кроме того, в последнем копировщике была возможность поиграться таймингами, чем я и воспользовался : 1. Изменение FirstFieldStop в довольно широких пределах никак не влияло на запись заготовок 2. Изменение остальных таймингов при передаче нулей и единиц на 1-2 цикла также никак не влияло на запись заготовок 3. В итоге оставил по умолчанию da-nie, так как запись заготовок в вашем варианте копировщика происходит (и не только у Вас), то все команды отправляются в соответствии с даташитом (в пределах допусков). Чей алгоритм записи лучше - не важно, главное, что работает (разбираться в дебрях программ - это не моё ).
Помогите разобраться перестал работать копир. на Arduino nano : На катушке 125кГц В контрольной точке 40 В Программа не читает ключ который раньше читался этим же копиром. В чем может быть проблема?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения