All streams
Search
Write a publication
Pull to refresh
131
0
Автушенко Игорь @GarryC

Разработчик аппаратуры и программист ее

Send message

К вопросу о буферах (кольцевых)

Reading time23 min
Views14K

«Если затраты на разработку архитектуры кажутся Вам чрезмерными, подумайте, во сколько Вам может обойтись неправильная архитектура»


— не могу точно вспомнить источник

Когда то, «давным-давно, в одной далекой галактике», я приобрел замечательную книгу Чарльза Уэзерелла «Этюды для программистов», в предисловии к которой автор обосновывал необходимость изучения учебных примеров и задач перед тем, как начать самостоятельное программирование. Настоятельно рекомендую данную книгу найти, предисловие прочитать (и не останавливаясь на этом, прочитать оставшуюся часть и решить приведенные в ней задачи), поскольку лучше автора обосновать необходимость подобной практики я не смогу. Даже если Вы последуете моей рекомендации, и получите множество знаний и практических навыков при чтении упомянутой книги, можно будет вернуться и дочитать данный пост, поскольку он посвящен несколько иным вопросам. А если Вы моим рекомендациям не последуете, то тем более следует войти под кат.
Читать дальше →

К вопросу о сдвигах, знаках и быстродействии МК

Reading time5 min
Views8.6K

«Найди всему причину и ты многое поймешь»


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

Итак, мы начинаем.
Читать дальше →

К вопросу об умножении, извлечении квадратного корня, импортозамещении и фирме Миландр

Reading time14 min
Views7.8K

«Энтропия, эргодический источник, многомерное пространство сообщений, биты, многосмысленность, процесс Маркова — все эти слова звучат весьма внушительно, в каком бы порядке их ни расположили. Если же расположить их в правильном порядке, они обретают определенное теоретическое содержание. И настоящий специалист порой может с их помощью найти решение повседневных практических задач.»

Джон ПИРС «Не вижу зла»


Данный пост насыщен рассуждениями о тонкой оптимизации выполнения математических операций на МК с ограниченными ресурсами, а также субъективными оценками различных аспектов разработки встроенного ПО.

Тех, кого данное предупреждение не испугало, прошу под кат.
Читать дальше →

К вопросу о параметрах драйвера в Linux, или как я провел выходные

Reading time16 min
Views6.1K

«Мы ленивы и нелюбопытны»




На сей раз поводом к посту послужила статья в неплохом журнале, посвященном ОС Linux (далее по тексту Л), в которой привлеченный «эксперт» хвалил драйвер подключения ЖКИ к плате Raspbery. Поскольку подобные вещи (подключение, не ОС) входят в сферу моих профессиональных интересов, статью просмотрел с вниманием, потом нашел собственно текст «драйвера» и был слегка удивлен, что ЭТО можно хвалить. Ну, в общем то, уровень эксперта можно определить хотя бы потому, что он упорно именовал программу драйвером, несмотря на то, что она им никоим образом не является. Казалось бы, и фиг с ним, мало ли кто что пишет для себя, но выкладывать подобное в открытый доступ — «я и не знал, что так можно».

Особенно порадовало то обстоятельство, что адрес устройства на шине I2C напрямую задавался в тексте программы и для его изменения требовалась ее перекомпиляция (хорошо, что не всего ядра). Я, кстати, заметил, что на форумах, посвященных Л, наиболее популярный ответ на любой вопрос о проблемах в ПО, «пересобери последнюю версию ядра». Мне данный подход представляется несколько странным, наверное, я чего-то не знаю. Но, тем не менее, возник вопрос, а как в Л действительно реализуется (внутри, не снаружи — там все просто и понятно) параметризация драйвера, ответу на который и посвящен данный пост.
Читать дальше →

К вопросу о делении и TI

Reading time14 min
Views5.3K

«Не выпендривайтесь, Мария Ивановна, и слушайте Вашу любимую песню „Валенки“



Несмотря на заголовок, порядок изложения будет обратный — сначала о фирме Texas Instruments (конечно не о самой фирме, я все-таки инженер, а не дрессировщик бизнес-аналитик, поэтому о производимой фирмой продукции), а уже потом о делении.
Читать дальше →

К вопросу о кривых Безье и быстродействии Ардуино, часть вторая

