All posts by DI HALT

Маленькая хитрость

Я думаю многие сталкивались с тем, что подключаешь программатор к девайсу, а он из системы пропадает. И надо его перетыкать. Особенно если речь идет о каком-нибудь ST-Link или USBASP/AVRISP за копейки с Алиэкспресса. Схемотехника там говеная, чего уж там. Все по минимуму.

И если девайс начинает питаться от программатора, то при подключении конденсаторы вашего девайса просаживали напряжение так, что контроллер программатора вис или подглючивал. Тут либо подключаться к девайсу запитанному от своего источника питания, либо передергивать программатор. Что жутко бесит когда надо прошить партию устройств. Решение такое же простое как и причина:

Берем да вкорячиваем в разрез питания нашего кабеля конденсатор и дроссель. Кондер берем микрофарад так на 470, нехай подавится, скотина. А дроссель на максимальную индуктивность, какую не жалко и чтобы ток держал рабочий. Хотя бы миллиампер на 500. У меня это дроссель на 220мкГн и 1А. CW68-221K. Задача дросселя не дать броску тока заряда конденсатора при включении программатора в USB что-нибудь спалить. А при включении программатора в девайс этот же дроссель не позволит броску тока дать по рогам контроллеру программатора.

В идеале же еще добавить диод Шоттки в обратку дросселю, на случай если наша схема будет жрать из программатора большой ток (начиная от ампера и выше это уже становится ощутимым), чтобы катуха не накачивала конденсатор при отрыве программатора от девайса. Индуктивность же инерционная штука, ток через нее не может мгновенно начаться и мгновенно прекратиться. И при обрыве току течь будет некуда кроме как в уже заряженный конденсатор, поднимая в нем напряжение. Которое потом будет стравливаться через эту же катушку обратно в программатор. А так катушка замкнется сама на себя через диод Шоттки. Почему именно диод Шоттки? Да можно и простой, но у Шоттки самое низкое падение напряжения, раза в два ниже чем у обычного диода. Так что его эффективность тут будет выше.

Ну и парочку супрессоров на напряжение линии уж тогда до кучи. Вначале и в конце. Можно прям к разъему припаять.

Делов на пять минут, а польза неимоверная. Сделайте уже и не матюкайтесь :)

Да, про ST-Link… Знаете какая самая частая причина выгорания этого свистка?

КЗ контактов разъема на корпус. Стяните эту алюминиевую байду и увидите сами, что контакты тупо лежат на алюминии, отделясь от него тончайшим слоем анодирования. Стоит чуть пошевелить, нажать, как анодирование царапается и дальше выходит волшебный дым. А еще там ноги кварца могут торчать и коротить за это же анодирование. Решение такое же тупое как и косяк. Открыть, оторвать все выступающие части, что не оторвать обмотать изолентой и закрыть.

И еще один прикол с ним же. У него распиновка может отличаться от версии к версии. Причем даже в одной партии, купленной у одного и того же китайца. Это вообще веселое западло :) Я уже три разных версии распиновки видел. А разъем то тот же самый. Берешь и втыкаешь не глядя, а тут опа… Самая жопа когда оно вроде бы работает (на паразитном питании через порты, ага), но глючит адово и сидишь и не понимаешь, то ли ты олень, то ли лыжи не едут и вообще вчера все работало.

Read More »

Операционный усилитель. Примеры схем с описанием работы

Продолжение статьи «Операционный усилитель. На пальцах. Для самых маленьких»

Разберем еще пару схем, чтобы было понятно что и как. Как обычно, усилитель у нас идеальный.

▌Преобразователь напряжения в ток
Иногда надо получить источник тока. Это такой источник энергии который обеспечит протекание нужного тока через любое сопротивление. Вот есть у нас источник на 10мА и если мы его замкнем накоротко, то будет через точку КЗ течь ток в 10мА, а если мы оборвем его, то через обрыв … будет течь ток в 10мА, для этого источник тока загонит свое выходное напряжение до такого уровня, что заряды побегут через воздух, образовав пробой. Ну это в идеальном случае конечно. В реале источник тока при обрыве просто выставит свое максимально возможное напряжение.

