Перейти к содержанию

Язык СИ для микроконтроллеров


Рекомендуемые сообщения

14 часа назад, dim3740 сказал:

странно, что в других проектах и так работало иногда, просто ставил задержку в цикл...  А может это  был глюк))) 

Глюк - это абстракция глупости допущенной в коде. Причем совершенно конкретной глупости.

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

Как сделать такое: опрашиваем кнопки в цикле. По нажатию кнопки А, начинает мигать светодиод и через N импульсов прекращается. Но мигание  можно также "остановить" нажатием кнопки Б.   Таймеры (2 штуки) можно задействовать.

Задача, имхо, в том, чтоб опрос кнопок без артефактов сделать. (Контактов для прерывания по кнопкам нет, - только опрос). 

Ссылка на комментарий
Поделиться на другие сайты

Опрос кнопок без артифактов - это элементарно: опрашиваем пин кнопки, запоминаем уровень, делаем задержку 10-20 мс, затем снова опрашиваем пин и сравниваем его состояние с тем, которое было запомнено. Если оба состояния одинаковы, то это и есть истинное состояние кнопки нажата/не нажата, а если разные, то просто игнорируем это. Игнорирование заключается в том, что вам удобнее: либо считаем, что кнопка не нажата, либо что её состояние с прошлого раза не менялось.

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

А в чём конкретно проблема ? В опросе кнопок ? Дак это - обычный опрос ПИНа, с подавлением антидребезга (если в лоб, то тупая задержка).
Помигать светиком можно тоже через обычную задержку, а можно и таймер заюзать.

По подробнее о проблеме ... А то на вопрос "Как сделать ?" можно ответить - "Ручками. Написав программу.".

Ссылка на комментарий
Поделиться на другие сайты

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

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

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Кнопки опрашиваются успешно. Дребезг не стоит в задаче. Но если светодиод мигает (допустим через _delay), то в этот момент времени цикл опроса кнопок прерывается. Горит он скажем 200 мс, и это артифакт на нажатие. Кнопку долго держать нельзя. Думаю, нужно как-то запускать таймер, программно считать его переполнения, но не соображу как.... 

Изменено пользователем dim3740
Ссылка на комментарий
Поделиться на другие сайты

Ну так бы сразу и сказали, что не знаете, как светодиодом по таймеру мигать. Все очень просто: настроили таймер на прерывания каждые 200 мс (или сколько там вам надо), и в обработчике прерывания меняете состояние пина, к которому подключен светодиод - вот вам и мигание. Оно будет происходить само и никакие задержки в главном цикле ему не помешают.

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Ссылка на комментарий
Поделиться на другие сайты

Итак: по нажатию кнопки А разрешили прерывание таймера. Поставили уставку на 200 мс, поставили программный тригер, если нужно мигание со скважностью 2. Зашли на прерывание. Диод загорелся. Что дальше? Как посчитать число миганий /заходов в прерывание? Как выйти и снова зайти в прерывание? Нельзя ли чуть по-подробнее?

Ссылка на комментарий
Поделиться на другие сайты

Ссылка на комментарий
Поделиться на другие сайты

@IMXO  Именно так - 2 процесса. К сожалению в отличие задачи по Вашей ссылки мне нужно существенное время для 2-й задачи: это не просто включить двигатель, а зажигание и горение светодиода. 