Reading time5 min
Views3.3K

Мы пойдем мимо — и дальше




В своем предыдущем посте я показал, как можно улучшить быстродействие расчета точек на кривой Безье (КБ) путем:

  1. Преобразования расчетных формул — ускорение в ~3 раза.
  2. Перехода от чисел ПТ к ФТ — ускорения почти нет, но позволяет провести 3.
  3. Заменой операции деления умножением и сдвигом — ускорение еще на 40%.

Печальное отступление
— я допустил неточность в последней формуле можно было еще чуть ускорить вычисления, свернув еще одно константной выражение и, исключив умножение, вместо 502 получить 410 тактов на цикл вычисления. К сожалению, никто из читателей предыдущего поста мне на это не указал в комментариях… а я на это надеялся, значит, я не смог достаточно заинтересовать своих читателей, чтобы они правильно (то есть внимательно) читали мои опусы. Ладно, попробуем еще разок.

Для тех, кто готов читать правильно

К вопросу о кривых Безье, быстродействии Ардуино и одном интересном сайте, или как я провел выходные

Reading time8 min
Views5.4K

«Решить парадокс Грея с дельфинами может любой, а ты попробуй сделать это без дельфинов. »




Вообще то планировал я провести выходные несколько по иному, съездить на Copter Huck (не то, чтобы я был фанатом коптеров, просто посмотреть, что молодежь придумывает, потусоваться типа), но старшая сестра была категорически против. Я, конечно, настаивал (то есть пару раз хмыкнул и сказал" Ну может, все-таки… будет прикольно"), но она была неумолима, а когда супруга приняла ее сторону, шансов на поездку не осталось. Ну и ладно, «не очень то и хотелось», зато немного посидел над забавной задачкой из области программирования, которую сам себе придумал, о чем и докладываю.

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

В одном недавнем посте автор рассматривал задачу ускорения (кроме всего прочего) расчета кривых Безье (КБ) на МК со сравнительно слабыми параметрами. Ну на самом деле эти параметры на уровне среднего мейнфрейма 70х годов, но по нынешним временам считаются явно недостаточными. В результате определенных действий автору удалось несколько ускорить вычисления, на мой взгляд, явно недостаточно, вот и решил написать, как это следует делать в первом приближении. Я прекрасно знаю универсальный рецепт решения проблем с быстродействием — взять МК с частотой повыше или перейти на другое семейство, но я родом из тех времен, когда мы учились обходится тем, что есть, просто потому, что ничего другого не было, от слова совсем. По нынешним временам подход устаревший, но мне показалось, что будет не безынтересен и современным читателям Хабра.
Читать дальше →

К вопросу о быстродействии и измерении его в Ардуино

Reading time5 min
Views4.5K


Данная задачка возникла при исследовании быстродействия работы Ардуино при выполнении различных команд (об этом в отдельном посте). В процессе исследования возникли сомнения относительно постоянности времени работы отдельных команд при изменении значения операндов (как выяснилось позже, небезосновательные) и было принято решение попытаться оценить время исполнения отдельной команды. Для этого была написана небольшая программа (кто сказал скетч — выйти из класса), которая, на первый взгляд, подтвердила гипотезу. В выводе можно наблюдать значения 16 и 20, но иногда встречаются и 28 и даже 32мксек. Если умножить полученные данные на 16 (тактовую частоту МК), получим время исполнения в тактах МК (от 256 до 512). К сожалению, повторный прогон основного цикла программы (с теми же исходными данными), при сохранении общей картины, дает уже иное распределение времени исполнения, так что действительно имеющие место вариации времени не связаны с исходными данными. Исходная гипотеза опровергнута, но становится интересно, а с чем именно связан столь значительный разброс.
Читать дальше →

К вопросу о Пандах или очередной плач Ярославны

Reading time4 min
Views8.5K

Пока мы спим, Алени качаются




Заранее приношу свои извинения тем, кого КДПВ завлечет чересчур и соболезнования их близким. Сам-то я переболел этой болезнью в тяжелой форме и приобрел иммунитет навсегда (ну я так думаю...). А пост будет совсем не о WoW, а о стране, символом которой является персонаж, на картинке не представленный, но подразумевающийся.
Читать дальше →

К вопросу о невозможном. Ҷасть 3

