FLOWCODE УРОК 100 Особенность макроса INPUT

preview_player
Показать описание

Рекомендации по теме
Комментарии
Автор

Здравствуйте. Тема подробно затрагивалась вами, в этом уроке FLOWCODE УРОК 36 сенсорная кнопка на attiny13_2. Я пользовался вашими знаниями, из этого урока. Передо мной стояла задача, что бы один вывод микроконтроллера опрашивал кнопку и в случае её нажатия становился выходом для включения сегмента семи сегментного индикатора, и обратно. Много писать не буду, скажи только, что когда проблема, казалось бы, была решена, и в Proteuse всё заработало, то в железе только после того, когда параллельно пинам выполняющим задачу входа и выхода, подключил свободные пины и назначил их только входами. Хочу признаться, что знаний у меня мало, поэтому проблему решил именно так. Устройство пока успешно работает. И ещё, мне показалось, что пины аналоговые и цифровые, в таких случаях ведут себя по-разному. Спасибо Вам за уроки.

ИванШтифт
Автор

Андрей. Спасибо за видео! У недавно тебя был урок: Измерение малых временных интервалов Захват события по таймеру. Ранее был урок по модулям генератора частот 9833. Можно ли сделать на этом генераторе микросекундные пачки частот пользуясь точными малыми временными интервалами на контроллере? Будет ли между этими пачками частот разрыв? Генераторы ещё в пути, а у тебя в железе имеется. Урок получился бы отличный. А ещё лучше в таком уроке посмотреть как это будет если всё это сделать только на контроллере. Вообще самое интересное во Фловкоде это именно тема малых временных интервалов. Как сними работать и насколько они точные.

Pro-pdyx
Автор

Здравствуйте!
Если в программе есть опрос состояния входа микроконтроллера - всегда при инициализации программно подтягиваю его так
DDRB |= ~(1<<0);
PORTB |= 1<<0;

excelentdevicesl
Автор

Приветствую, Андрей. Столкнулся с подобным и даже хотел спросить "почему так?", но смог сам разобраться. Дело было так. В начале программы "обнулил" порты МК с которыми работаю. А, потом, в программе была подпрограмма измеряющая большие интервалы времени, тем методом, который Вы как-то описывали: опрос ножки порта: "0" или "1". Работал с портом D, как раз там пины предназначенные под прерывания INT(MEGA2560). Хотя этот метод и не связан с прерыванием, но на соседнем выводе был ещё и подсчёт частоты, по прерываниям. И, частоту считает, а изменение "0" на "1" по другой подпрограмме - ни как не хочет!? Понять не мог в чём дело...Но, потом как-то додумался убрать макрос "обнуление порта D" из начала программы и - всё заработало!)))

НиколаЯковлев
Автор

Здавствуйте! С праздниками!!! Спасибо за канал!!! Столкнулся с вопросом, на который не могу найти ответ - мне надо реализовать кнопку старт стоп (вход в цикл и выход из него нажатием одной и той же кнопки). В программе есть несколько подпрограмм(циклов), переход в которые переключается свитчем. И есть кнопка старт стоп выбранной подпрограммы(цикла) . Кнопка подтянута к +5в, Стоит свитч с условием, если кнопка стала - "0" , то программа переходит по свитчу в подпрограмму(цикл). Условия выполнения цикла - пока кнопка не нажата (пока там единица), цикл выполняется бесконечно. НО, как только программа попадает в этот цикл, кнопка перестает инициализироваться. Я поместил инициализацию кнопки в цикл, все заработало, но работает криво, т.к. дребезг контактов кнопки не дает корректно выйти из цикла (подпрограммы) в основную программу. Нужна задержка после инициализации кнопки. Можно было бы добавить задержку, но программа реализована так, что в качестве задержек используется переменная... Если я добавлю задержку после инициализации кнопки внутри цикла, то нарушается подпрограмма, записанная в цикл. Возникает вопрос: как реализовать в таком случае дебонус кнопки (скомпенсировать дребезг контактов)? Или как, используя ту же кнопку выйти из цикла в основную программу, избежав дребезг контактов кнопки? Может надо использовать прерывание для завершения цикла или есть какие-то другие решения? Извините, если коряво объяснил. Спасибо!

ИльяИванов-пч
Автор

Доброго. Все логично. Когда идет самое первое считывание, по дефолту в PORTx = 0 и подтяжка отключена. Потом ставите лог 1 и начинаете считывать с порта, а там в PORTx = 1, соответственно получаете вход с подтяжной, потом устанавливаете в PORTx лог 0 и переводите на чтение и получаете отключенную подтяжку (наверно из-за этого и некорректная работа с клавиатурой получалась). Как бороться? либо писать свой код, либо иметь ввиду, что если не нужна подтяжка, то лучше сбрасывать биты в PORTx или наоборот ставить

arielvolog
Автор

Программа для начинающих ничего но по факту дорогая. Так что есть бесплатная полностью и на много удобнее FL Prog рускоязычная . Единственное что тут можно делать на пик контроллерах по, но бессмысленно дорогая и ещё каждый месяц платить. Допустим баксов 50 и разово это куда не шло. К примеру она нужна только для любителей а у любителей редко доходное дело и делают только для себя

master-sd
Автор

Может на кнопку ставить последовательно 1к резистор ? И пин цел и гемора меньше)))

Дмитрий-хяй