Ну а зачем так делать? Сразу целиком писать весь регистр без его предварительного чтения. Ведь какие прерывания необходимы, а каие нет - известно. Тоже самое и регистрами флагов. Там всего 2 флага. Ну так и пиши туда сразу 0xFF. Зачем его читать???
ну, хотя бы потому, что такая конструкция гораздо нагляднее. Когда через год или десять, я открою этот код, я не задамся вопросом "а нафига я тут в регистр 0xFF" записал. Впрочем это спор а-ля "делать ли отступы и если делать, то сколько" Если б бился за каждый так процессорного времени, тогда да. А так... Тем более, что вряд-ли это к сути проблемы может иметь отношение.
Добавлено after 4 hours 19 minutes 18 seconds: Радиоэлектроника -- наука о контактах. Короче, начал я выпаивать кнопку и два вывода просто остались на контактных дорожках. С новой кнопкой все работает. Так что слухи о том, что в прерываниях нельзя использовать вызовы других функций (в частности записи в eeprom) несколько преувеличены. Большое спасибо всем откликнувшимся. Но wdr я тоже убрал Если кому интересно, это был велофонарь с али плюс вибродатчик и датчик освещенности
Открою вам маааленький секрет. В прерывания можно делать что угодно. Всё зависит от задачи. Когда ты знаешь возможности мк. Кнопка, вам кажется, вы решили проблему? Нет. Вы её обошли. Десятой дорогой. Лично я никогда не вешал кнопки на прерывания. Нет такой задачи, чтобы за несколько тактов отреагировать. Я не Flesh, не супермен. Оперировать на уровне нескольких тактов. И повешу кнопку на внешнее прерывание в одном единственном случае. Когда мне потребуется энергосбережения.
Demiurg, к чему столько пафоса? Ну не вешаете вы кнопки на прерывания -- и не вешайте. Ну кажется вам, что я "обошел" проблему -- бога ради. Зело любопытно, как бы вы программно "обходили" проблему микротрещин в выводах кнопки.
Пиши битами. Зачем я в регистр флагов записал 255, я и через десять лет не буду вопросов задавать. И так понятно, что для сброса всех флагов.
Добавлено after 50 seconds:
Цитата:
Радиоэлектроника -- наука о контактах.
А причём здесь радио, если речь о цифровой технике???
Добавлено after 4 minutes 26 seconds:
Цитата:
Лично я никогда не вешал кнопки на прерывания.
Я вешаю, если нет каких-то других внешних воздействий, ибо я всегда сплю, когда МК ничем не занят. Но опять-таки AVR крайне тухлый вариантв этом плане - нельзя тактировть таймеры и при этом находится в глубоком сне. Даже в новых AVR. Вот на хера так делать???
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Так что слухи о том, что в прерываниях нельзя использовать вызовы других функций (в частности записи в eeprom) несколько преувеличены
Да хватит уже. Никто не говорил "нельзя". Си прекрасно позволяет стрелять себе в ногу, если вы этого хотите. Просто говорили о том, что это плохая идея/практика и даже объяснили почему.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Так что слухи о том, что в прерываниях нельзя использовать вызовы других функций (в частности записи в eeprom) несколько преувеличены
Да хватит уже. Никто не говорил "нельзя". Си прекрасно позволяет стрелять себе в ногу, если вы этого хотите. Просто говорили о том, что это плохая идея/практика и даже объяснили почему.
Такое впечатление, что вам очень обидно, что все работает, хотя не должно, потому, что вы так сказали Расслабьтесь.
Я вешаю, если нет каких-то других внешних воздействий, ибо я всегда сплю, когда МК ничем не занят. Но опять-таки AVR крайне тухлый вариантв этом плане - нельзя тактировть таймеры и при этом находится в глубоком сне. Даже в новых AVR. Вот на хера так делать???
да в общем-то совершенно очевидно. Потому, что это не будет режимом "глубокого сна" (Power Down). Для того, чтобы таймеры тикали, есть другие режимы энергосбережения.
1 - кнопки это человекоинтерфейс. Реакция человека десятки, сотни миллисекунд. Реакция микроконтроллера, если кнопка повешана на прерывание - несколько тактов. Хочется спросить, куда вы так торопитесь, все равно не успеете. На прерывание есть смысл вешать кнопки только в случае энергосбережения, спящего режима. Ещё в случае экономии ввода вывода. И то варианты. 2 - дребезг контактов. 3 - режим внешнего прерывания, по уровню или фронту. Как здесь уже правильно подметили, могут быть неучтенные отложенные прерывания. Вывод, разберитесь что такое дребезг контактов. Какие режимы внешнего прерывания, как правильно инициализировать внешние прерывания. И нужно ли вешать кнопки на внешние прерывания, если нет энергосбережения.
Вывод: одна вода, ничего конкретного. СпойлерЧем отличаются русский, американский и еврейский форумы? - на американском форуме вы задаете вопрос и вам дают ответ - на еврейском форуме вы задаете вопрос и вам задают встречный вопрос - на русском форуме вы задаете вопрос и вам долго объясняют почему вы такой мудак.
{позволяет стрелять себе в ногу,} Если в ногу - так и ХсН. Вот если, например, надо обновлять индикатор каждые 3 мС, а епром пишет 10 мС, то это как и яйца отстрелить.
_________________ Я всё-всё узнAю и стану профессором.
Хотя вы, само-собой, можете считать, что ЦТ не имеет ни малейшего отношения к электронике.
К радиотехнике - так точно. Это отдельный пласт.
Цитата:
Просто говорили о том, что это плохая идея/практика и даже объяснили почему.
Я так и не увидел объяснения. Просто отсылки на практику и не более того.
Цитата:
Потому, что это не будет режимом "глубокого сна" (Power Down). Для того, чтобы таймеры тикали, есть другие режимы энергосбережения.
Можно подумать, что их много. Всего-то один - IDLE. Но это у AVR так. В MSP430 совершенно иначе. Асинхронный таймер тикает себе и тикает, потребляя менее микроампера. AVR такое и не снилось даже.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 44
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения