Устройство на Ardiuno для контроля пересечения барьера.

Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

Если не подключить описание периферии, то для него всё будет ошибка.
Что же касается "КЭП", то напрасно. Формулировки должны быть однозначными, а не очевидными, ибо второе - субъективно.
Я бы вообще использовал "описание аппаратных регистров".
Реклама
Друг Кота
Сообщения: 9343
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

у нас тут не ООП.
описанием обьектов займемся позже...

а теперь подключаемые второй светик.
PORT = 0b00000001; // первый включить, второй выключить.
PORT = 0b00000010; // первый выключить, второй включить.
получилась мигалка )) в две строчки.
я же говорил будет весело ))

Напоминает Ассемблер ))

в cvavr есть подсказка. при создании проекта нажимаем вкладку. на вкладке все таймеры. выбираем режим работы таймера. нажимаем создать проект. далее cvavr сам сгенерирует код настройки таймеров.

хотя проще посмотреть в даташите.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15672
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Собственно начали с ардуино под GCC, но перешли на другой компилятор...
Ничего особо крамольного, кроме проблем максимальной совместимости.
И это при наличии совместимых вариантов АВР студио (с симуляторами в комплекте).
Но тут уж кому на чем удобнее работать. Главное работающий результат получить.
8)
Кыстати... из доступных IDE есть еще и code blocks 13.12 с добавкой под ардуино проекты.
:wink:
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 178
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

Сообщение Massaraksh7 »

BOB51 писал(а): Чт июл 02, 2026 19:24:56 Собственно начали с ардуино под GCC, но перешли на другой компилятор...
Ничего особо крамольного, кроме проблем максимальной совместимости.
И это при наличии совместимых вариантов АВР студио (с симуляторами в комплекте).
Сначала поставил именно его, но он не заработал.
Да и какая разница, на чём, по большому счёту.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 15672
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Из под IDE (АВР студио) работать проще.
8)
Реклама
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 178
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

Сообщение Massaraksh7 »

Я никаких суперсложных проектов на AVR не делал, и, пока, не планирую. Поэтому, мне и Notepadа достаточно. А лучше даже Far.
Самое сложное, что я делал (и, кстати, это было AvrStudio ровно 10 лет назад) - это был стенд тяги на тензодатчиках.
Реклама
Друг Кота
Сообщения: 9343
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

вот именно что пофигу ))
хватит уже IDE обсуждать.
пора код переносить.
OKF
Это не хвост, это антенна
Сообщения: 1430
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

roman.com писал(а): Чт июл 02, 2026 20:15:35 пора код переносить.
Да как же ты его перенесёшь? У тебя же код не переносимый! Только ручками всё править.(
"З дурною головою и рукам нема покою". Вспомнилось.)
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

Massaraksh7 писал(а): Чт июл 02, 2026 20:14:22 Я никаких суперсложных проектов на AVR не делал, и, пока, не планирую. Поэтому, мне и Notepadа достаточно. А лучше даже Far.
Нормальная среда разработки - лучший помощник. Сейчас 2026 год. Есть куча невероятно удобных плюшек для разработчика, зачем от них отказываться? Даже если это всего лишь проект уровня "хелоуворлд". К тому же, это и навык пользоваться инструментарием.
У меня тоже проекты простые, но и они ведутся с помощью git, так как система управления версиями - это очень удобно, как минимум бережёт время на проработку различных вариантов решений.
И, всегда ведь есть вероятность, что завтра проект будет сложный. И даже оплачиваемый.
roman.com писал(а): Чт июл 02, 2026 18:30:01 у нас тут не ООП.
описанием обьектов займемся позже...

PORT = 0b00000001; // первый включить, второй выключить.
PORT = 0b00000010; // первый выключить, второй включить.
Что значит "займемся позже"? Так не делают, и не только в ООП.
Нельзя у порта изменять значения тех битов, которые не принадлежат светодиодам. Иначе потом, когда они (чужие биты) будут задействованы, будете искать, где они обнуляются. Это будет сложно, особенно если блокнот и отладка не нужна (как убеждали ранее, хотя я так и не понял, почему).
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 178
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

