Ну не 500 мс а 100мс ... у вас цикл крутится 10 раз по 10мс, в конце него DR будет явно больше 5 и сработает per++, затем главный цикл приступит к следующей итерации и весь процесс повторится снова. и каждые 100мс будет очередной per++... через 400мс удержания кнопки на порту появится "1".
Главный цикл у микроконтроллеров - это бесконечный while (1), внутри него и выполняется по сути вся полезная программа.
Я на С не пишу, поэтому привожу только алгоритмы которые легко переводятся на любой используемый язык программирования довольно таки однозначно. Поэтому я и говорю, что в программировании язык ничего не значит - главное это алгоритмы, а их можно записывать в разных формах - графической, на русском, вербально, в виде блок-схем и т.д. Особенно для начинающих очень важно начать именно с алгоритмов, перевод с алгоритма на язык программирования довольно простая и рутинная операция. Попробуй написать свою программу на русском языке, в виде последовательности действий. На листе бумаги, обозначая стрелочками направление переходов. Или лучше в виде блок-схемы. Писать сразу код и не путаться могут только закоренелые программисты, ну или люди с сильно развитым абстрактным мышлением. Впрочем, это практически одно и то же.
Последний раз редактировалось Alexeyslav Сб апр 26, 2014 21:06:31, всего редактировалось 2 раз(а).
господа КРАМ и иже с ним, ваши советы вполне имеют смысл и даже в некоторых случаях просто невероятно правильны, но вы вспомните себя, когда вы впервые написали "Hello, world!" - неужели вы не понимаете, что даваемые вами советы просто не в состоянии воспринять начинающий?! delay_ms видите ли моветон - таймер подавай... когда вы были начинающими, слово "таймер" у вас не вызывало непонимания?! неужели трудно снизойти до уровня того, кто нуждается в помощи и давать ему советы, которые он способен воспринять? все сначала учатся ездить на самокате, потом велосипеде, а только потом на машине - но не иначе! или на фоне начинающих легче возвыситься, разбрасывая направо и налево умные слова?! вы еще RTOS вспомните - там работа с кнопками вообще красиво вырисовывается...
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
как видите, все элементарно просто, и никакие таймеры не нужны. когда заматереете, как программист, тогда, возможно, начнете обрабатывать кнопки и с прерываниями и таймерами, но лично мне в огромном количестве поделок практически никогда это не требовалось...
ARV писал(а):
вы каждый раз будете изобретать новый костыль? я - нет
Даже не знаю как это комментировать.... Ладно бы ТС что нибудь понял из Вашего кода... Но ведь НИЧЕГО НЕ ПОНЯЛ...
И прикол в том, что с delay() он НИКОГДА ничего не поймет.... И каждый раз будет искать костыли.... ЗЫ. New Корабельников?
И прикол в том, что с delay() он НИКОГДА ничего не поймет.... И каждый раз будет искать костыли....
"МРАК и фейкверк!"(С) А с таймером уже не костыли, а ходули... А если таймер один единственный... да и тот занят??? Да и какая разница... по большому счёту... если МК тупо исполняет "собака гоняется за своим хвостом" и больше ничего не делает???
_________________ "Я не даю готовых решений, я заставляю думать!"(С)
А если таймер один единственный... да и тот занят???
Прочти вопрос и узбагойся...
ЗЫ. Занятно, что собственные комплексы яростно экстраполируются на всех подряд... Какая разница чем занят МК, если стоит задача обрабатывать кнопки, то решать её надо НАИБОЛЕЕ УНИВЕРСАЛЬНО. А универсально - это с наименьшим расходом ресурсов. И вообще, если преподавательский зуд не дает спать, то лучше направить его на собственных детей. Они оценят. Или нет...
Нет, Алексей, путь определяется сенсеем. И если сенсей криворук и косноязычен, то и работать ничего не будет. Объяснять про кнопки нужно с АЗОВ. Или просто дать шаблон, чтобы ТС отвязался. Но и результат ТС сможет получить только в рамках шаблона. Использовать науку в СВОЕЙ задаче он не сможет. Как это ни покажется некоторым "учителям" странным, но обработка кнопок относится к достаточно продвинутому уровню начинающих. Сначала нужно освоить СИНХРОННЫЕ программы, а лишь потом перейти к АСИНХРОННЫМ... И делать это нужно не ранее, чем будут освоены и счетчики и прерывания...
Тебя нагло обманули. Молоток универсален и не избыточен...
Использование таймера в качестве системного загружает сам таймер лишь в обработчике на десяток машциклов, однако полностью освобождает суперлуп. Для МК это означает перевод задачи в ФОНОВЫЙ режим. Это ли не универсальность?
Алексей. Молотком еще нельзя жарить блины и красить стены. Зато им можно клепать, ковать, гнуть, забивать, разбивать и прочее, что связано с ударами. МК тоже не умеет закручивать шурупы, если чо... Перевод задачи в фоновый режим позволяет не делать все что угодно, а универсален в СМЫСЛЕ ИСПОЛЬЗОВАНИЯ В ПРОИЗВОЛЬНОЙ ПРОГРАММЕ. Фоновая задача не конфликтует с пользовательской или вероятность такого конфликта крайне мала и легко устранима. Кстати, использование Си как раз и располагает к такого рода решениям... Демонстрация работы и работа - это СОВЕРШЕННО РАЗНЫЕ понятия. Так вот, выше была предложена ДЕМОНСТРАЦИЯ.
Зачитай, заодно, нубу ПРО volatile и атомарность... а вдруг поймёт с первого раза...
Могу поспорить на что нибудь существенное,что ты и сам нуб... По крайней мере так себя ведешь... Только нуб может кичиться своими убогими познаниями...
Сначала нужно освоить СИНХРОННЫЕ программы, а лишь потом перейти к АСИНХРОННЫМ... И делать это нужно не ранее, чем будут освоены и счетчики и прерывания...
Маразм или провалы памяти??? delay() к чему относится??? А если МК имеет хардварную обработку кнопок??? Тоже лепить по привычке "универсально"??? А как же великие познания... или это всё игра на публику??? И в догонку...
КРАМ писал(а):
Из серии printf ...
А что... printf так тяжек для нежного и ранимого мозга??? А если он хорошо ложится под задачу... почему бы и нет??? Или костность мышления не позволяет???
_________________ "Я не даю готовых решений, я заставляю думать!"(С)
Сейчас этот форум просматривают: Google [Bot] и гости: 22
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения