Здравствуйте, сделал счётчик импульсов с отображением на семимегментных индикаторах, все заработало и прекрасно считало, но как только попытались сделать сохранение параметров, все сломалось, индикаторы моргают, где то нашёл что нужно не писать в 0 ячейке, писали в других, не помогло питал от usb думал беда в питание, замена источника питания на лабораторный блок не помогла:(
Здравствуйте, сделал в атмел студио 7 счётчик с памятью, и выводом информации через сдвиговые регистры, все работает и считает но когда добавил в код работу с памятью началась ерунда, проверка в протеусе показывает что он считает но странные значения выводит непонятные, в железе все вообще отказывается работать, как горят все сегменты так и горят и не какой реакции, надеюсь на себя но на вас очень рассчитываю даже незнаю в какую сторону смотреть.
Вложения:
Комментарий к файлу: Текст программы prog.txt [2.72 KiB]
Скачиваний: 170
Комментарий к файлу: Схема в протеусе Screenshot_1.png [95.03 KiB]
Скачиваний: 381
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Yarikkasl, сохранять значения в EEPROM надо только, если они не больше девяти. Потому что на следующем цикле сами же оттуда считаете значения за пределами индекса массива
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
ПростоНуб, дак я и так делал и выносил запись в самый конец цикла, все не работает, в протеусе я считаю так там вместо сотен какая то ерунда показывается,
В ЕЕПРОМку пишем только в случае различия данных за определенный период. Обычно для контрольных счетчиков используется какая-нибудь схемка энергонезависимого ОЗУ... DS1307 к примеру... или дежурный источник питания к самому МК подключенный...
BOB51, просто потому что нужно сделать этот счётчик для военки, а у нее есть полный аналог 1887ве7т, поискал я в интернетах и пришел к выводу что это отличный вариант, атмега 128 распространенная есть примеры и уроки.
Добавлено after 2 minutes 29 seconds: ПростоНуб, почему не выдержит? Ведь там функция update она я так понимаю сравнивает и если значение изменилось то перезапишет, и мне много не нужно лишь до 999 правда считать будет долго
Можно не долбить одни и те же ячейки, а сделать кольцевой буфер. 4к EEPROM хватит надолго. Можно задействовать свободную FLASH. Но это на любителя. Можно вообще выбросить регистры и подключить индикаторы через резисторы напрямую к лапам контроллера.
ПростоНуб, akl, а вот и не работает нехрена. Самое грустное что я делал этот. Счётчик который в протеусе просто отлично работал а вот в жизни отказался, а этот в железе заработал хоть и частично, так что получилось и тут нехрена и там нехрена
Добавлено after 5 minutes 32 seconds: akl, зачем убирать регистры, с ними все отлично работает. Показывает. Единственное что вот. Когда я работаю с памятью все умирает.
всегда говорил и могу повторить не стесняясь: все проблемы от написания кода тяп-ляп. у вас в кучу смешан и счет, и резервирование данных в EEPROM, и вывод на индикатор, и опрос внешних сигналов... и понять, что повлияло на результат практически невозможно.
приведите код к состоянию, когда каждое функциональное действие - отдельная функция, а в main только увязка их между собой - гарантирую, что проблема исчезнет или вы мгновенно поймете, в чем именно она заключается и исправите её. даю наводку: 1. вывод на регистры (индикаторы) - отдельная функция, вызываемая в main только в одном месте единожды 2. сохранение показаний в EEPROM - отдельная функция, вызываемая в main только в одном месте единожды 3. счет событий я бы тоже сделал отдельной функцией, вызываемой из одного места... но не обязательно, ибо так могут быть проблемы со скоростью счета - решать вам 4. если кнопки чем-то управляют, то опрос их состояния тоже отдельная функция.
гарантирую вам, что следование моим советам быстро поможет вам решить проблему и результат будет хорош как по красоте кода, так и по его функционалу.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Yarikkasl, если бы я еще знал, что и как должно работать. Как сделать так, чтобы не вываливаться за индекс массива я указал. Реакция на кнопки в Вашем коде непредсказуема, так как никаких попыток устранить их дребезг не пердпринимается. Почему данные обновляются на индикаторе не тогда, когда они изменяются, а только при нажатии кнопки на PA2 (или PA2 и PA3) - мне тоже не понятно. Для чего нужны переменные sr1 и sr2 - загадка. Так как физически нажать одновременно две кнопки невозможно (одна из них всегда нажмется первой), то при нажатии на две кнопки всегда будет отрабатывать последний if, а предыдущий - только если за 0.2 секунды не успели кнопки отпустить.
Насчет "полного аналога 1887ве7т" - я б так утверждать не рискнул... Даташиты надо ДЕТАЛЬНО изучить...
Ну и саму задачу... Для самокалибрующегося счетчика выданных аппаратом (копировалкой) листочков текущего клиента с функцией сортировки по форматам и "вложенного клиента"(внезапно спешащего) да суммарного накопителя результата для хозяина аппарата хватило и DS1307 + AT89C2051. Там только за батарейкой раз в году проследить требовалось.
BOB51, в даташите благо он на родном, есть раздел в котором сказанное чем они отличаются, но к моей задаче это не имеет отношения.проблемы питания тут нет, хоть 1 кВт, другое дело что я не совсем програмист
Питание - вопрос актуален если требуется независимая от контролируемого устройства работа с сохранением результата оперативного подсчета. А ЕЕПРОМ или вариант записи в ПЗУ в отдельную область в режиме самопрограммирования необходимо лишь для итоговых результатов за более крупный интервал времени работы. В принципе скорость записи в ОЗУ значительно выше, чем в ЕЕПРОМ или в ПЗУ. Это не программиста решение, а схемотехника.
ПростоНуб, A0 используется для подачи импульсов число которых учитывается, А1 используется в качестве признака, она все время замкнута в процессе счёта либо нет, А2 используется как признак подключения индикаторов, А3 просто кнопка которую нажимает пользователь что бы увидеть другое значение, я изначально сделал в формате pina=*0b00001110 но мне посоветовали не смотреть на другие пины и использовать только те которые используются ведь может быть признак на A1 и подключен индикатор. Что касается констант с отрицательными значениями их назначение я не особо понимаю, но на счёт они не влияют, я вообще особо не понимаю почему оно не работает как нужно
Добавлено after 2 minutes 6 seconds: ARV, понимать бы ещё что вы мне посоветовали, примерно я понимаю, но вот детально нет, в принципе я понял что мне советуете, а вот как реализовать не особо
Добавлено after 2 minutes 31 second: BOB51, нет питание не независимо, работать будет так. 1. Подали питание, через какое то время не менее 10 минут будут импульсы длинные около минуты и не чаще раза в,5 минут, когда счёт прекратиться не менее чем через час подача питания прекращается
я понял что мне советуете, а вот как реализовать не особо
есть несколько вариантов решения этой проблемы: 1. вы изучаете язык Си и пытаетесь следовать моим советам под контролем форумчан, думаю, помощь в ваших попытках будет оказана весьма оперативно 2. вы размещаете в разделе "Работа" предложение сделать код за вас, разумеется, перед этим вы составляете подробное описание задачи (делаете ТЗ). предполагаю, что на задачу подобной сложности не потребуется более 3000 рублей. есть и другие варианты той или иной степени приемлемости, но их поиск я оставляю вам
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения