Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Тема закрыта

Re: Обработка нажатия кнопки в AVR...

Сб апр 26, 2014 19:49:23

А знаете возможно вы правы, буду читать. Спасибо за совет.

Re: Обработка нажатия кнопки в AVR...

Сб апр 26, 2014 19:54:36

sanyo.95 писал(а):буду читать
Вот и отлично :write:

Re: Обработка нажатия кнопки в AVR...

Сб апр 26, 2014 20:04:18

Ну не 500 мс а 100мс ... у вас цикл крутится 10 раз по 10мс, в конце него DR будет явно больше 5 и сработает per++, затем главный цикл приступит к следующей итерации и весь процесс повторится снова. и каждые 100мс будет очередной per++... через 400мс удержания кнопки на порту появится "1".

Главный цикл у микроконтроллеров - это бесконечный while (1), внутри него и выполняется по сути вся полезная программа.

Тело цикла, итерация

Я на С не пишу, поэтому привожу только алгоритмы которые легко переводятся на любой используемый язык программирования довольно таки однозначно.
Поэтому я и говорю, что в программировании язык ничего не значит - главное это алгоритмы, а их можно записывать в разных формах - графической, на русском, вербально, в виде блок-схем и т.д.
Особенно для начинающих очень важно начать именно с алгоритмов, перевод с алгоритма на язык программирования довольно простая и рутинная операция.
Попробуй написать свою программу на русском языке, в виде последовательности действий. На листе бумаги, обозначая стрелочками направление переходов. Или лучше в виде блок-схемы.
Писать сразу код и не путаться могут только закоренелые программисты, ну или люди с сильно развитым абстрактным мышлением. Впрочем, это практически одно и то же.
Последний раз редактировалось Alexeyslav Сб апр 26, 2014 21:06:31, всего редактировалось 2 раз(а).

Re: Обработка нажатия кнопки в AVR...

Сб апр 26, 2014 20:18:08

господа КРАМ и иже с ним, ваши советы вполне имеют смысл и даже в некоторых случаях просто невероятно правильны, но вы вспомните себя, когда вы впервые написали "Hello, world!" - неужели вы не понимаете, что даваемые вами советы просто не в состоянии воспринять начинающий?! delay_ms видите ли моветон - таймер подавай... когда вы были начинающими, слово "таймер" у вас не вызывало непонимания?! неужели трудно снизойти до уровня того, кто нуждается в помощи и давать ему советы, которые он способен воспринять? все сначала учатся ездить на самокате, потом велосипеде, а только потом на машине - но не иначе! или на фоне начинающих легче возвыситься, разбрасывая направо и налево умные слова?! вы еще RTOS вспомните - там работа с кнопками вообще красиво вырисовывается...

Re: Обработка нажатия кнопки в AVR...

Сб апр 26, 2014 20:33:00

ARV писал(а):господа КРАМ и иже с ним...
.... слово "таймер" у вас не вызывало непонимания?!

Подскажу... У них сейчас групповой вынос мозга от слова "STM32"... :))) :)))

Re: Обработка нажатия кнопки в AVR...

Сб апр 26, 2014 20:42:49

ARV писал(а):как видите, все элементарно просто, и никакие таймеры не нужны. когда заматереете, как программист, тогда, возможно, начнете обрабатывать кнопки и с прерываниями и таймерами, но лично мне в огромном количестве поделок практически никогда это не требовалось...

ARV писал(а):вы каждый раз будете изобретать новый костыль? я - нет :)

:facepalm:
Даже не знаю как это комментировать....
Ладно бы ТС что нибудь понял из Вашего кода... Но ведь НИЧЕГО НЕ ПОНЯЛ...
:cry:
И прикол в том, что с delay() он НИКОГДА ничего не поймет....
И каждый раз будет искать костыли....
ЗЫ. New Корабельников? :wink:

Re: Обработка нажатия кнопки в AVR...

Сб апр 26, 2014 20:57:27

Каждый нуб просто обязан пройти по тернистому пути ветеранов, каким бы он идиотским не был . :)))

Re: Обработка нажатия кнопки в AVR...

Сб апр 26, 2014 21:14:03

КРАМ писал(а):И прикол в том, что с delay() он НИКОГДА ничего не поймет....
И каждый раз будет искать костыли....

"МРАК и фейкверк!"(С)
А с таймером уже не костыли, а ходули... :)))
А если таймер один единственный... да и тот занят???
Да и какая разница... по большому счёту... если МК тупо исполняет "собака гоняется за своим хвостом" и больше ничего не делает??? :)))

Re: Обработка нажатия кнопки в AVR...

Сб апр 26, 2014 21:18:54

HHIMERA писал(а):А если таймер один единственный... да и тот занят???

