Вообщем нашел я ошибку,у меня не было синхронизации импульсов,суть была в том что я во внешнем прерывании делаю все,пишу на асме,дак вот при ошибке я делал сброс и остановку таймеров и выскакивал из внешнего прерывания в ожидании следующего внеш прерывания,а надо было не выскакивать из внешнего прерывани, а заново с этой точке запустить таймер))),вот так вот,терь все летает,читает все)))
затем))),фанат,даже не уговаривайте токо он все и точка,спс за помощь
А я попробую всё-таки уговорить. Дело в том, что главное в разработке ПО - это управляемость разработки на любом этапе (вы это заметите, если будете писать в одиночку программы систем и комплексов (они могут иметь мегабайты исходников на Си++ - попробуйте не запутаться в них)). Не скорость работы программы, а управляемость ей. Со сложностью мы боремся методом разделяй и властвуй (другого никто не придумал). Ради этого и придумана масса концепций - языки высокого уровня, то же ООП, паттерны и прочее. Так вот, когда программа написана на ассемблере, управляемость низкая. Более того, по мере развития, такая программа быстро теряет управляемость до критических значений. Отладка, рефакторинг, доработка и развитие такой программы через некоторое время может стать невозможной. Поэтому не стоит использовать ассемблер там, где без него можно легко обойтись. Он нужен только в критических по скорости кусочках кода - ну и бывает, например, когда вообще всё по тактам должно быть строго выровнено. Во всём остальном ассемблер категорически противопоказан. У меня на работе тоже есть любитель ассемблера - как надо что-то поменять (перенести на другой контроллер или добавить новую математическую модель), так он выпадает в длительную отладку/переделку, а прошивка потом обязательно где-нибудь сбойнёт, и эта самая отладка начинает новую итерацию. А всё потому, что код непереносим и нифига не нагляден. Поэтому незамеченные ошибки в нём - это норма. А переделка такого кода - апокалипсис.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Знаете все верно,но нет я буду писать на asm ,не переубидите,я когда то писал на си,после того как стал писать на asm понял что это мое,я бывает пишу код неделями и фанатею.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Подскажите пожалуйста при записи на карточку,возьмем например T5557/T5577,нужно ли ловить момент конца чтения карточки или неважно в какой момент делать START GAP на новую карту?,можешь расписать свои длительности для этих типов карт,и как точно отправлять данные,я уже все даташиты смотрел но не пойму когда делать start gap в какой момент именно,после отправки например конфига я вконце шлю паузу на 100 мс потом например вкл генератор,а через какой промежуток я могу слать данные?,если тебе несложно можешь расписать досканально как отправляешь пакеты вот что делаю я:
Можешь ответить, я выше отредактировал,и еще вопросик нужно ли делать reset после конфига?,ты сверяешь в программе для проверки записалась ли картачка или нет старые данные другой карты номер которой будешь заносить в новую карточку с перезаписанной картой,я иммею ввиду программно?
,можешь расписать свои длительности для этих типов карт,и как точно отправлять данные,я уже все даташиты смотрел но не пойму когда делать start gap в какой момент именно,после отправки например конфига я вконце шлю паузу на 100 мс потом например вкл генератор,а через какой промежуток я могу слать данные?,если тебе несложно можешь расписать досканально как отправляешь пакеты вот что делаю я:
А что такое reset? Выключать питание генератора? Попробуйте и так и эдак. Здесь всё подбирается методом проб и ошибок.
Цитата:
ты сверяешь в программе для проверки записалась ли картачка или нет старые данные другой карты номер которой будешь заносить в новую карточку с перезаписанной картой,я иммею ввиду программно?
Я читаю карту и сверяю заданный номер со считанным.
Start Gap(Sgap) = 300мкс Write Gap(Wgap) = 300мкс 0 data = 150мкс 1 data = 420мкс
откуда Wgap 300???там быть такого не может Wgap от 64-240 мкс В таблице же четко написано от 8 до 30 умножаем их на 8 мкс - от несущей откуда он взял 300.
откуда Wgap 300???там быть такого не может Wgap от 64-240 мкс
В программе тоже 300? Может быть, он просто опечатался в статье.
Цитата:
Я читал эти статьи уже кучу раз,
Вот сделайте ровно так же, как в программах для этих статей и всё запишется. И, кстати, не надейтесь, что в даташитах будет описан механизм записи болванок со всеми подробностями. Было бы это так, копировщики клепали бы все подряд. Часто там весьма туманно написано, как же записывается болванка.
Посмотрел я вашу программу, delay_us(420-80)-- bit1?,не пойму как вы такое получаете???,это у вас стандартно для двух типов карт??? минимум тут 384 мкс,а у вас получается 340 откуда?.я так заметил что и Wgap вы каким то чудом вначале сделали 300 мкс а по даташиту максимум 240 мкс,а потом уже сделали для 5577 и 5557 (300-80 мкс),как вы 300 то получили вначале для 5557? А еще вы используете writeReset отправка вконце двух 00,а сами этого не помните
Цитата:
А что такое reset?
отличие в даташите токо по Wgap.
5557
Sgap от 80-400 мкс Wgap от 64-240 мкс 0 data от 128-248 мкс 1 data от 384-504 мкс
5577
Sgap от 80-400 мкс Wgap от 64-160 мкс 0 data от 128-248 мкс 1 data от 384-504 мкс
Вот вы и сделайте, как в программе - так точно работает
У меня заработало,у меня проблема была не с таймингами. Думаю то что у вас в программе немного не то Write Gap точно не 300 мкс для t5557 как собственно и у BolshoyK тоже 300 ,быть такого не должно,да я смотрю у вас многое совпадает с BolshoyK,а у него ошибки. Я кое что не дописал , забыл вначале включать опкод+локбит,с моими таймингами работают четко t5557/t5577 два типа карт : для обоих карт прописал: Start Gap(Sgap) = 300мкс Write Gap(Wgap) = 120мкс 0 data = 180мкс 1 data = 450мкс
а так в даташитах написано:
5557
Sgap от 80-400 мкс Wgap от 64-240 мкс 0 data от 128-248 мкс 1 data от 384-504 мкс
5577
Sgap от 80-400 мкс Wgap от 64-160 мкс 0 data от 128-248 мкс 1 data от 384-504 мкс
Обьясните пожалуйста про em4305,обязательно ли передавать login ?,для чего это?
посмотрите пожалуйста правильно ли я отправляю байты шлем (4,0x5f,0x80,0x01,0x00)
Код:
FieldStop 0 0101 0010 00 1
11111010 0 00000001 1 10000000 1 00000000 0
01111011 0
FieldOn
подскажите еще если к примеру у меня номер карточки начинается на: 111111111 0011 0 1000 1 1111 0 1000 0 0000 0
правильно ли будет отправлять его так?:
Код:
11111111 0 00101100 1 10111110 0 00000000 0
01101101 0
тоесть шлем наоборот? каждый байт
Не пойму как вы отсылаете FieldStop -пачка каких то импульсов,в документации вообще не написано про это там токо про 55 циклов и то что нужно сделать MOD on и всее,откуда вы взяли стоко импульсов? Как вы шлёте 0? ведь в даташите сказано включить поле на 18*8 мкс и отключить на 14*8,а у вас все наоборот,вы его почему то выключаете а затем включаете,я чего то непойму вы по даташиту делали??
Обьясните пожалуйста про em4305,обязательно ли передавать login ?,для чего это?
Не обязательно. Это для карточек с установленным паролем. Оставлено для тех, у кого этот пароль всё-таки окажется на карте.
Цитата:
правильно ли будет отправлять его так?:
Не помню. Вроде бы да. Но в программе ведь это всё есть.
Цитата:
Не пойму как вы отсылаете FieldStop -пачка каких то импульсов,в документации вообще не написано про это там токо про 55 циклов и то что нужно сделать MOD on и всее,откуда вы взяли стоко импульсов? Как вы шлёте 0? ведь в даташите сказано включить поле на 18*8 мкс и отключить на 14*8,а у вас все наоборот,вы его почему то выключаете а затем включаете,я чего то непойму вы по даташиту делали??
Я ведь вам говорил, даташиту НЕ ВЕРЬТЕ! Если бы там всё было написано правильно, этих копировщиков em4305 бы наделали с лёгкостью фиг знает сколько штук. По факту, пришлось снимать сигнал с имеющегося копировщика и его анализировать.
Хорошо,я не вижу смысла в скрывании даташита,все равно эти копировщики продаются и стоят не так уж и дорого. Тогда скажите,в программе то написано,но я плохо помню некоторые команды Си,в самом конце когда все отправлено и вы отключаете поле на 500 ms, через скоко его можно включить? И в самом начале поле было включено?
Код:
что было тут поле было уже включено? если рассматривать самое начало записи FieldOn delayms 500
..........
FeildOff delayms 500 после этого когда можно включить поле?
я после чтения поле не отключаю,его нужно отключать перед началом записи а затем включать или как?
Код:
FieldOn delayms 500
Может нарисуете прям досканально как у вас протокол записи реализован досканально со всеми паузами,а то многое непонятно,сделал по вашей схеме ничего не пишется,пробовал не одну карточку и не один брелок em4305.
Всмысле включите)? я после чтения поле не отключаю,его нужно отключать перед началом записи а затем включать или как?
Как хотите. Можете отключать и снова включать. Можете не отключать. Это без разницы.
Цитата:
Может нарисуете прям досканально как у вас протокол записи реализован досканально со всеми паузами,а то многое непонятно,сделал по вашей схеме ничего не пишется,пробовал не одну карточку и не один брелок em4305.
Раз уж вы взялись переделывать программу под себя и свой контроллер, то смотрите все длительности и как реализовано в программе. Там же всё это есть! А я не хочу сейчас вспоминать и заново разбираться. У меня и так дел полно на данный момент - голова и так кругом идёт. Поэтому что я мог, я рассказал, а остального не помню.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения