my504 Опубликовано 6 ноября, 2017 Поделиться Опубликовано 6 ноября, 2017 14 часа назад, dim3740 сказал: странно, что в других проектах и так работало иногда, просто ставил задержку в цикл... А может это был глюк))) Глюк - это абстракция глупости допущенной в коде. Причем совершенно конкретной глупости. 0 戦う前に相手のベルトの色に注目 Ссылка на комментарий Поделиться на другие сайты Поделиться
dim3740 Опубликовано 6 ноября, 2017 Поделиться Опубликовано 6 ноября, 2017 Как сделать такое: опрашиваем кнопки в цикле. По нажатию кнопки А, начинает мигать светодиод и через N импульсов прекращается. Но мигание можно также "остановить" нажатием кнопки Б. Таймеры (2 штуки) можно задействовать. Задача, имхо, в том, чтоб опрос кнопок без артефактов сделать. (Контактов для прерывания по кнопкам нет, - только опрос). 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
ARV Опубликовано 6 ноября, 2017 Поделиться Опубликовано 6 ноября, 2017 Опрос кнопок без артифактов - это элементарно: опрашиваем пин кнопки, запоминаем уровень, делаем задержку 10-20 мс, затем снова опрашиваем пин и сравниваем его состояние с тем, которое было запомнено. Если оба состояния одинаковы, то это и есть истинное состояние кнопки нажата/не нажата, а если разные, то просто игнорируем это. Игнорирование заключается в том, что вам удобнее: либо считаем, что кнопка не нажата, либо что её состояние с прошлого раза не менялось. 0 Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют... Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
Alex Опубликовано 6 ноября, 2017 Поделиться Опубликовано 6 ноября, 2017 А в чём конкретно проблема ? В опросе кнопок ? Дак это - обычный опрос ПИНа, с подавлением антидребезга (если в лоб, то тупая задержка). Помигать светиком можно тоже через обычную задержку, а можно и таймер заюзать. По подробнее о проблеме ... А то на вопрос "Как сделать ?" можно ответить - "Ручками. Написав программу.". 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
солар Опубликовано 6 ноября, 2017 Поделиться Опубликовано 6 ноября, 2017 Для такой задачи и антидребезг излишне. 0 Я не раздаю удочки. Я продаю рыбу. Ссылка на комментарий Поделиться на другие сайты Поделиться
dim3740 Опубликовано 6 ноября, 2017 Поделиться Опубликовано 6 ноября, 2017 (изменено) Кнопки опрашиваются успешно. Дребезг не стоит в задаче. Но если светодиод мигает (допустим через _delay), то в этот момент времени цикл опроса кнопок прерывается. Горит он скажем 200 мс, и это артифакт на нажатие. Кнопку долго держать нельзя. Думаю, нужно как-то запускать таймер, программно считать его переполнения, но не соображу как.... Изменено 6 ноября, 2017 пользователем dim3740 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
ARV Опубликовано 6 ноября, 2017 Поделиться Опубликовано 6 ноября, 2017 Ну так бы сразу и сказали, что не знаете, как светодиодом по таймеру мигать. Все очень просто: настроили таймер на прерывания каждые 200 мс (или сколько там вам надо), и в обработчике прерывания меняете состояние пина, к которому подключен светодиод - вот вам и мигание. Оно будет происходить само и никакие задержки в главном цикле ему не помешают. 0 Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют... Ссылка на комментарий Поделиться на другие сайты Поделиться
dim3740 Опубликовано 6 ноября, 2017 Поделиться Опубликовано 6 ноября, 2017 Итак: по нажатию кнопки А разрешили прерывание таймера. Поставили уставку на 200 мс, поставили программный тригер, если нужно мигание со скважностью 2. Зашли на прерывание. Диод загорелся. Что дальше? Как посчитать число миганий /заходов в прерывание? Как выйти и снова зайти в прерывание? Нельзя ли чуть по-подробнее? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IMXO Опубликовано 6 ноября, 2017 Поделиться Опубликовано 6 ноября, 2017 1 час назад, dim3740 сказал: Как сделать такое: http://forum.cxem.net/index.php?/topic/183908-как-подружить-attiny-2313-и-биполярный-шаговый-двигатель/&do=findComment&comment=2690436 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
dim3740 Опубликовано 6 ноября, 2017 Поделиться Опубликовано 6 ноября, 2017 (изменено) @IMXO Именно так - 2 процесса. К сожалению в отличие задачи по Вашей ссылки мне нужно существенное время для 2-й задачи: это не просто включить двигатель, а зажигание и горение светодиода. Идеальный вариант - нажатие кнопок вывести в приоритет. Я бы так и делал аппаратно - через доп группу контактов на прерывание. Но .... нет лишней группы(((( Изменено 6 ноября, 2017 пользователем dim3740 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IMXO Опубликовано 6 ноября, 2017 Поделиться Опубликовано 6 ноября, 2017 а есть какая-то разница? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 6 ноября, 2017 Поделиться Опубликовано 6 ноября, 2017 47 минут назад, солар сказал: Для такой задачи и антидребезг излишне. Да для такой задачи и прерывания даже нафиг не нужны 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
dim3740 Опубликовано 6 ноября, 2017 Поделиться Опубликовано 6 ноября, 2017 6 минут назад, Alex сказал: Да для такой задачи и прерывания даже нафиг не нужны Смейтесь, смейтесь Все когда то новичками были))))) 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 6 ноября, 2017 Поделиться Опубликовано 6 ноября, 2017 Да никто и не смеётся, если что... По теме - распараллеливайте задачи. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IMXO Опубликовано 6 ноября, 2017 Поделиться Опубликовано 6 ноября, 2017 @dim3740 простой вопрос мигать светодиодом умеем? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
dim3740 Опубликовано 6 ноября, 2017 Поделиться Опубликовано 6 ноября, 2017 К чему такой вопрос? Порты настроены, скважность горения - без проблем, но все только или через _delay_ms, или через таймеры. Опрашивать кнопки (я упростил вопрос - потому что кнопки это энкодер) тоже без проблем. Задача - в 2- процессах, и меня не устраивают поддергивания цифр на индикаторе при быстром вращении ручки. Потому что в это время процессор занимается светодиодом. Вот и все.... 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
GOR23 Опубликовано 6 ноября, 2017 Поделиться Опубликовано 6 ноября, 2017 Читайте, там много чего полезного... 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
IMXO Опубликовано 6 ноября, 2017 Поделиться Опубликовано 6 ноября, 2017 2 минуты назад, dim3740 сказал: скважность горения - без проблем, но все только или через _delay_ms, вот и покажите код, как вы мигаете СД 0,2сек с периодом 1 сек 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Zhuk72 Опубликовано 7 ноября, 2017 Поделиться Опубликовано 7 ноября, 2017 Прерывание по таймеру сделайте на 10 мс. Заведите счетчик (переменную) для СД, которая будет считать от 20 до нуля. Достигнув нуля, СД переключается. В этом же прерывании опрашивайте кнопки скопом. Считали, если нажато, то сохранили. При следующем считывании сравниваете с предыдущим состоянии. Если текущее равно предыдущему, значит кнопка нажата. Ну и действуйте соответственно. Но тут надо учитывать, что кнопка может продолжительно удерживаться, поэтому решайте когда производить действие от кнопки: сразу или после отпускания. Выставляете флаг "мигать" СД, которое и проверяете в описанном выше счетчике. Вообще для начала помигайте СД в прерывании, а потом уже кнопкой занимайтесь. Обе задачи разом вас запутают. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
dasZebra Опубликовано 7 ноября, 2017 Поделиться Опубликовано 7 ноября, 2017 17 часов назад, dim3740 сказал: допустим через _delay забудьте эту [делай]. Её предназначение - использование в "загрузке", до запуска бесконечного цикла. И в прерывания ничего не "пхайте", только операцию присваивания. Все нужно делать в бесконечном цикле. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
dim3740 Опубликовано 7 ноября, 2017 Поделиться Опубликовано 7 ноября, 2017 Задача решена (вроде... тестю). Всем спасибо. При решении использованы: 1) В цикле – запуск таймера, а также включение СД в как «первичное», чтоб загорелся сразу, а не после первого прерывания. Последующее мигание обеспечено в обработке прерывания. 2) 8 разрядный таймер при 16 Мгц дает около 16 мс максимум. Сделан цикл в прерывании со счетчиком до 200/16. 3) Число импульсов мигания не считаю - упростил ТЗ. Выключение - по кнопке - запрету прерывания Таймера. Про «кнопки» - спасибо, но вопрос про них вообще не стоял. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
dim3740 Опубликовано 10 ноября, 2017 Поделиться Опубликовано 10 ноября, 2017 (изменено) На плате есть МК. Также есть аналоговая часть с выходом на наушники. Борюсь с фоном((( Да, БП конечно, единый. Разводка не снимает проблему, пробовал вынести на макетку ... Фон меняется, но остается. Это не наводки, точно, т.к. гц эдак 400.... На 90 % уверен, что его дает работа МК. Вопрос: Как программно имитировать выключение МК? Мне это нужно только для проверки влияния на фон. Выпаивать МК не хочу. Могу просто закоментить все в IDE, но ведь цикл в main все равно придется оставить. Спящие режимы? Не сталкивался.... Может есть как сделать это проще - ведь это временно только нужно.... Изменено 10 ноября, 2017 пользователем dim3740 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
ARV Опубликовано 10 ноября, 2017 Поделиться Опубликовано 10 ноября, 2017 2 часа назад, dim3740 сказал: Как программно имитировать выключение МК? Спящий режим, или даже Power Down. 2 часа назад, dim3740 сказал: Спящие режимы? Не сталкивался. Как раз повод познакомиться 2 часа назад, dim3740 сказал: Может есть как сделать это проще - ведь это временно только нужно Кнопка на вход сброса - нажали и МК остановился. 0 Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют... Ссылка на комментарий Поделиться на другие сайты Поделиться
dim3740 Опубликовано 11 ноября, 2017 Поделиться Опубликовано 11 ноября, 2017 (изменено) @ARV спасибо! Так я быстро научусь))) Сделал "фиксированный" ресет, а потом научился просто очищать память МК, без прошивки. Да , фон исчез.... Надо как-то теперь экранировать или трассировку менять((( Изменено 11 ноября, 2017 пользователем dim3740 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
ruhi Опубликовано 13 ноября, 2017 Поделиться Опубликовано 13 ноября, 2017 В 11.11.2017 в 06:05, dim3740 сказал: @ARV спасибо! Так я быстро научусь))) Сделал "фиксированный" ресет, а потом научился просто очищать память МК, без прошивки. Да , фон исчез.... Надо как-то теперь экранировать или трассировку менять((( Дык 400Гц - это скорее всего с каких то определенных ног идет! Если без сброса, пустой мэйн, например, тоже фонит??? Если нет, то дальше надо ноги по очереди отключать (или подключать) и смотреть когда фон появится. И, соответственно, трассировку для конкретных ног только нужно будет менять. 0 Можно сделать все! Но чем больше можно, тем больше нельзя! Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.