Как стать автором
Обновить
158
-5.9
Тимофей Захаров @zatim

Инженер

Отправить сообщение

Как я пишу на C по состоянию на конец 2023 года

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров27K
Этот год выдался переломным для моих навыков по программированию на C. Можно сказать, что я пережил слом парадигмы, что побудило меня пересмотреть привычки и весь стиль программирования. Это была крупнейшая метаморфоза моего личного профессионального стиля за долгие годы, так что я решил написать этот пост в качестве «мгновенного снимка» моих нынешних суждений и профессионального существования. Эти перемены во многом пошли на пользу моей продуктивности и организованности, поэтому, при всей субъективности того, что я скажу, в посте наверняка будут описаны и вполне объективные вещи. Я не утверждаю, что на С нужно писать именно так, как рассказано ниже, а я сам, выступая контрибьютором некоторого проекта, придерживаюсь того стиля, который там заведен. Но описанные ниже приёмы, как оказалось, очень пригодились мне при работе.
Читать дальше →
Всего голосов 49: ↑37 и ↓12+25
Комментарии91

Простой последовательный интерфейс «SINT» для связи двух ПЛИС, и не только

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров4.1K

Интереса ради сделал максимально простенький комплект модулей: приемники, передатчики и те и другие с разным набором плюшек, реализующих простой самобытный протокол связи с манчестерским кодированием для связи 2х и более ПЛИС.

Читать далее
Всего голосов 18: ↑18 и ↓0+18
Комментарии18

Фантомный double в прошивках для ядер Cortex-M*

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров12K

В последнее время появилось много микроконтроллеров на ядрах ARM Cortex-M*, которые поддерживают аппаратную реализацию математики плавающей запятой (FPU). В основном FPU работают с одиночной точностью (float) и её вполне достаточно для работы с сигналами, полученными с АЦП. FPU позволяет забыть о проблемах дискретизации и проблемах переполнения целочисленных вычислений. FPU быстр - все математические операции с одиночными float, кроме деления и взятия корня, занимают на Cortex-M4F один такт. Поэтому после перехода на Cortex-M4F мы вздохнули свободно и стали писать математику на float. Как же мы удивились, найдя в скомпилированном коде математические операции над double с программной, очень медленной эмуляцией.

В статье рассказывается, как обнаружить и исправить присутствие double в прошивках, где ядро аппаратно поддерживает тип float, но не поддерживает double.

Работа ведётся в среде IAR Embedded Workbench на примере реального кода на языке Си.

Читать далее
Всего голосов 86: ↑84 и ↓2+82
Комментарии25

Простой испытатель ферритов

Время на прочтение7 мин
Количество просмотров17K

Реалии нашей жизни поменялись. Если раньше мы шли в магазин и покупали нужное ферритовое кольцо для трансформатора, то теперь порой приходится довольствоваться тем, что удалось найти. В ящике стола, в лампочке-экономке из ближайшей мусорки, у китайцев на Алиэкспрессе... Зачастую без маркировки, тип которого известен лишь приблизительно. И вопросы, вопросы... Действительно ли из Китая выслали то, что просили? Подойдет ли для двухтактного трансформатора это зеленое кольцо? А что будет, если намотать трансформатор на феррите с мю 10000? Каким выбрать число витков на вольт, когда формула из статьи в журнале "Радио" дает 0,4 витка на вольт, а популярная программа -- 1,2 витка?

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

Читать далее
Всего голосов 102: ↑102 и ↓0+102
Комментарии33

Переезд в Австралию 2021-2023

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров23K

Зимой 20/21 я осознал, что не хочу оставаться в России и начал подготовку к переезду. Сейчас весна 2023 и я уже полгода, как живу в Австралии.

Под катом история.

Вперёд
Всего голосов 33: ↑23 и ↓10+13
Комментарии22

Обзор языка программирования Rust