Зачем нужно такое? Ну… по разным причинам. Светодиоды питать, например. Или есть линии связи на токовой петле. Когда у нас по проводу передается сигнал не напряжением, а током. Это очень удобно — от длины линии и роста ее сопротивления сигнал не меняется, всегда можно детектировать состояние линии — обрыв это нулевой ток, КЗ это ток выше лимита.

Я как то уже писал про токовую петлю 4-20мА. И вот там был пример применения ОУ для создания преобразователя напряжение-ток. Вот его схемотехника:

Принцип работы рассматриваем по той же методике. ОУ охвачен обратной связью. Считаем, что у нас виртуальное КЗ между его входами.

И можно смело вычислить ток I который будет, просто по закону Ома, равен как I = Uвх/R3. Но так как на самом деле никакого КЗ нет и, более того, во входы ОУ ничего не течет из-за его бесконечного сопротивления, то Ioс = 0. А раз Iос равна нулю, то ток I = Iout и жестко задается ТОЛЬКО входным напряжением и значением R3. Как бы не менялось побочное сопротивление линии R1 ток останется неизменным. Ну, конечно, при условии, что источник питания U может это обеспечить должным напряжением.
(далее…)

Read More »

Удобная работа с GPIO на STM32

Долгое время работая с STM32 все никак не мог определиться как же удобней мне обращаться с портами GPIO. Всякие SPL методы мне категорически не прикалывают, как то громоздко, хотя и читаемо. Опять же помнить как там параметры эти зовутся. Вручную порты тасовать можно, но опять же громоздко выходит. В дефайны оборачивать… тоже чет не то. Пока в одном из проектов не увидел годную реализацию, немного ее усовершенствовал и теперь с удовольствием использую.

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

В общем, суть такова:
(далее…)

Read More »

Набор для детей GeeGrow лаборатория гика. Базовый курс.

Недавно, общаясь с одним из поставщиков, с Димкой Снежинским, он упомянул, что дескать начали пилить свой собственный обучающий набор для детей на базе Arduino и уже давненько его продают. На мой вопрос, мол, чего мне не закинул на обзор, как бы сотрудничаем давно, я бы подтолкнул тему. Он как то засмущался, мол у меня тут злые дяди, придут обосрут, скажут arduino фу отстой. Не та аудитория.

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

▌GeeGrow. Базовый курс
Итак, что у них получилось. Вроде как очередной ардуиновский конструктор, тысячи их. Но тут есть ряд приятных моментов которые мне понравились и которых нет у других.
(далее…)

Read More »

Пищит

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

Ну не суть. Сама электроника тупейшая. Контроллер, какой было не жалко и чтобы на коленке если что не парясь сделать — Мега8, пара драйверов сенсорных кнопок TTP223, чтоль. Ну и полевичок, чтобы лентой светодиодной дергать. Собрал Дима прототип, прошил, как то отладил и отдал заказчику на тестирование.
Заказчик жалуется — пищит, говорит. В некоторых режимах слегка пищит.

Хм… Приносит. И вправду пищит. На слух где-то на 4кГц. На частоте ШИМ. Казалось бы, ничего удивительного. Вот только… ТАМ НЕЧЕМУ ПИЩАТЬ! Ни одного дросселя нет, лента тупо управляется полевиком. Даже больших конденсаторов нет. Электролиты мы не впаивали. Стоит везде керамика на 100nF. Пищит. Не, как убрать писк понятно — чуть меняешь частоту ШИМ и он пропадает, видимо из резонанса выходит. Но чем оно пищит?

Думали светодиодной лентой, ну там сила Ампера, длинные дорожки, тонкая подложка платы, хоть ток и небольшой, но качать может. Отключили ленту. Пищит. Чуть тише, но все равно. При этом никакой нагрузки нет вообще. Вывод контроллера, через резистор дергает ногу ненагруженного ни на что полевика в sot-23 корпусе и это как то пищит. Прижимаешь пальцем корпус контроллера, тон чуть меняется. Чем. Оно. Пищит?

