Что же касается "КЭП", то напрасно. Формулировки должны быть однозначными, а не очевидными, ибо второе - субъективно.
Я бы вообще использовал "описание аппаратных регистров".
Сначала поставил именно его, но он не заработал.BOB51 писал(а): Чт июл 02, 2026 19:24:56 Собственно начали с ардуино под GCC, но перешли на другой компилятор...
Ничего особо крамольного, кроме проблем максимальной совместимости.
И это при наличии совместимых вариантов АВР студио (с симуляторами в комплекте).
Да как же ты его перенесёшь? У тебя же код не переносимый! Только ручками всё править.(
Нормальная среда разработки - лучший помощник. Сейчас 2026 год. Есть куча невероятно удобных плюшек для разработчика, зачем от них отказываться? Даже если это всего лишь проект уровня "хелоуворлд". К тому же, это и навык пользоваться инструментарием.Massaraksh7 писал(а): Чт июл 02, 2026 20:14:22 Я никаких суперсложных проектов на AVR не делал, и, пока, не планирую. Поэтому, мне и Notepadа достаточно. А лучше даже Far.
Что значит "займемся позже"? Так не делают, и не только в ООП.roman.com писал(а): Чт июл 02, 2026 18:30:01 у нас тут не ООП.
описанием обьектов займемся позже...
PORT = 0b00000001; // первый включить, второй выключить.
PORT = 0b00000010; // первый выключить, второй включить.
Хотите прикол? На С++ для описания регистров периферии лучше всего работают статические методы класса, без каких-либо объектов. Поскольку объект - это переменная, а она занимает место в памяти.
Код: Выделить всё
PORT = 0b00000001; // первый включить, второй выключить.
PORT = 0b00000010; // первый выключить, второй включить.Попробовать закоротить за землю вход на первом каскаде (перемычку вместо фотодиода) и посмотреть вольтметром напряжения по постоянке (без сигнала).На коллекторах транзисторов должно быть около 1,2-1,3 В при указанных номиналах. Проверить, не ошиблись ли в пайке транзисторов, может выводы перепутали. Затем попробовать пропорционально уменьшить номиналы резисторов - 1 кОм, 30 кОм. В этой схеме нет смысла экономить ток потребления до микроамперных величин. А чем меньше ток в сигнальных цепях, тем легче помехам помешать.
И это досадно. Избегая макросов, пробовал описать регистр микроконтроллера, как переменную, размещённую по определённому адресу, чтобы управлять битовыми полями с зависимостью от режима периферии. Посмотрел ассемблерный листинг - а там... У IAR для STM8 подобный стиль описания и я наивно полагал, что так будет везде.Rapra писал(а): Пт июл 03, 2026 05:25:26 Поскольку объект - это переменная, а она занимает место в памяти.
Все схемы требуют такого внимания. Например, здесь я бы не стал общий конденсаторов кварца подсоединять к грязной земле. И убрал бы разъём - есть макет для отладки. Или хотя бы поменял местами MISO и RST - исчезли б две "антенны". Использование ОУ и микроконтроллера в SMD-корпусе уменьшило бы размер платы примерно в 4 раза (ОУ с другой стороны МК). Хотя, конечно же, это уже вопрос имеющихся компонентов.BOB51 писал(а): Пт июл 03, 2026 10:47:09 требуют особого внимания и к топологии монтажа (печатных плат).
Меня смутило, что они (правда, здесь речь об CH32V, а не об Ардуино, не смотрел как в ней) описаны через #define. Мне хотелось тотально избежать риска переопределения, притом допускать это для пользовательского кода и не плодить предупреждений при компиляции.Rapra писал(а): Пт июл 03, 2026 11:46:24 Нет, не нужно описывать регистр микроконтроллера в плюсовом варианте. Они уже описаны в сишном варианте в заголовочнике и пусть так и остаются.