Сообщение Massaraksh7 »

Запрограммировал МК. Первое, что проверил - ШИМ сигнал формируется, 20 кГц, меандр, всё верно.
А вот дальше пошла фигня - наводки на усилителе (без сигнала).
Вот сигнал на коллекторе транзистора 2 каскада усиления:
https://cloud.mail.ru/public/VjhZ/rgHkYPjVV
У второго то же самое.
Причём, на двух предыдущих собранных усилителях такого не было. Проверил пайку - всё нормально.
В чём разница:
Первый собранный усилитель имел 1к в коллекторах, 100к в базах, подключенных к питанию. 0.1мкф - разделительные конденсаторы металлокерамика. Работает до сих пор.
Второй собранный усилитель имел 10к в коллекторах, 300к в базах, подключенных к питанию. 0.1мкф - разделительные металлоплёночные конденсаторы. Проверял - работает, сбоев не было.
Данный усилитель имеет 10к в коллекторах, 300к в базах, подключенных к коллекторам. 0.01мкф - разделительные SMD конденсаторы.
Транзисторы везде BC547. Фотодиоды из той же партии.
P.S.: А, ну да - там стояла Arduino, здесь Atmega328, конденсатор 0.1мкф посажен прямо на выводы "земля-питание" МК.
Пробовал ещё такой же конденсатор на один канал усилителя повесить, так же "земля-питание" - ничего не изменилось.
Что ещё можно проверить?
Вымогатель припоя
Сообщения: 622
Зарегистрирован: Пн фев 16, 2026 17:30:02

Сообщение Rapra »

roman.com писал(а): Чт июл 02, 2026 18:30:01 у нас тут не ООП.
описанием обЪектов займемся позже...
Хотите прикол? На С++ для описания регистров периферии лучше всего работают статические методы класса, без каких-либо объектов. Поскольку объект - это переменная, а она занимает место в памяти.

И вот это:

Код: Выделить всё

PORT = 0b00000001; // первый включить, второй выключить.
PORT = 0b00000010; // первый выключить, второй включить.
конечно же тоже, Zapolyarny об этом сказал уже.
Вымогатель припоя
Сообщения: 622
Зарегистрирован: Пн фев 16, 2026 17:30:02

Сообщение Rapra »

Massaraksh7 писал(а): Пт июл 03, 2026 01:14:45 пошла фигня - наводки на усилителе (без сигнала).
Попробовать закоротить за землю вход на первом каскаде (перемычку вместо фотодиода) и посмотреть вольтметром напряжения по постоянке (без сигнала).На коллекторах транзисторов должно быть около 1,2-1,3 В при указанных номиналах. Проверить, не ошиблись ли в пайке транзисторов, может выводы перепутали. Затем попробовать пропорционально уменьшить номиналы резисторов - 1 кОм, 30 кОм. В этой схеме нет смысла экономить ток потребления до микроамперных величин. А чем меньше ток в сигнальных цепях, тем легче помехам помешать.
В базе первого транзистора можно увеличить номинал резистора до 50-62 кОм, чтобы подзакрыть его и вывести рабочую точку поближе к середине.
u37
Это не хвост, это антенна
Сообщения: 1332
Зарегистрирован: Пн май 01, 2017 20:01:45

Сообщение u37 »

--
Последний раз редактировалось u37 Пт июл 03, 2026 11:04:47, всего редактировалось 1 раз.
Друг Кота
Аватара пользователя
Сообщения: 15672
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Комбинированные схемы из смеси аналоговых и цифровых узлов требуют особого внимания и к топологии монтажа (печатных плат).
Так что не слишком удивляйтесь "неожиданностям" когда одно и то же с земное решение на макете работает, а при переносе на самодельную плату внезапно "барахлит".
8)
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