UPD
Это не конденсаторы. Мы выпаяли их ВСЕ. Вообще все. Ну кроме времязадающих на сенсорных кнопках. Плата стала пищать тише, но пищит. O_o

Read More »

Взлом PLC Master-K3P от LG Electronics

Когда то давно, лет так 10 назад, на заказ взламывал некий PLC от LG. Это был какой то Master-K. Синенький такой:

Каждый раз вызывать корейцев на настройку линии было дороговато, а пароль они не дали. В результате была куплена бошка от такого же PLC которую мне прислали на разборки. В общем, на «взлом» ушло около часа из которых большую часть времени я колхозил кабель. Пароль шлется из PLC в софтину, открытым текстом и сравнивается в ней. *рукалицо* И такая дичь там (в проме) повсеместно :))))). А чего я это вспомнил вдруг. Сегодня рылся в файлопомойке нашел картинку на которой я заказчику показывал как пароль вынести :)

Может еще пригодится кому :)

Read More »

Операционный усилитель. На пальцах. Для самых маленьких.

Я когда то уже писал статью про операционные усилители. Но она была унылым говном, спустя какое-то время я кажись понял КАК надо раскрыть и повернуть тему, чтобы данная деталька о 5 ногах стала понятна даже школьнику, но все никак не мог собраться выложить. И так прошло дохрена лет и я, наконец то, созрел написать это :)

▌Что это ваще?
Операционный усилитель, далее ОУ это краеугольный камень аналоговой электроники. Такая микросхемка с помощью которой можно сделать кучу интересных вещей. Вы не смотрите, что ее зовут усилитель. Это только принцип, а вот если его применять по разному, то с его помощью можно складывать, вычитать, умножать, интегрировать и дифференцировать аналоговые сигналы. С его помощью можно сделать генератор или регулятор. Любой: П, И, ПИ, ПД, ПИД. На нем можно сделать фильтр частот, да черт знает еще что. Очень функциональная девайсина.

▌Немного теории
Идеальный операционный усилитель обладает тремя свойствами.

  1. У него БЕСКОНЕЧНО БОЛЬШОЕ сопротивление входов. Т.е. ток в его входы не течет вообще.
  2. У него БЕСКОНЕЧНО БОЛЬШОЙ коэффициент усиления. Т.е. любой ничтожный сигнал превращается в бесконечно большое значение.
  3. У него два дифференциальных входа и один выход. Дифференциальные входы означают то, что из напряжения пришедшего в прямой вход мы вычитаем напряжение пришедшее по инверсному входу, а результат этого вычисления умножаем на бесконечность, согласно пункту 2.

Во всей статье будут рассматриваться ТОЛЬКО ИДЕАЛЬНЫЕ ОУ. Чисто теоретическая абстракция.

(далее…)

Read More »

Самодельный трафарет для реболинга BGA из текстолита.

Есть у нас тут внизу какая то автомастерская. И там у них есть автоэлектрик. В общем, запороли они чей то ЭБУ при прошивке. Синдром Даннига-Крюгера в действии. Да там все легко, все херня… Да мы сто раз это делали. Ой… А чего он отзываться перестал? А чего из него дым идет? В общем, мы с Ветром поржали над ним, но решили помочь, по крайней мере перекатать чип, благо они его где-то нашли. Видимо сняли с донора. Как и чем я хз. Но чип был, без шаров. Живой не живой хз.

Надо отреболить. Проблема только, трафарета под него нет. Димка метнулся кабанчиком по ближайшим магазинам для ремонтников, а там такого нет. Есть примерно похожий, но все равно не тот. Больше чем нужно. На али он есть за тыщу, но ждать две-три недели никому не улыбалось. Тут пришла мысль, а чего бы нам трафарет самим не сделать? Из говна и палок!

Надо только пластину найти, которая бы хорошо и точно сверлилась, а еще была жесткой. Подумали, что можно сделать из текстолита. Обожаю этот материал! Его что фрезеровать, что сверлить одно удовольствие. А тонкий, 0.4мм, текстолит у меня есть. Дело за малым. В Eagle CAD накидать матрицу шаров, с выбранным шагом. Благо даташит на чип мы нашли и измерять ничего не пришлось. А дальше вывод сверловки в exellon, конвертация во Flat CAM, его в G-код и вперед.

