здравствуйте коты
хотелось бы задать вопрос по поводу кнопок в CVAVR на C
как сделать так чтобы при нажатии на кнопку и удержании ее
цикл срабатывал всего один раз до тех пор пока ее не нажмешь снова
код примера пока предложить не смогу нахожусь не дома
понял что надо как-то с флагами мутить и с swich case
но не могу понять как
Неудачный код.
Во первых. Есть комбинация условий, при которых PORTA не сохранится в lastState, а это значит, что есть вероятность пропустить изменение порта.
Во вторых. Между if(PORTA != lastState) и lastState = PORTA; состояние порта может измениться. Хоть это и кажется невероятным, но вероятность имеется. А значит, как и в первом случае, есть вероятность пропустить изменение.
Аlex писал(а):Неудачный код.
Во первых. Есть комбинация условий, при которых PORTA не сохранится в lastState, а это значит, что есть вероятность пропустить изменение порта.
Во вторых. Между if(PORTA != lastState) и lastState = PORTA; состояние порта может измениться. Хоть это и кажется невероятным, но вероятность имеется. А значит, как и в первом случае, есть вероятность пропустить изменение порта.
предложите свой 100% рабочий код
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
Дело не в антидребезге, а в правильности сохранения предыдущего состояния. Даже при использовании задержки, возможен такой момент, что состояние порта/пина может измениться между его опросом и сохранением для следующего опроса. В этом случае будет пропуск изменения. Для кнопки, может это и ерунда, но, не зная что у Вас в голове, осмелюсь предположить, что Вы можете ловить какой-либо сигнал на изменение подобным способом. И в этом случае, подобный алгоритм сыграет с Вами злую шутку, которую тяжело будет отловить.
По этому, не поймите мои посты как критику, а поймите как некую попытку предостеречь от неприятностей.
Я то код могу привести, но в данный момент мы рассматриваем Ваш код, в котором есть небольшие недочёты. Я на них указал, а Вам уже решать как их исправлять и исправлять ли вообще. Если не знаете как это сделать - всегда можете об этом сказать или спросить на форуме. Вам с радостью ответят.
ЗЫ: Я не понимаю тех, кто начинает дуться и вставать на дыбы, когда в ихнем коде находят недостатки. Я бы, наоборот, спасибо сказал.
ругается на LastState
как будто CVAVR не знает такой команды
undefined symbol 'LastState'
может какую нить библиотеку надо подключить или CVAVR не работает LastState
З.Ы. сейчас подключено
<mega16a.h>
<alcd.h>
<stdio.h>
<delay.h>