Reading time6 min
Views13K

Нулевое правило инженера «Чудес на свете не бывает»



«А убийца — почтальон»


Продолжим записки Шерлока Омса, и, как всегда, рассмотрим случаи невозможного функционирования электронных устройств. Под катом будет сеанс черной магии с разоблачением.
Читать дальше →

К вопросу о пульсациях, интересных людях и индуктивностях

Reading time8 min
Views7.8K

Law 14 (Edison’s Law) ‘Better’ is the enemy of ‘good’




Недавно мой коллега, которого я неоднократно упоминаю в своих постах (как правило, в роли реинкарнации доктора Ватсона, основное предназначение которого заключается в придании большего блеска основному персонажу изложения, вот такие у меня злые шутки, Данил), решил освоить проектирование источников питания (для начала маломощных, а там видно будет). Поскольку дело происходит в 201х годах, транзисторы дешевые и маленькие (даже с драйверами), а индуктивности большие и дорогие (ну не такие большие, как раньше, но все таки не маленькие), выбирается понижающе-повышающая неинвертирующая (мостовая) схема с микроконтроллером в роли управляющего элемента. С этой схемой связан ряд интересных вопросов, на некоторые из которых дан ответ в Ann448 от ST (не на все и не полный, возможно, я о этом еще напишу), но речь сейчас немного о другом.
Читать дальше →

К вопросу о Вирте и цепочках

Reading time15 min
Views6.7K

Алгоритмы + структуры данных = программы — Вирт Н.


«Нам представилась замечательная возможность провести небольшое, но крайне поучительное тактическое занятие»


Несмотря на первый эпиграф к данному посту, я позволю себе не согласится с автором и постараюсь показать, что в ряде случаев правильный выбор структуры данных может оказаться более значимым, нежели правильный выбор алгоритмов. Для иллюстрации подобного крамольного тезиса рассмотрим несложную, но многообещающую задачу по исследованию игры «Цепочка».
Читать дальше →

К вопросу об AVR и мировых рекордах

Reading time15 min
Views6.2K

Делай хорошо, плохо само получится


Поводом к посту послужила недавняя (когда я начинал писать этот пост, она действительно была недавней, но что-то пост долго пролежал в папке Неоконченное) публикация на Хабре относительно аспектов реализации программного UART на МК фирмы AVR. Сами по себе поднятые вопросы небезынтересны, но даны на них столь странные ответы, что посчитал своим долгом внести необходимые разъяснения. Тема обозначена, те, кто захочет прочитать о «королях, капусте и башмаках», то есть требованиях стандартов, чтении (правильном) технической документации и рекордах в программировании на ассемблере для AVR, могут нажать на кнопочку ниже.
Читать дальше →

К вопросу о статистике (в разрезе SDR)

Reading time2 min
Views7.8K
Случайно (по ссылке в посте) набрел на ресурс типа Кикстартера, где обратил внимание на один проект:



Ни в коем случае не собираюсь рекламировать данный продукт, тем более, что кампания по сбору средств завершена и вполне успешно -1300 против ожидаемых 500 (тыс. $).

Проект достаточно специфический и меня для начала потрясла цифра покупателей — никогда не думал, что на Земле живет более 5 тысяч человек, которые настолько увлечены SDR, что готовы заплатить, причем не 15 $ за плату на RTL, а 300 $ за достаточно продвинутый комплект разработчика. Хотя, если посчитать, то продан 1 комплект на 1,415 миллиона жителей, так что таких людей и не слишком много.

А вот дальше посмотрел список покупателей, при помощи несложных вычислений получил интересные данные, которые и хотел бы представить вниманию уважаемой аудитории.
Читать дальше →

К вопросу о документации

Reading time3 min
Views2.5K
(Примечание переводчика ПП — я надеялся, что проблема только у нас, и если я не вижу каких то параметров в даташите, то либо я просто не умею их читать, либо это неправильные дата и где-то есть настоящие. Но раз об этом пишет Джек, который, я надеюсь, имеет доступ к самым правильным дата, значит, действительно Все Очень Плохо).

Должен ли поставщик гарантировать поставку компонентов, соответствующих описанию? И наоборот, как добиться соответствия описания реальному компоненту?
Читать дальше →

К вопросу о странностях и невозможном