Наклеил на столик текстолит. Просверлил.

Сверлил я советскими сверлами ВК6М на 0.7мм, которых где то нарыл NN4Z. Тот еще экстрим. Словно стеклянные. Малейший косой взгляд — ломаются. Сколько мы их переломали просто случайно задев пальцем или чуть толкнув станок в процессе… Ой, штук десять наверное, не меньше. Жесткость у моей ЧПУшки так себе, даром что из металла. Но если сверло в материале, то банальный щелбан по корпусу шпинделя приводит к поломке сверла. Это капец. С китайскими сверлами под 3.175 хвостовик в сотни раз проще. Но их не было ни одной. Поэтому ВК6М и поможет нам Мегатрон! Да, 15000 оборотов для этих сверл крайне мало. Так что запускаем прогу, пылесос не включаем, отходим от станка и не дышим. Зато как сверлит… Песня! Ни заусенки! Дырочка к дырочке!

(далее…)

Read More »

Контроллер прямого доступа к памяти (DMA) контроллера STM32

Работа с контроллером DMA

▌Что это?
Есть в современных контроллерах такой блок DMA — контроллер прямого доступа к памяти (ПДП). Штука очень простая, несмотря на умное название. Вся ее суть заключается в том, чтобы по команде от периферии или ядра взять и скопировать кусок памяти с одного места на другой.

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

Что с этим можно делать? Ой да много чего. Можно, задать в качестве источника адрес какой-либо периферии, скажем выходной регистр АЦП, а в качестве приемника адрес массива в ОЗУ, дать приказ DMA по команде завершения оцифровки АЦП хватать результат и пихать в массив. При этом DMA сам скопирует, сам увеличит адрес, а как заполнит буфер, то обнулится и начнет его переписывать по кругу заново.

И вот у нас, автоматически, без работы проца вообще, образуется циклический буфер приема данных с АЦП, которые мы можем тут же прогнать через любую цифровую обработку, да хоть через усреднение, и получить отфильтрованные уже данные. Или то же самое сделать с UART и заставить DMA аккуратно складывать входящие данные в кольцевой буфер.

А можно сделать и наоборот. Сказать DMA что мол вот тебе буфер, там лежит пара сотен байт, возьми и запихай их все в жерло UART и пойти по своим делам, а DMA трудолюбиво отправит в передачу весь буфер.
(далее…)

Read More »

Реализация функции задержки меньше 1мс на FreeRTOS с помощью таймера и Task Notification

Есть в FreeRTOS встроенная функция vTaskDelay которая на N тиков системного таймера отдает управление другим задачам. В результате можно делать тупые циклы с ожиданием чего-либо и не париться по поводу процессорного времени. Очень удобно. Но есть проблема, минимальное время которая эта задержка может организовать составляет 1 тик системного таймера. Обычно это около 1 миллисекунда. Но иногда требуются задержки меньше. Да, можно повысить скорость тиков системного таймера. Даже в 10 или 100 раз, при 72 Мегагерцах какого-нибудь STM32 это вполне себе работает. Правда на переключение контекста будет уходить больше процессорного времени. Впрочем, всегда можно работать в кооперативном режиме, а не вытесняющем. Тут в принципе нет вытеснения, а управление передаешь вручную через функцию taskYIELD или любую другую с ожиданием. Те же Delay, Очереди, Семафоры и мало ли что еще.

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

Таймер взял самый бомжовскйи. На STM32F103C8T6 нет, к сожалению, Basic Timers ТIM6 и ТIM7 — это самые простые, самые примитивные считалки. В них нет ни завата, ни регистров сравнения для ШИМ и их не жалко отдать под такое дело, но они есть либо в самых жирных, либо в самых нищих вариация серии F10x. В моей нету. Ну окей, возьмем другой таймер. Общего назначения. Я взял Timer 2.

