dm37 Опубликовано 4 ноября, 2016 Поделиться Опубликовано 4 ноября, 2016 не переживайте об этом, все через это прошли, что бы они не говорили 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Григорий Т. Опубликовано 4 ноября, 2016 Поделиться Опубликовано 4 ноября, 2016 30 минут назад, Юстас сказал: Если соленоид сработает сам по себе, то капец пальцам оператора и мне тоже)) А вот здесь, только на МК надеяться не стоит. Нужна многоуровневая система защиты. Оптическая, ёмкостная и т.д. И все независимо должны иметь возможность обесточить соленоид. 0 Никогда не спорьте с дураком - люди могут не заметить между вами разницы Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
dm37 Опубликовано 4 ноября, 2016 Поделиться Опубликовано 4 ноября, 2016 вы с кнопками можете сейчас зависнуть (это будет непростой код), то что я предлагаю сделать сначала - проще. Да и вдруг длительности импульса в 200 млсек не хватит придётся использовать не байт для хранения, а два байта - придётся всё переделывать 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
Григорий Т. Опубликовано 4 ноября, 2016 Поделиться Опубликовано 4 ноября, 2016 2 минуты назад, Юстас сказал: гореть мне опять на костре инквизиции когда покажу код))) Да ладно... Здесь все пытаются, как могут, вам помочь. Вы тут за один день узнаете больше, чем по книжкам за месяц. 1 Никогда не спорьте с дураком - люди могут не заметить между вами разницы Ссылка на комментарий Поделиться на другие сайты Поделиться
dm37 Опубликовано 4 ноября, 2016 Поделиться Опубликовано 4 ноября, 2016 автор не указал условие запуска соленоида 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Юстас Опубликовано 4 ноября, 2016 Автор Поделиться Опубликовано 4 ноября, 2016 Скрытый текст ;*********************************************** ;ОСНОВНОЙ ЦИКЛ********************************** ;*********************************************** CIKLE: in REG_PINC, PINC ; прочтём PINC rcall KNOPKI ; проверим состояние кнопок tst FLAG_KEY1 ; проверяем флаги состояния кнопок brne ANTIDREBEZG ; заюзаем антидребезг если кнопки нажаты tst FLAG_KEY2 ; и т.д. brne ANTIDREBEZG ; tst FLAG_KEY3 brne ANTIDREBEZG rjmp CIKLE ;*********************************************** ;*******ПРЕРЫВАНИЕ ПО ВЕКТОРУ TIMER0_OVF******** ;*********************************************** TIMER0_OVF: ldi flag, 1 reti ;*********************************************** ;******ПРОГРАММА ПРОВЕРКИ СОСТОЯНИЯ КНОПОК****** ;*********************************************** KNOPKI: cpi REG_PINC, 0b00000011 ; сравним breq ON_FLAG1 ; если равно, то поднимем флаг cpi REG_PINC, 0b00000100 ; сравним breq ON_FLAG2 ; если равно, то поднимем флаг cpi REG_PINC, 0b00001000 ; сравним breq ON_FLAG3 ; если равно, то поднимем флаг ret ;*********************************************** ;*************ФЛАГИ СОСТОЯНИЯ КНОПОК************ ;*********************************************** ON_FLAG1: ldi FLAG_KEY1, 1 ; поднимем флаг ret ON_FLAG2: ldi FLAG_KEY2, 1 ; поднимем флаг ret ON_FLAG3: ldi FLAG_KEY3, 1 ; поднимем флаг ret ;*********************************************** ;************ПРОГРАММА АНТИДРЕБЕЗГА************* ;*********************************************** ANTIDREBEZG: rjmp CIKLE Спички подать?)))) 3 минуты назад, dm37 сказал: автор не указал условие запуска соленоида Нажаты одновремено (примерно) две кнопки, блин тут тоже загвоздка.... хотяяя должно прокатить по коду. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
dm37 Опубликовано 4 ноября, 2016 Поделиться Опубликовано 4 ноября, 2016 6 минут назад, Юстас сказал: Нажаты одновремено (примерно) две кнопки, блин тут тоже загвоздка.... хотяяя должно прокатить по коду. если так, то обработка кнопок должна быть железобетонной 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Юстас Опубликовано 4 ноября, 2016 Автор Поделиться Опубликовано 4 ноября, 2016 Много букв в коде, но мне так проще и прозрачнее) Что скажете? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
dm37 Опубликовано 4 ноября, 2016 Поделиться Опубликовано 4 ноября, 2016 сказать ничего не могу (я против такого варианта) ожидаются проблемы с кнопками (с пальцами оператора) 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Юстас Опубликовано 4 ноября, 2016 Автор Поделиться Опубликовано 4 ноября, 2016 Но почему? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Григорий Т. Опубликовано 4 ноября, 2016 Поделиться Опубликовано 4 ноября, 2016 3 минуты назад, dm37 сказал: если так, то обработка кнопок должна быть железобетонной Это не поможет. Ошибку оператора это не устранит. Я выше указал, защита должна быть многоуровневой и независимой. 0 Никогда не спорьте с дураком - люди могут не заметить между вами разницы Ссылка на комментарий Поделиться на другие сайты Поделиться
dm37 Опубликовано 4 ноября, 2016 Поделиться Опубликовано 4 ноября, 2016 вы не сможете нормально устранить дребезг контактов, что при помехе может привести к самопроизвольному нажатию кнопок 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Юстас Опубликовано 4 ноября, 2016 Автор Поделиться Опубликовано 4 ноября, 2016 (изменено) То-есть надо дописать проверку на размыкание кнопок после нажатия? Изменено 4 ноября, 2016 пользователем Юстас 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
dm37 Опубликовано 4 ноября, 2016 Поделиться Опубликовано 4 ноября, 2016 1 минуту назад, Григорий Т. сказал: Это не поможет. Ошибку оператора это не устранит. Я выше указал, защита должна быть многоуровневой и независимой. это пускай решает разработчик, мы не знаем его возможности в этом плане. Как вариант вместо (дополнительно) кнопки завести датчик 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Геннадий Опубликовано 4 ноября, 2016 Поделиться Опубликовано 4 ноября, 2016 Мало того, сработав один раз, станок, по следующему циклу, повторит операцию. И все это произойдет с такой скоростью и такое кол-во раз, что оператор глазом не успеет моргнуть, не то чтобы отжать кнопки. Вы крутите главный цикл с максимально-бешеной скоростью. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Юстас Опубликовано 4 ноября, 2016 Автор Поделиться Опубликовано 4 ноября, 2016 Боюсь датчик не поможет, соленоид не сможет понять то ли там руки оператора, то ли изделие из ткани. Палцы будут в непосредственной близости от пуансона соленоида. Буквально в сантиметре от опресовки. Только так. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
COKPOWEHEU Опубликовано 4 ноября, 2016 Поделиться Опубликовано 4 ноября, 2016 (изменено) А как вам вариант завести по байту на каждую кнопку и по таймеру циклически их сдвигать? Тогда нажатой будет считаться кнопка со значением 0xFF а отпущенной - 0x00. Это сработает если время нажатия не менее 256 мсек и отсекает дребезг. TIM1_OVF_vect: save_SREG sbis PINC,0 ldi btn1,0x00 ;если кнопка откущена - сбрасываем в 0 (следующей командой увеличится до 1, но это не страшно) inc btn1 ;увеличиваем счетчик времени нажатия brne DONT_FIX_BTN1 ;если переполнения не было - все ок ldi btn1,0xFF ;а если было - принудительно выставляем максимальное время (можно еще поднять где-нибудь флаг) DONT_FIX_BTN1: ... load_SREG reti Вот более простой вариант сразу для всех кнопок одного порта. Менее помехозащищенный, но и менее затратный TIM0_OVF_vect: save_SREG dec timer brne TIMER_CONT ldi timer, 200 ;модуль счета программного таймера 200 мс in bnts, PINC ;потом он сохраняет "снимок" PINC со всеми нажатыми кнопками в переменную andi btns, ~(1<<BTN_1 | 1<<BTN_2 | 1<<BTN_3) ;и убивает ненужные биты TIMER_CONT: load_SREG reti Изменено 4 ноября, 2016 пользователем COKPOWEHEU Исправил код, добавил комментарии 1 Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз. Часть моих наработок. Ссылка на комментарий Поделиться на другие сайты Поделиться
Юстас Опубликовано 4 ноября, 2016 Автор Поделиться Опубликовано 4 ноября, 2016 1 минуту назад, Геннадий сказал: Мало того, сработав один раз, станок, по следующему циклу, повторит операцию. И все это произойдет с такой скоростью и такое кол-во раз, что оператор глазом не успеет моргнуть, не то чтобы отжать кнопки. Вы крутите главный цикл с максимально-бешеной скоростью. Как же жить теперь с этим?)) 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
dm37 Опубликовано 4 ноября, 2016 Поделиться Опубликовано 4 ноября, 2016 без чётких отсчётов времени при анализе нажатия кнопки ничего не получиться, а их можно добиться только считая количество вхождений в прерывание (например 1 млсек). 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Юстас Опубликовано 4 ноября, 2016 Автор Поделиться Опубликовано 4 ноября, 2016 (изменено) COKPOWEHEU, Мне идея нравится) Что скажут другие? На костре места много))) Изменено 4 ноября, 2016 пользователем Юстас 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
dm37 Опубликовано 4 ноября, 2016 Поделиться Опубликовано 4 ноября, 2016 (изменено) 9 минут назад, COKPOWEHEU сказал: А как вам вариант завести по байту на каждую кнопку и по таймеру циклически их сдвигать? Тогда нажатой будет считаться кнопка со значением 0xFF а отпущенной - 0x00. Это сработает если время нажатия не менее 256 мсек и отсекает дребезг. только не 256 млсек, а 8 млсек, при таймерек 1 млсек (странно, в тексте "циклический сдвиг", а в коде "inc") вариантов много, можно и так, но главное по таймеру (в прерывании). Можно конечно ставить в прерывании только флаг, а кнопки сканировать в основном теле программы. Но тогда придётся контролировать время выполнения основного кода программы, чтобы оно не превысило время таймера, иначе задержки поплывут Изменено 4 ноября, 2016 пользователем dm37 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
COKPOWEHEU Опубликовано 4 ноября, 2016 Поделиться Опубликовано 4 ноября, 2016 @dm37, спасибо, уже сам заметил и пофиксил. 0 Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз. Часть моих наработок. Ссылка на комментарий Поделиться на другие сайты Поделиться
Юстас Опубликовано 4 ноября, 2016 Автор Поделиться Опубликовано 4 ноября, 2016 А как на это отзовётся динамическая индикация? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
dm37 Опубликовано 4 ноября, 2016 Поделиться Опубликовано 4 ноября, 2016 положительно ))) она даже не заметит 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Юстас Опубликовано 4 ноября, 2016 Автор Поделиться Опубликовано 4 ноября, 2016 Про задержки я и сам не вспомнил(( Подзапутался я .... 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.