Pull to refresh

Comments 22

поскольку задача формирования в интегральном исполнении точного конденсатора, да и точного резистора, весьма нетривиальна

Она не «нетривиальна», она принципиально не решаема без внешней подстройки. Точно можно делать только согласованные пары, а именно номинал точно задать нереально, и чем тоньше техпроцесс, тем хуже.
Собственно, вся современная (да и несовременная) аналоговая схемотехника строится на том, чтобы от номиналов компонентов ничего не зависело, только от их соотношений между собой.
Либо, там, где точное значение все-таки важно (например, в источниках опорного напряжения или генераторах частоты), используется внешняя подстройка конкретного экземляра. Раньше лазером подпиливали резисторы, сейчас все больше подстроечную однократно программируемую память используют.
Шел 2018 год, а люди все еще программировали AVR на ассемблере.
И в 2028 будут писать на ассемблере и на AVR, и на x86.
Можете скринить.

Вы находите в этом нечто противоестественное?

Как вам сказать… Если это у человека хобби такое, и ему просто нравится этим заниматься, то на здоровье. Если к этому принуждают некие обстоятельства непреодолимой силы — политика компании, легаси, пистолет у виска, то тут тоже все понятно.

Но если AVR (и особенно ассемблер) тащат в продакшен просто по привычке, то таки да, нахожу. Я уже достаточно страдал из-за людей, которые пишут километровые ассемблерные программы без единого комментария и потом сами в них ничего найти не могут; используют процы без отладочного разъема, которые каждый раз выпаивать нужно, чтобы прошить; добровольно используют архитектуры, для которых есть только компилятор С89, да еще не полностью поддерживающий стандарт и тому подобное.

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

Как-то так.
UFO just landed and posted this here

Темплейты вообще огонь. Делал абстракцию для типобезопасного доступа к регистрами I2C, по сути формальное описание, к какому устройству относится, какие биты для доступа, что в них лежит и как интерпретировать, дать по рукам на этапе компиляции, если пытаешься писать не то, что ожидается и так далее. В рантайме от этого вообще ничего не осталось, только финальный доступ к функциям вида i2c_read(dev, buf, len)/i2c_write(dev,buf,len).

При сборке с оптимизацией да, лишнего ничего нет, но вот пошаговая отладка иногда превращается в страдание. Лично я старался писать так, чтоб проект компилировать можно было под разные платформы, в том числе под винду, на которой всё самое сложное и отлаживал.

обычный " -O2", я как-то наловчился с JTAG на этом отлаживаться. У меня работа с USB, реализация UVC и UAC классов устройства, боюсь писать проект, который бы запускался на Linux и/или Windows, это +ровно столько же времени, сколько делали продукт, а то и больше.

В AVR GCC регистр r1==0, он выставляется в стартовом коде, а когда он используется, например, для умножения, то после немедленно обнуляется. Сейчас не помню, возможно, оно вместе оформляется как атомарная операция.
Во время бурной молодости нужно было быстро сделать прибор для подачи команд световым приборам по DMX. Из приборов и материалов был PIC16F628 в дипе, 75176, горка конденсаторов и оторванная откуда-то клавиатура матричная ну и шайба вторая (ICD2).
Кварцевого резонатора не было и ехать за деталями не хотелось.
В итоге получилось передать битрейт 250k при скорости работы микроконтроллера 1 MIPS, правда, лапку, на которую выводится TX, пришлось выбирать либо 0, либо 7 бит любого порта, но уж это мне было не особо критично.

Всего на прибор затратил два часа своего времени (вместе с пайкой макетки). Если бы поехал за деталями, прокатал бы больше.

А меня вот зацепило использование слова ИРПС. ИРПС — это интерфейс токовая петля. И называть так UART, мне кажется, не правильно…

Это лайфхак такой, позволяющий сократить количество переключений раскладки клавиатуры.

Это была шутка. Разумеется, Вы правы.
Угу. Так же, как и приравнивать UART к RS-232C (стык С2).
UART на выводах микроконтроллеров — это другой физический уровень.

А ИРПС был описан вообще в ОСТ 11 305.916-84. Только его теперь фиг найдёшь — остались одни упоминания. Там физический уровень да, токовая петля.

Но формат посылки у них общий (а также для RS-485, RS-422, ISO 9141/ISO-14230 и еще кучи), так что и временные параметры посылки тоже должны быть общими. Вопрос — куда запихали это описание. По-хорошему, на это должен быть отдельный стандарт.

Тот же ОСТ 11 305.916-84 волне мог содержать и описание посылки. Но мне думается, это должен быть ГОСТ.
Интерфейс Радиальный Последовательный — я вроде так помнил на ДВК, и ИРПР с ним, хотя могу и ошибаться.
Он самый. ИРПР — параллельный, соответственно.
Но на физ.уровне ИРПС — это таки токовая петля 20 мА, UART — однополярные уровни напряжения 0 и «питание», а RS-232 двуполярные (+ и -).

.
ну и собственно, не только в ДВК, но и вообще в PDP-клонах, например, в СМ ЭВМ — да много где. Поначалу даже в первых IBM PC токовая петля ставилась.
В выводах к первой части статьи Вы упустили самый главный, впрочем, и так хорошо известный: если нужен асинхронный последовательный интерфейс, то используйте тактовый генератор с кварцевой стабилизацией. Это, конечно, касается профессиональной разработки, автор любительской поделки сам вправе выбирать реализацию — ему же самому с ней и мучаться (а если повезет, то нет).

Для тех, кто хотел бы сделать аналогичную автоподстройку, но на STM32: у ST есть аппноут на тему. Некоторые семейства поддерживают аппаратную автоподстройку, для других есть кусок кода с картинками.

берем отечественную версию ГОСТ на стык С2 и не обнаруживаем там вообще никаких временных параметров, за исключением длительности фронта и среза импульса

А вы какой ГОСТ смотрели? Судя по всему — старый советский ГОСТ 23675-79 (про физический уровень), а не ГОСТ Р 50668-94 (про временные характеристики)?
В 50668 вполне есть «Требования к временным характеристикам сигналов данных передающего ООД»:
image
и есть «временные характеристики качества работы ООД, принимающего сигналы данных по цепи 104»
О, спасибо большое, я рано прекратил поиски (
Ну, со стандартами на последовательные интефейсы всё довольно развесисто.

Нашёлся еще ГОСТ 28854-90 — описывает ИРПС уровнем повыше, в требованиях к физ каналу есть как токовая петля, так и двуполярные напряжения (тот самый стык С2). Я был неправ, утверждая что «ИРПС = токовая петля». Временных характеристик тут тоже нет, кроме длительности фронтов.

«Стык С2» — это вообще такая всеохватная штука, включающая и аналоговые («линейные») сигналы и синхронизацию и вообще чёрта в ступе — см. ГОСТ 18145-81, даже тональные сигналы могут быть — ГОСТ 28142-89

У буржуев же вместо «RS-232» надо искать МККТТ ( ITU-T, CCITT) Х.24 (V.24), V.28, X.20bis/X.21bis и ISO IS2110, ISO 4903.
Википедия упоминает IEC 62056-21 / DIN 66258 — но что-то меня сомнения берут в этом случае.

Битовый стартстопный формат посылки отдельно от всего описывает ISO/IEC 1177:1985, только я не смог найти его полного текста в открытом доступе (с ISO вообще есть такая закавыка).
Sign up to leave a comment.

Articles