Настраиваются таймеры элеменатрно, тут не нужны даже никакие библиотеки. Главное понять откуда берется тактирование, какая величина и что надо включить. Смотрим в RM0008 структуру тактирования таймера 2. Раздел 7.2 Clocks

У меня в системе предделители обычно настроены на максимальную частоту и на этой шине 36 мегагерц. Тактирование нашего дополнительного таймера я хочу видеть с частотой 10 килогерц. Та что делим 36 мегагерц на 36, а потом еще на 100. И получим искомое.

(далее…)

Read More »

FreeRTOS. Пример

Обещал я как то пример программы похожей на реальность, но с использованием FreeRTOS. Обещанного, как водится, три года ждут. Правда прошло уже пять… ой… В общем, ужасно не люблю писать бесполезные примеры. А полезные, которые можно выложить, как то не попадались под руку. И вот оно, нашло таки.

В общем, суть задачи, управление несколькими шаговиками не приходя в сознание. Причем все должно вращаться одновременно и сигнализировать о приходе на точку, а также прерываться по требованию. Да это все можно сделать десятком разных способов. И программно и полуаппаратно. Как угодно, короче. А у меня будет на FreeRTOS. Надо же на чем-то показать :)

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

▌Железо
Ну тут все элементарно. Pinboard II с STM32F103C8T6. Да шаговые драйверы TB6600. У драйверов этих есть сигнал STEP сигнал DIR и сигнал EN. Подаем разрешение на EN, выбираем направление на DIR и гоним тактовые импульсы на STEP. И таких четыре драйвера.

▌Среда
Делаю я все в EmBitz кто то ее в комментариях упомянул. Я попробовал и протащился. Работает НАМНОГО шустрей чем любая монструозная хрень на эклипсе. Так что атолик студио, кокос — все нахер. А внутре у ней тот же GCC.

▌Установка
Как ставить FreeRTOS описывалось в прошлой статье. С тех пор ничего не поменялось. Кинуть файлы в проект и подцепить их в среде. Элементарно. Также бегло пробегитесь по первой статье.

(далее…)

Read More »

Глюки контроллера. Ответ на загадку

Если вы не знаете о чем речь, то сначала рекомендую прочитать исходную задачу. Поломайте голову, не читайте комментарии, пишите свои. А потом возвращайтесь сюда.

Итак, девайс глючил. Причем глючил очень и очень характерно для срыва стека. Не зря первая половина поста была про поиск программной ошибки. Что такое срыв (он же переполнение) стека? Это когда стековая область памяти разрастается и начинает затирать область переменных. В результате может начаться полное веселье. Запороло переменные состояний автоматов? Получай наркоманскую логику. Запороло строковые данные — получи бред и кракозябры на экране (мой случай). Запороло видеопамять — здравствуй психоделичные картинки. Впрочем, тут и не в стеке может быть дело. Неправильно обращаясь с указателями можно навертеть такой же поебени. Суть одна — у нас каким то образом похерилась оперативная память. Не зря я полез первым делом проверять код. Но ничего не нашел.

Тут, конечно, можно до посинения отлавливать баги в программе, если бы не одно но — программа не глючила на столе. А глючила в поле. Отсюда первое соображение — виновато железо. Причем не в виде воздействия его на логику работы, ну там с протоколом ошибся или еще как налажал, опять же, в коде. А как то на электрическом уровне. Помехи, наводки и прочие пакости реального мира.

(далее…)

Read More »

Глюки контроллера

Все любят говорить достижениях и успехах. Но, на мой вгляд, о проебах говорить интересней. Потому как успехи у всех одинаковые, что там — пришел, увидел, победил. А вот накосячить можно совершенно разнообразными способами. Причем там, где, казалось бы, все на десять раз истоптано и никаких подводных камней не осталось. Однако, помним правило 34: и про старуху бывает порнуха.

Итак, делюсь :)

Есть девайс, довольно старый, вполне себе исправно работающий. Иногда зависавший, но это случалось редко и я про это даже не знал. Т.к. быстро поднятое упавшим не считается, потому никто не жаловался. Разрабатывал его не я. Я только взял на доработку и мелкосерийное производство.

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