Время на прочтение10 мин
Количество просмотров103K
Rust — новый экспериментальный язык программирования, разрабатываемый Mozilla. Язык компилируемый и мультипарадигмальный, позиционируется как альтернатива С/С++, что уже само по себе интересно, так как даже претендентов на конкуренцию не так уж и много. Можно вспомнить D Вальтера Брайта или Go от Google.
В Rust поддерживаются функицональное, параллельное, процедурное и объектно-ориентированное программирование, т.е. почти весь спектр реально используемых в прикладном программировании парадигм.

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

Читать дальше →
Всего голосов 74: ↑73 и ↓1+72
Комментарии73

Разработка источника питания со входным напряжением 1000В на основе карбид-кремниевых транзисторов

Время на прочтение5 мин
Количество просмотров11K

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



Рассказываю про эту разработку.

Читать дальше →
Всего голосов 43: ↑43 и ↓0+43
Комментарии41

Открытый проект частотного преобразователя для управления электродвигателями

Время на прочтение10 мин
Количество просмотров41K

Дефицит компонентов отразился не только на рынке потребительской электроники, но и на промышленной. Стали дефицитом в том числе и частотные преобразователи (ЧП). Может стоит сделать свой ЧП? Мы пробовали.

Вот что получилось
Всего голосов 80: ↑79 и ↓1+78
Комментарии80

Домофон — ухо шпиона?

Время на прочтение4 мин
Количество просмотров41K
Еще во времена аналоговых телефонных дисковых аппаратов ходили слухи о прослушивания линии, даже о возможности слушать обстановку без поднятия трубки и разговора по ней. С появлением кнопочных телефонов проблема вроде бы ушла, к тому же в связи с принципами коммутации сигналов на витой паре это было проблематично.

В статье описана версия, — что если, сегодня эта возможность перекочевала в домофонные сети, более того, используется для негласного вмешательства в частную жизнь?

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

Сперва немного теории о видах домофона


По принципу функционирования домофоны бывают аналоговые и цифровые.
По назначению делятся на индивидуальные и многоабонентские (многоквартирные), которые, как правило, устанавливают в подъездах многоквартирных домов, обеспечивая связь между посетителями и владельцами квартир.

Многоквартирный домофон работает по схеме мини АТС (аналоговой или цифровой).
Аналоговые (координатная система адресации) работают по принципу обычной телефонной связи с помощью аналогового коммутатора (мини АТС) и специального многожильного шлейфа, соединяющего коммутатор с квартирами, они более распространены и менее затратны.
Читать дальше →
Всего голосов 69: ↑57 и ↓12+45
Комментарии90

Как начать делать блок управления автодвигателем с нуля

Время на прочтение3 мин
Количество просмотров79K
Примерно год назад я начал разрабатывать блок управления автомобильным двигателем с нуля.
Позвольте рассказать, почему эта идея до сих пор кажется мне реалистичной.
Читать дальше →
Всего голосов 75: ↑71 и ↓4+67
Комментарии134

rusEfi: opensource проект DIY инжектора

Время на прочтение5 мин
Количество просмотров48K
Я бы хотел продолжить тему блока впрыска топлива на базе stm32 и рассказать о текущем статусе проекта rusEfi.



Читать дальше →
Всего голосов 61: ↑61 и ↓0+61
Комментарии62

rusEfi автомобильный блок управления: улучшили железо, теперь будем писать к нему софт

Время на прочтение3 мин
Количество просмотров31K
Два месяца назад мы остановились на том, что rusEfi стал полнофункциональным блоком управления — вот только аппаратная часть напоминала взрыв на макаронной фабрике. Напомню, rusEfi — это автомобильный блок управления с открытым кодом и железом на платформе stm32.

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

Было no name v3:

image

Стало Франкенштейт 0.1:

image
Читать дальше →
Всего голосов 55: ↑50 и ↓5+45
Комментарии52

Информация

В рейтинге
Не участвует
Откуда
Нижний Новгород, Нижегородская обл., Россия
Зарегистрирован
Активность