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

Eddy_Em

Members
  • Постов

    151
  • Зарегистрирован

  • Посещение

Весь контент Eddy_Em

  1. Купить за полтинник компактный плеер и записать на него нужную мелодию. Или взять чуть подороже модуль, но с поддержкой SD-карточек...
  2. Самый дешёвый и простой вариант (у самого пара таких работает, но поскромнее: на 2 розетки) - на основе orange pi zero. Как оказалось, предлагаемые рынком розетки не умеют ssh! Т.е. их использовать можно лишь в изолированных сетевых сегментах. А так - порядок, и автоматизации легко поддается.
  3. Учитывая то, что USB type C может и 20В выдавать на питание, DC-DC в смартфоне сможет преобразовать их в нужные 4.2В при токе в 4А! Передать же по обычным китайским проводам 4А на пяти Вольтах просто невозможно!
  4. Это что - абдурина на STM32? Жесть, куда катится мир?.. P.S. Если что, частотомер (да еще и с замером скважности) делается на одном таймере в режиме ШИМ-захвата... А если надо только частоту считать но более точно, то таймер в счетном режиме.
  5. В отличие от других переменных, эта меняется внутри прерывания. Но т.к. явно функция-обработчик прерывания не вызывается, gcc считает, что переменная абсолютно всегда равна нулю. Вот и оптимизирует. Поэтому и нужно ее (и ТОЛЬКО ЕЕ) объявлять как volatile. Ах, да! Чего я все gcc, да gcc? Судя по описанным косякам, там не gcc, а какой-то кусок большого Г! Либо у кого-то руки откуда-то не оттуда растут...
  6. А что за компилятор? Gcc даже с -O3 не будет "оптимизировать" настолько, что используемую переменную выбросит. Ее значение в прерываниях не меняется, так что все должно быть ОК.
  7. Значит, где-то в коде проблемы. Потому что если переменная не меняется внутри прерывания, объявлять ее волатильной не нужно.
  8. без этого "набора букаф" будет невозможно собрать код с -Wall -Werror -Wextra, если внутри функции не используется данный аргумент. А еще есть инструкции, позволяющие из одного case'а в другой перетекать без ошибки компилятора. Обычно для этого пишут __attribute__ ((fallthrough)), но в не сильно старых gcc можно и просто в комментах написать // fallthrough или даже // FALLTHRU
  9. И возвращает 401 =D И да, проще уж было так: int start (__attribute__((__unused__)) int s){return 401;}
  10. Купил недавно на али цветную светодиодную панель 64×32 пикселя. Интересная штука. Правда, для работы с STM32 пришлось паять буферы (от 3.3В напрямую он полноценно работать мало того, что отказывался, так еще паразитно жрал питание с "синей пилюли"). Сделал на нем немного игрушек (видео): тетрис, змейку и начал было арканоид, но чуть подзабил пока... Ссылка на магазин: www.aliexpress.com/item/32250804891.html (P.S. действительно, убогий движок форума портит ссылки на али, так что нужно копировать их в виде текста, без тегов url).
  11. А нельзя ли ссылки выкладывать напрямую (я принципиально не хожу по ссылкам с "кэшбеком", думаю, многие так же поступают) и не на .ru, а на нормальный .com?
  12. Я и говорю о защитном диоде на двигателе! В мосфет никакой защитный диод не встроен! Там есть лишь слабенький паразитный диод, который иногда бывает нужно защитным диодом дублировать. Очень просто. Помпа нормально работала. Но да, из-за того, что мосфет открывался не полностью, он грелся немного. Поэтому я и снизил частоту до 31кГц. А если бы взял более подходящий мосфет, то можно было бы и 100кГц впендюрить.
  13. В даташите — не более 250нс. Откуда микросекунды взялись? Заряд 26нКл, через 510Ом будет течь ток 6.5мА, т.е. полностью зарядится он за 4мкс. В общем, все мимо! Очень даже защитный, без него мосфет пробьет нафиг (т.к. на 20-вольтный мосфет внезапно навалится больше 24В)!
  14. Схему по моей ссылке посмотри. Все работает.
  15. Не знаю (не смотрел), docx - очень подозрительный формат для изображений! Для помпы я устанавливал 30..100кГц. Ниже 40кГц не стоит: будет слышен свист. Транзистор взять любой, подходящий по параметрам. Для 20-ваттной помпы (12В) я использовал IRL3303 (но просто потому, что он был первым подходящим по параметрам, на который я в коробке наткнулся). Затвором управлял через резистор 510Ом, напрямую подсоединенный к ноге МК (STM32F030). ШИМ генерирую таймером, очень удобно: все "само собой" работает, а скорость вращения регулируется одним-единственным регистром, задающим заполнение ШИМ. https://github.com/eddyem/stm32samples/tree/master/F0-nolib/Chiller
  16. А при чем здесь шаговый двигатель? Что до управления обычным 12-вольтным двигателем постоянного тока, то достаточно недорогого мосфета, чтобы ШИМить управляющее напряжение. Только не забыть о защитных диодах. Сам китайской помпой в самопальном прототипе чиллера управлял таким образом...
  17. Можно еще проще сделать: анализировать именно свет, а не сигналы к светодиоду. Тогда и ШИМ не будет помехой. Берем три условные фильтра: B, V и R. Цепляем их на три фоторезистора. На выходе можно еще и интегрирующую цепочку добавить. А дальше — или микроконтроллер, который по сигналам с АЦП будет цвет определять, или дискретную логику на компараторах. Хотя, конечно, проще подключиться интеграторами/компараторами непосредственно к ногам светодиода. (дешевле и быстрей будет напрямую туда микроконтроллер какой-нибудь мелкий подключить, чем на рассыпухе пытаться эту логику реализовать)
  18. Конечно, суммарный. Скажем, STM32 однозначно загнется где-то на 100мА (по даташиту предельный суммарный ток на GPIO — 80мА)… Да и вообще, непонятно, зачем насиловать МК для управления светодиодным столбиком, если для этого есть недорогие контроллеры на компараторах… Эта задача нужна только в рамках "как бы занять студента". А студенту явно не хватает знаний, чтобы между ногами МК и светодиодами воткнуть обычный буфер (у буферов-то и 100мА на ногу подчас запросто). P.S. А если сделать динамическую индикацию, то достатчно задействовать 3 ноги МК: данные, такт и EN (LCK). Подключить к сдвиговому регистру, им и пинать светодиоды (у дешевых сдвиговых регистров мощей хватит, чтобы и 16 светодиодов одновременно включать). Если в МК нет DMA, то работать в прерываниях. Отправили посылку, зафиксировали EN, подождали; измерили напругу на АЦП, если изменилась — отпустили EN, отправили следующую посылку. И так далее...
  19. А что, эта аврка может аж 150мА выдавать по ногам GPIO? И не сгорит даже? Ничего себе… P.S. Жаль, что нет возможности найти преподавателя этого горе-студента и показать ему эту тему! P.P.S. И непонятно, зачем кнопку сажать на вход с прерыванием. Это же — не концевик, который нужно срочно обработать, иначе движок за сотню микросекунд может куда-нибудь не туда уехать.
  20. Занятный вопрос, я не понял, что он означает (почему это меня просят не подсказывать?). Вот так я работаю с экранчиком на MAX7219. Передача данных посредством DMA, если обновил буфер и нужно обновить экран в соответствии с этим, выставляю соответствующее значение конечного автомата. Если у вас буфер обновляется очень часто, можно в КА убрать состояние RELAX и как только отправлен последний байт из буфера экрана, переходить к началу.
  21. Ну вот: компетентный работник написал скрипт и пошел пиво пить. Некомпетентный склеил бы изолентой две мыши и продолжил бы дурью маяться, натыкивая мышкой…
  22. это сродни "изобретателям вечного двигателя": человек абсолютно не в теме и выдумал себе какое-то мракобесие. Я уверен, что если глубже копнуть, то окажется, что ему достаточно прикупить одноплатник за 1-1.5тыр и написать на баше скрипт, который curl'ом будет нужные данные по нужным сайтам рассылать. А ТС — то ли спамер, то ли читер, то ли еще какая зараза, как я понял.
×
×
  • Создать...