Rapra писал(а): Пт июл 03, 2026 05:25:26 Поскольку объект - это переменная, а она занимает место в памяти.
И это досадно. Избегая макросов, пробовал описать регистр микроконтроллера, как переменную, размещённую по определённому адресу, чтобы управлять битовыми полями с зависимостью от режима периферии. Посмотрел ассемблерный листинг - а там... У IAR для STM8 подобный стиль описания и я наивно полагал, что так будет везде.
Кстати, эта ситуация - ещё один плюс к тому, что начинающему полезно видеть всё происходящее. Тогда пропущенное или непонятое в учебнике имеет шанс объясниться на практике. И это, опять же, наиболее удобно видится в нормальной среде разработке, а не в "почти чёрном ящике" Arduino или блокноте.
BOB51 писал(а): Пт июл 03, 2026 10:47:09 требуют особого внимания и к топологии монтажа (печатных плат).
Все схемы требуют такого внимания. Например, здесь я бы не стал общий конденсаторов кварца подсоединять к грязной земле. И убрал бы разъём - есть макет для отладки. Или хотя бы поменял местами MISO и RST - исчезли б две "антенны". Использование ОУ и микроконтроллера в SMD-корпусе уменьшило бы размер платы примерно в 4 раза (ОУ с другой стороны МК). Хотя, конечно же, это уже вопрос имеющихся компонентов.
Вымогатель припоя
Сообщения: 622
Зарегистрирован: Пн фев 16, 2026 17:30:02

Сообщение Rapra »

Нет, не нужно описывать регистр микроконтроллера в плюсовом варианте. Они уже описаны в сишном варианте в заголовочнике и пусть так и остаются. Задача - создать плюсовые обертки для действий с регистрами и битами. Например, для GPIOA->BSRR пишем template<unit16_t Mask> SetPins() { gpio->BSRR = Mask; } и так далее.
Для какого-нить SPI тоже шаблонный класс template<int N> Spi; a внутри статические методы static void Enable(); static void Write(uint16_t data); и так далее. Вложенная в него структура
struct Flags { static bool IsBuzy() ; и так далее

Блин, с мобилы конечно неудобно писать, рекламные окошки лезут капец просто
Вымогатель припоя
Сообщения: 622
Зарегистрирован: Пн фев 16, 2026 17:30:02

Сообщение Rapra »

У топикстартера разводка платы конечно ахтунг, и по-моему, насколько с мобилы могу увидеть, она не совпадает со схемой.
Ну и надо на аналоговую часть ставить конденсаторы на 0.1-0.47 мкФ. И хорошо бы к транзисторам отдельные дорожки питания и земли, чтобы не после микроконтроллера.

Выводы под управление нагрузкой и на генератор должны иметь парные им проводники земли, это правило хорошего тона - возвратные токи должны протекать по этим парным проводникам, а не через общую землю где-то там черт знает где.
Ну, это как бы мелочи, но в сумме все они и оказывают влияние
Друг Кота
Сообщения: 9343
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

Все нормальные люди первым делом ставят фильтры по питанию.
Если быть точным то нормальные люди вообще не делают усилители без фильтров по питанию )) Поэтому у нормальных людей обычно таких проблем не возникает.
Вложения
cxema.png
(71.81 КБ) 7 скачиваний
Вымогатель припоя
Сообщения: 622
Зарегистрирован: Пн фев 16, 2026 17:30:02

Сообщение Rapra »

Ну 10 мкФ - на каждый канал - эт канешна "отдуши". Можно и в 10-50 раз меньше при таких токах
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

Rapra писал(а): Пт июл 03, 2026 11:46:24 Нет, не нужно описывать регистр микроконтроллера в плюсовом варианте. Они уже описаны в сишном варианте в заголовочнике и пусть так и остаются.
Меня смутило, что они (правда, здесь речь об CH32V, а не об Ардуино, не смотрел как в ней) описаны через #define. Мне хотелось тотально избежать риска переопределения, притом допускать это для пользовательского кода и не плодить предупреждений при компиляции.
Ответить

Вернуться в «Arduino»