Пока от заказчика не поступило очередное рацпредложение — избавиться от кабеля, который им приходилось крутить своими силами и перейти на что-то стандартное покупное. Выбор пал на обычный USB кабель. Ну, а чего? Дешевый, доступный, жил хватает, экранирован. Чего бы нет? А то, что по нему не USB сигнал пойдет, дак никого волновать не должно. Он все равно внутри будет. Старый разъем я убирать не стал, чуток раздвинул дорожки, чуток подвигал детальки на плате. Да уместил усбешник рядышком. Еще надо было еще пошаманить с алгоритмом отслеживания напряжения и его измерения амплитуды. Тоже все просто и элементарно. Дописать пару функций в код. Код там неплохой, так что это все было легко и просто.

Сделали платы в JLC, смонтировали партию устройств на десяток штук. Собрали и…

Дискотека, блядь! Это какой то трындец. Аппарат виснет и перезагружается каждые десять минут, хаотично. На индикации полный армагеддон. Кракозябры лезут в экран. Полная каша в показаниях. В общем, на лицо срыв стека. Ну очень похоже.
(далее…)

Read More »

Cоздание минимального проекта под STM32 в Atollic True Studio вручную

К моему глубокому сожалению и удивлению несмотря на популярность и развесистость либ, но CoIDE похоже приказала долго жить. Сайт сдох, разработчики молчат. Могли бы и в опенсорц податься, все предпосылки к этому были, но… В общем, кто этих китайцев поймет. Дремучие они.

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

Что делать? Куда бежать? STM, говорят, прикупил Atollic True Studio, вышвырнул оттуда поддержку всех сторонних камней и дал нахаляву. Решил я попробовать это чудо. В конце концов чем оно отличаеться то от CoIDE? Тот же Eclipse…

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

Чтож, онанизм так онанизм. Наши руки не для скуки!
(далее…)

Read More »

Непобедимый

Понадобился тут NN4Z хитрый надфиль. Как обычный, плоский, но только с абразивом только на узких сторонах и с гладкими плоскостями. Чтобы расшаперить торцы узкой щели, не поцарапав края. Ну пошел он по нашим лабазам, купил несколько китайских алмазных надфилей, первые попавшиеся под руку. За 50-100 рублей штука. Думает, приду в лабу, да сточу абразив с широких плоскостей…

Ага, щаз. Вован стер об этот надфиль ДВА диска болгарки. Потом вспомнил, что у нас есть точило:

И минут 10 задрачивал этот надфиль на камнях… Судя по результату, стачивались камни, принимая идеально плоскую форму торцов и становясь гладкими и красивыми. Надфилю же похрену совершенно. Он стал лишь чуточку менее шершавым… Вот он, после всех этих издевательств.

У нас с NN4Z было лишь такое выражение:

Как снести с этого гребаного надфиля абразивную пасту и добраться до металла?

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

Read More »

MISRA C

MISRA — это Motor Industry Software Reliability Association группа разработавшая стандарт языка Си для ответственных встраиваемых систем. Для таких как автомобильная или авиационная техника, разных опасных производств. Где цена программной ошибки может быть очень высока. Это набор ужесточающих правил для языка Си. Есть версия и для С++, но не суть. Вся прелесть в том, что MISRA C поддерживается некоторыми компиляторами и если добавить соответствующие ключи, то они будут проверять код еще и на соответствие MISRA C, например IAR. Есть и отдельные анализаторы кода на соответствие стандарту.

Ну, а сама суть стандарта в том, чтобы осложнить жизнь разным быдлокодерам и любителям красиво повыебываться в коде :) Там, например, запрещено пихать в заголовок for все кроме стандартных опций жизнеобеспечения цикла. Запрещены стандартные типы вроде char или int которые зависят от архитектуры. Только жестко описанные типы вроде uint8_t. Запрещены switch без default, а case и if/else без заключения содержимого в { } блоки. Запрещена указательная арифметика и все в таком духе. Таких правил там штук под двести. Настоящий концлагерь для кодера, где ничего нельзя :) Зато сделать тупую ошибку становится сложней.