Reading time6 min
Views6.3K
Инженеру не следует тратить время на высказывание «Этого не может быть», поскольку это уже случилось. Ему следует искать объективную причину происходящего.
К сожалению, не смог найти точной цитаты, так что Вы видите ее в моей интерпретации.

Продолжим рассказ о интересных дефектах в области электроники. Сегодня речь пойдет о «промышленной» сети в АТС (изображена на КДПВ) на основе интерфейса RS485.


Далее в рассказе будут активно использоваться аббревиатуры, но пугаться не надо, в скобках будут даваться их расшифровки, так что добро пожаловать под кат.
Читать дальше →

К вопросу о странностях и систематическом подходе

Reading time7 min
Views6.3K

Отбросьте всё невозможное, то, что останется, и будет ответом, каким бы невероятным он ни оказался.



Есть на одном зарубежном ресурсе по электронике раздел «Записки Шерлока Омса», где рассматриваются загадочные случаи из инженерной практики (не только по электронной части, но, как правило, по ней). Решил завести нечто подобное, вот очередная история инженерного расследования.
Читать дальше →

К вопросу о числах

Reading time8 min
Views6.7K

«Ну что, без драки? Волейбол — так волейбол!»
Ну что же, USB — так USB



Не в моих правилах баловать читателя КДПВ, но не мог удержаться.

Но начнем мы, как и было обещано, со службы времени в МК. Рассмотрим связанную с этой службой задачу — имеется набор чисел и среди них следует выделить те, которые не превосходят некоторое другое наперед заданное число. А переходя к времени, можно сказать, что нам нужно будет определить момент, когда наше текущее время (Т) станет на величину интервала (И) больше, чем начало отсчета интервала (С).

Как мы можем решить эту задачу, и причем тут Уроборос?
Читать дальше →

К вопросу о константах

Reading time16 min
Views7.8K

Есть ли в мире что либо более постоянное, чем временные переменные


Просматривая тематический форум, увидел традиционное «Не работает скетч, подскажите, в чем дело» — таких постов чуть меньше, чем все, но в заголовке фигурировала работа с SD карточкой, поэтому решил глянуть. Больше всего порадовала фраза, что «скорее всего, дело в карточке, но решил попросить посмотреть код, может, что интересного увидите» — не ручаюсь за точность цитаты, но смысл передал верно. Действительно, интересного там наблюдалось много, мой взгляд зацепился за выражение

unsigned long Interval = 2000; ....
while (micros() < StartInterval + Interval) {};

причем дальше эта переменная использовалась, как константа в запуске задержки. Оставим за скобками способ обращения с временем, сейчас речь не об этом.

Сначала я, действуя на автомате, написал, что следует применять #define, «да призадумалась, а сыр во рту держала». Может быть, я чего-то не знаю, и применение констант в таком формате может быть выгодно при определенных условиях? Вдумчивое чтение мануалов на разные микроконтроллеры (МК) привело к интересным находкам, которыми (вместе с ответом на мой вопрос) и собираюсь поделиться под катом.
Читать дальше →

К вопросу об ограничениях

Reading time22 min
Views8.2K
Ваше лже-счастье – динамический процесс. Он неудовлетворим в принципе. А мы в первую очередь говорим о подлинном, фундаментальном счастье. Его условия определяются одним-единственным словом.
– Каким же?
Он ждал – и дождался.
– Ограничение..

Тему данного поста подсказали мне молодые коллеги, пришедшие с вопросом относительно линейности схемы, которую мы и будем далее рассматривать. Когда я ответил на их вопрос и объяснил, что так и должно быть и нулевое правило инженера в очередной раз доказало свою непогрешимость и «Чудес на свете не бывает», на следующий вопрос, как сделать правильно, я внезапно затруднился с ответом. После определенных размышлений я пришел к выводам, которыми и собираюсь поделиться. Но давайте по порядку.

Темой исследования будет простой резистивный делитель напряжения, который в данном конкретном случае предназначен для изменения диапазона напряжений перед аналогово-цифровым преобразователем (масштабирования).

Так какие же проблемы могут быть связаны со столь простым устройством?
Читать дальше →

Information

Rating
Does not participate
Location
Зеленоград, Москва и Московская обл., Россия
Date of birth
Registered
Activity