Идеальный вариант - нажатие кнопок вывести в приоритет. Я бы так и делал аппаратно - через доп группу контактов на прерывание. Но .... нет лишней группы((((

Изменено пользователем dim3740
Ссылка на комментарий
Поделиться на другие сайты

К чему такой вопрос? Порты настроены, скважность горения - без проблем, но все только или через _delay_ms, или через таймеры. Опрашивать кнопки (я упростил вопрос - потому что кнопки это энкодер) тоже без проблем.  Задача - в 2- процессах, и меня не устраивают поддергивания цифр на индикаторе при быстром вращении ручки. Потому что в это время процессор занимается светодиодом. Вот и все.... 

Ссылка на комментарий
Поделиться на другие сайты

2 минуты назад, dim3740 сказал:

скважность горения - без проблем, но все только или через _delay_ms,

вот и покажите код, как вы мигаете СД 0,2сек с периодом 1 сек

 

Ссылка на комментарий
Поделиться на другие сайты

Прерывание по таймеру сделайте на 10 мс. Заведите счетчик (переменную) для СД, которая будет считать от 20 до нуля. Достигнув нуля, СД переключается.

В этом же прерывании опрашивайте кнопки скопом. Считали, если нажато, то сохранили. При следующем считывании сравниваете с предыдущим состоянии. Если текущее равно предыдущему, значит кнопка нажата. Ну и действуйте соответственно. Но тут надо учитывать, что кнопка может продолжительно удерживаться, поэтому решайте когда производить действие от кнопки: сразу или после отпускания. Выставляете флаг "мигать" СД, которое и проверяете в описанном выше счетчике.

Вообще для начала помигайте СД в прерывании, а потом уже кнопкой занимайтесь. Обе задачи разом вас запутают.

Ссылка на комментарий
Поделиться на другие сайты

17 часов назад, dim3740 сказал:

допустим через _delay

забудьте эту [делай].

Её предназначение - использование в "загрузке", до запуска бесконечного цикла.

И в прерывания ничего не "пхайте", только операцию присваивания. 

Все нужно делать в бесконечном цикле.

 

Ссылка на комментарий
Поделиться на другие сайты

Задача решена (вроде... тестю). Всем спасибо.  При решении использованы: 1) В цикле – запуск таймера, а также включение СД в как «первичное», чтоб загорелся сразу, а не после первого прерывания.  Последующее мигание обеспечено в обработке прерывания. 2) 8 разрядный таймер при 16 Мгц дает около 16 мс максимум. Сделан цикл в прерывании со счетчиком до 200/16. 3) Число импульсов мигания не считаю - упростил ТЗ. Выключение -  по кнопке  - запрету прерывания Таймера. 
Про «кнопки» - спасибо, но вопрос про них вообще не стоял.  
 

Ссылка на комментарий
Поделиться на другие сайты

На плате есть МК. Также есть аналоговая часть с выходом на наушники. Борюсь с фоном((( Да, БП конечно, единый. Разводка не снимает проблему, пробовал вынести на макетку ... Фон меняется, но остается. Это не наводки, точно, т.к. гц эдак 400.... На 90 % уверен, что его дает работа МК. Вопрос: Как программно имитировать выключение МК? Мне это нужно только для проверки влияния на фон. Выпаивать МК не хочу. Могу просто закоментить все в IDE, но ведь цикл в main все равно придется оставить. Спящие режимы? Не сталкивался.... Может есть как сделать это проще - ведь это временно только нужно....  

Изменено пользователем dim3740
Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, dim3740 сказал:

Как программно имитировать выключение МК?

Спящий режим, или даже Power Down.

2 часа назад, dim3740 сказал:

Спящие режимы? Не сталкивался.

Как раз повод познакомиться

2 часа назад, dim3740 сказал:

Может есть как сделать это проще - ведь это временно только нужно

Кнопка на вход сброса - нажали и МК остановился.

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Ссылка на комментарий
Поделиться на другие сайты

@ARV спасибо! Так я быстро научусь))) Сделал "фиксированный" ресет, а потом научился просто очищать память МК, без прошивки. Да , фон исчез.... Надо как-то теперь экранировать или трассировку менять((( 

Изменено пользователем dim3740
Ссылка на комментарий
Поделиться на другие сайты

В 11.11.2017 в 06:05, dim3740 сказал:

@ARV спасибо! Так я быстро научусь))) Сделал "фиксированный" ресет, а потом научился просто очищать память МК, без прошивки. Да , фон исчез.... Надо как-то теперь экранировать или трассировку менять((( 

Дык 400Гц - это скорее всего с каких то определенных ног идет! Если без сброса, пустой мэйн, например, тоже фонит??? Если нет, то дальше надо ноги по очереди отключать (или подключать) и смотреть когда фон появится. И, соответственно, трассировку для конкретных ног только нужно будет менять.

Можно сделать все! Но чем больше можно, тем больше нельзя!

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...