Так вот, к чему я. Недавно наткнулся на хороший перевод правил MISRA C для IAR. От Андрея Шлеенкова. Вот, делюсь :)

Read More »

Чистая земля в EagleCad

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

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

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

Также настоятельно рекомендуется на выходящие и входящие линии данных поставить по резистору, это не позволит внешней части платы жестко дергать за GPIO внутренний островок. Ставить надо в места где отмечено зеленым, например. У меня разводка еще не до конца завершена, поэтому ничего там нет, но это временно.

Это довольно эффективно подавит помеху.

Ну и как проще всего сделать такую землю в Eagle CAD (в других CAD должно быть аналогично).
(далее…)

Read More »

Инструмент для снятия изоляции Weidmuller Stripax

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

▌Proskit
До этого у меня, конечно же, был стриппер, вот такой:

Куплен был на али когда это еще не было мейнстримом :) В принципе, он очень неплох. Мне он нравится концептуально. Прекрасно очищает довольно толстые провода, может работать в разрыв, если вдруг надо сделать врезку. Им можно жать не очень толстые наконечники и клеммы, хотя обжималка там так себе. Не сравнить со специализированной.

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

В общем штука отличная, своих 1800р стоит более чем. Но вот точность сжима захватывающих губок страдает и зачистка тонких проводков, вроде как в телефонном кабеле, происходит с большим количеством мата и брака. То не захватит, то схватит, но не сдерет. Еще у него есть существенный минус — тугая пружина и механизм шарикового замка, дающий зажим, даже на холостом ходу выдают большое усилие, а уж по проводу, так вообще. Прибавить к этому жесткие и не очень удобные ручки и через пол часа интенсивного клацанья мозоль на правой руке обеспечена. Докажи потом, что не онанист. Решил найти себе стриппер для тонких работ.
(далее…)

Read More »

OctoPrint Часть 2. Digital Resistance

Вы спросите где же первая часть? Она в процессе написания. Из-за говнюков из РКН пришлось срочно решать проблему с подключением принтера к Телеге, поэтому я по горячим следам, чирканул эту часть. Скоро выйдет часть первая ,когда я доделаю картинки и описалово фич осьминожки.

Одна из главных фич, ради которого я его прикрутил к своему принтеру это плагин OctoPrint-Telegram, ставится он из интерфейса плагин менеджера OctoPrinta не сложней чем установка софта на смартфон какой. Заходишь в местный маркет, тыкаешь установить. Готово.

А после, мы получаем практически полное управление принтером через месенджер Telegram из любой точки. Можем посмотреть фотку с камеры, можно получать фотки по ходу дела, наблюдая как идет печать. Можно подкорректировать температуру экструдера или силу охлаждения, если видим, что процесс идет не так как нужно. Остановить печать, само собой.
Можно даже начать печать, закачав через тот же телеграм gcode файл. Например, уходя из мастерской я прошу NN4Z когда он закончит свою печать оставить принтер на готове. А уже дома, допилив нужную модель, через Telegram забрасываю ее в OctoPrint и запускаю печать. Удаленно наблюдая, что все идет хорошо. Если же не задалось — останавливаю. Не судьба. Но это бывает редко, процесс у нас поставлен хорошо.

Да, можно управлять и по SSH и как то еще, но у меня интернет через мобильного оператора, серый IP и никакой DYNDNS тут не катит, порты просто не пробросить наружу. Только полноценный VPN кидать. Так что телеграм плагин просто спасает. Да удобней намного. С телефона рулить через SSH это редкостный изврат. А у плагина там вполне удобный интерфейс.

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

Все было хорошо пока не пришли пидорасы и не заблокировали нашу прелесть. И если с клиентами и месенджерами все отлично, они работают :)))) , то вот с плагином все печально. У него изначально не было возможности даже через прокси ходить, не говоря уже про получение через push новых адресов.

Пришлось прикручивать обходные пути.
(далее…)

Read More »

Дао изоленты


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

serkov.su Страница сайта автора, где можно скачать pdf с книжкой Ну и сам его бложек заслуживает внимания.

Read More »