Прочти вопрос и узбагойся...
:music:
ЗЫ. Занятно, что собственные комплексы яростно экстраполируются на всех подряд...
Какая разница чем занят МК, если стоит задача обрабатывать кнопки, то решать её надо НАИБОЛЕЕ УНИВЕРСАЛЬНО.
А универсально - это с наименьшим расходом ресурсов.
И вообще, если преподавательский зуд не дает спать, то лучше направить его на собственных детей. Они оценят.
Или нет...
:(

Re: Обработка нажатия кнопки в AVR...

Сб апр 26, 2014 21:27:57

решать её надо НАИБОЛЕЕ УНИВЕРСАЛЬНО

Это верный путь к "ничего не работает"

Re: Обработка нажатия кнопки в AVR...

Сб апр 26, 2014 21:36:14

Alexeyslav писал(а):Это верный путь к "ничего не работает"

Нет, Алексей, путь определяется сенсеем.
И если сенсей криворук и косноязычен, то и работать ничего не будет.
Объяснять про кнопки нужно с АЗОВ. Или просто дать шаблон, чтобы ТС отвязался. Но и результат ТС сможет получить только в рамках шаблона.
Использовать науку в СВОЕЙ задаче он не сможет.
Как это ни покажется некоторым "учителям" странным, но обработка кнопок относится к достаточно продвинутому уровню начинающих.
Сначала нужно освоить СИНХРОННЫЕ программы, а лишь потом перейти к АСИНХРОННЫМ...
И делать это нужно не ранее, чем будут освоены и счетчики и прерывания...

Re: Обработка нажатия кнопки в AVR...

Сб апр 26, 2014 21:40:57

КРАМ писал(а):А универсально - это с наименьшим расходом ресурсов.

:facepalm: :kill:
С каких это пор... универсальность приводила к "наименьшим расходам ресурсов"???
Универсальность всегда была избыточна...

Re: Обработка нажатия кнопки в AVR...

Сб апр 26, 2014 21:46:55

HHIMERA писал(а):Универсальность всегда была избыточна...

Есть доказательства или просто "так говорят"?
:)
Тебя нагло обманули.
Молоток универсален и не избыточен...
:wink:
Использование таймера в качестве системного загружает сам таймер лишь в обработчике на десяток машциклов, однако полностью освобождает суперлуп.
Для МК это означает перевод задачи в ФОНОВЫЙ режим. Это ли не универсальность?

Re: Обработка нажатия кнопки в AVR...

Сб апр 26, 2014 22:22:32

Молоток не универсален - он не умеет закручивать шурупы.

Фоновый режим это фоновый режим а не универсальность.

Re: Обработка нажатия кнопки в AVR...

Сб апр 26, 2014 22:37:09

КРАМ писал(а):Молоток универсален и не избыточен...

"Поставь на место микроскоп и положи гвозди!"(С)

загружает сам таймер лишь в обработчике на десяток машциклов, однако полностью освобождает суперлуп.

Зачитай, заодно, нубу ПРО volatile и атомарность... а вдруг поймёт с первого раза... 8)

Re: Обработка нажатия кнопки в AVR...

Сб апр 26, 2014 22:38:27

Алексей.
Молотком еще нельзя жарить блины и красить стены.
Зато им можно клепать, ковать, гнуть, забивать, разбивать и прочее, что связано с ударами.
МК тоже не умеет закручивать шурупы, если чо...
Перевод задачи в фоновый режим позволяет не делать все что угодно, а универсален в СМЫСЛЕ ИСПОЛЬЗОВАНИЯ В ПРОИЗВОЛЬНОЙ ПРОГРАММЕ.
Фоновая задача не конфликтует с пользовательской или вероятность такого конфликта крайне мала и легко устранима.
Кстати, использование Си как раз и располагает к такого рода решениям...
Демонстрация работы и работа - это СОВЕРШЕННО РАЗНЫЕ понятия.
Так вот, выше была предложена ДЕМОНСТРАЦИЯ.

Re: Обработка нажатия кнопки в AVR...

Сб апр 26, 2014 22:40:33

HHIMERA писал(а):Зачитай, заодно, нубу ПРО volatile и атомарность... а вдруг поймёт с первого раза... 8)

Могу поспорить на что нибудь существенное,что ты и сам нуб...
По крайней мере так себя ведешь...
Только нуб может кичиться своими убогими познаниями...

Re: Обработка нажатия кнопки в AVR...

Сб апр 26, 2014 23:12:57

КРАМ писал(а):Могу поспорить...

На конфету??? Пожалуйся воспитательнице... :))) :)))
А про volatile и атомарность почитай... вдруг пригодится...

Re: Обработка нажатия кнопки в AVR...

Сб апр 26, 2014 23:25:10

:facepalm:
к сожалению, я прав...
:cry:

Re: Обработка нажатия кнопки в AVR...

Сб апр 26, 2014 23:40:27

Пирожок возьми на полочке... Корабельников!!! :))) :))) :)))
Сначала нужно освоить СИНХРОННЫЕ программы, а лишь потом перейти к АСИНХРОННЫМ...
И делать это нужно не ранее, чем будут освоены и счетчики и прерывания...

Маразм или провалы памяти??? delay() к чему относится??? :facepalm:
А если МК имеет хардварную обработку кнопок??? Тоже лепить по привычке "универсально"??? А как же великие познания... или это всё игра на публику???
И в догонку...
КРАМ писал(а):Из серии printf ...

А что... printf так тяжек для нежного и ранимого мозга???
А если он хорошо ложится под задачу... почему бы и нет??? Или костность мышления не позволяет???
Тема закрыта