Страница 13 из 18

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

Добавлено: Чт июл 02, 2026 18:16:41
Zapolyarny
Если не подключить описание периферии, то для него всё будет ошибка.
Что же касается "КЭП", то напрасно. Формулировки должны быть однозначными, а не очевидными, ибо второе - субъективно.
Я бы вообще использовал "описание аппаратных регистров".

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

Добавлено: Чт июл 02, 2026 18:30:01
roman.com
у нас тут не ООП.
описанием обьектов займемся позже...

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

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

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

хотя проще посмотреть в даташите.

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

Добавлено: Чт июл 02, 2026 19:24:56
BOB51
Собственно начали с ардуино под GCC, но перешли на другой компилятор...
Ничего особо крамольного, кроме проблем максимальной совместимости.
И это при наличии совместимых вариантов АВР студио (с симуляторами в комплекте).
Но тут уж кому на чем удобнее работать. Главное работающий результат получить.
8)
Кыстати... из доступных IDE есть еще и code blocks 13.12 с добавкой под ардуино проекты.
:wink:

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

Добавлено: Чт июл 02, 2026 19:50:55
Massaraksh7
BOB51 писал(а): Чт июл 02, 2026 19:24:56 Собственно начали с ардуино под GCC, но перешли на другой компилятор...
Ничего особо крамольного, кроме проблем максимальной совместимости.
И это при наличии совместимых вариантов АВР студио (с симуляторами в комплекте).
Сначала поставил именно его, но он не заработал.
Да и какая разница, на чём, по большому счёту.

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

Добавлено: Чт июл 02, 2026 20:01:35
BOB51
Из под IDE (АВР студио) работать проще.
8)

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

Добавлено: Чт июл 02, 2026 20:14:22
Massaraksh7
Я никаких суперсложных проектов на AVR не делал, и, пока, не планирую. Поэтому, мне и Notepadа достаточно. А лучше даже Far.
Самое сложное, что я делал (и, кстати, это было AvrStudio ровно 10 лет назад) - это был стенд тяги на тензодатчиках.

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

Добавлено: Чт июл 02, 2026 20:15:35
roman.com
вот именно что пофигу ))
хватит уже IDE обсуждать.
пора код переносить.

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

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

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

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

PORT = 0b00000001; // первый включить, второй выключить.
PORT = 0b00000010; // первый выключить, второй включить.
Что значит "займемся позже"? Так не делают, и не только в ООП.
Нельзя у порта изменять значения тех битов, которые не принадлежат светодиодам. Иначе потом, когда они (чужие биты) будут задействованы, будете искать, где они обнуляются. Это будет сложно, особенно если блокнот и отладка не нужна (как убеждали ранее, хотя я так и не понял, почему).

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

Добавлено: Пт июл 03, 2026 01:14:45
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мкф посажен прямо на выводы "земля-питание" МК.
Пробовал ещё такой же конденсатор на один канал усилителя повесить, так же "земля-питание" - ничего не изменилось.
Что ещё можно проверить?

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

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

И вот это:

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

PORT = 0b00000001; // первый включить, второй выключить.
PORT = 0b00000010; // первый выключить, второй включить.
конечно же тоже, Zapolyarny об этом сказал уже.

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

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

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

Добавлено: Пт июл 03, 2026 09:46:48
u37
--

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

Добавлено: Пт июл 03, 2026 10:47:09
BOB51
Комбинированные схемы из смеси аналоговых и цифровых узлов требуют особого внимания и к топологии монтажа (печатных плат).
Так что не слишком удивляйтесь "неожиданностям" когда одно и то же с земное решение на макете работает, а при переносе на самодельную плату внезапно "барахлит".
8)

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

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

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

Добавлено: Пт июл 03, 2026 11:46:24
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() ; и так далее

Блин, с мобилы конечно неудобно писать, рекламные окошки лезут капец просто

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

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

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

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

Добавлено: Пт июл 03, 2026 12:03:46
roman.com
Все нормальные люди первым делом ставят фильтры по питанию.
Если быть точным то нормальные люди вообще не делают усилители без фильтров по питанию )) Поэтому у нормальных людей обычно таких проблем не возникает.

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

Добавлено: Пт июл 03, 2026 12:10:48
Rapra
Ну 10 мкФ - на каждый канал - эт канешна "отдуши". Можно и в 10-50 раз меньше при таких токах

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

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