Tag Archives: Начинающим

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

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

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

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

(далее…)

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 »

Микросхемы из Китая

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

Очень часто можно нарваться на перемаркировку, как, например, я в посте про поиск глюков NC и ПИЛУ. Там я вместо NCP551SN30 купил перемаркированные под него LP2985-30 в результате получил веселые эффекты.

Или вот есть такая замечательная пищалка HCM1212A — она идет в составе демоплаты Pinboard II. Выбирая ее я специально взял динамическую пищалку без генератора, чтобы можно было генерировать звук самостоятельно, дрыгая ногой. Ставили мы их ставили, изготовили несколько сотен плат, все было ок. Потом у моего поставщика сменились источники закупки и та же HCM1212A пошла от других китайцев.

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

Но это все фигня, проблема решается еще на этапе конструирования и не ведет к каким-либо проблемам. Хуже когда нарываешься на глючные микроконтроллеры или другую сложную логику. Ниже будет несколько случаев на которые я лично напоролся покупая комплектуху в Китае.

(далее…)

Read More »

Дралоскоп

▌Идея
Иногда хочется передрать удачную схему или разводку с имеющегося девайса или его изображения. Как тут не накосячить и не налепить ошибок, которые потом можно долго и нудно отлаживать? Особенно если схема большая. Раньше я печатал схему/разводку на бумажке, клал перед собой и вычеркивал проведенные трассы. А некоторые программы, например Sprint Layout, позволяют подложить фоном изображение требуемой платы и просто его обвести. В Eagle же этой прикольной возможности нет. А встроенные скрипты конвертации точечного изображения в слой работают ОЧЕНЬ грубо.

И тут мне пришла одна дедовская идея. А чего бы не сделать электронный дралоскоп? Помните эту мега штуку. С лампой и стеклянным столиком. Сколько на нем было передрано студентами чертежей не передать. Так чего отказываться от опыта предков? Что мешает воткнуть любую картинку поверх всего изображения на мониторе, как оверлеем? Думаю ничего… с этой идеей я и обратился к знакомым программерам Denisio и dсoder. Дкодре посоветовал метод, а Дэн за пол часика накидал все остальное. Пока так, по быстрому, проверить идейку…

▌И вот что получилось
Сфоткал изображение одного забавного модулька:


(далее…)

Read More »

Двигатели переменного тока. Принцип работы, характеристики и управление

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

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

Начнем с упрощенной одновитковой обмотки. Вот такой:

Подаем на него напряжение, получаем ток, создающий магнитный поток. Направление потока зависит от направления тока. Определяется по правилу буравчика. Вспоминаем курс физики из школы :) Если сунуть туда синусоидальное напряжение, то поток через обмотку будет шнырять туда-сюда по синусоидальному же закону.
 

Берем три обмотки и ставим их так, чтобы магнитное поле, ими генерируемое, было направленно под 120 градусов относительно катушек.
 

Получаем упрощенный вариант статора. Соединяем обмотки треугольником:

Оставим от него только направления векторов, чтобы посмотреть на это в разрезе. И загоняем в эту обмотку трехфазное напряжение. Три синуса, сдвинутые под 120 градусов.
 
(далее…)

Read More »

Двигатель постоянного тока. Характеристики и регулирование

После предыдущего поста о мотор-редукторе мне пришло несколько вопросов по регулированию двигателя постоянного тока. Так что пора написать очередной пост :)

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

Read More »

Робоконструктор MicroCamp

В Элементе появилась очередная игрушка, так что я не устоял и подорвался туда с фотиком.
Итак, это робоконструктор, подобный RoboPICA, но на этот раз на ATmega8 и колесном шасси. Этакая вертлявая каракатица на двух колесах и двух шариках, поворачивает по тракторному — реверсом колес. Проходимость у ней, конечно, не танковая, но зато по маневрености она гусеничному шасси огромную фору даст. (далее…)

Read More »

Монтажное И

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

Что такое соединение в монтажное И.
Представь себе линию, подтянутую резистором к плюсу питания. Так как сопротивление между линией и землей бесконечность, а между питанием и линией равно резистору, то напряжение на линии равно напряжению питания. То есть высокий уровень aka (обычно) логическая единица.


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

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

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

Как с этим работать
Очевидно, что при работе на шину с монтажным И нельзя в эту шину подавать сильный высокий уровень. Иначе если какой либо из блоков выдаст свой сильный низкий то один из них выгорит в результате КЗ. Соответственно, если говорить про AVR, то ноль задаем сочетанием DDR=1 PORT=0, а единицу (когда линия отпущена) DDR=0 PORT=0. Вот такая вот инверсная логика.

Read More »

М.Б Лебедев «CodeVision AVR пособие для начинающих»

Автор:		М.Б Лебедев
Название: 	CodeVision AVR пособие для начинающих
Издательство: 	Додэка

На просторах интернета нашлась еще одна книга по Си для AVR, на этот раз основательно описывается компилятор CodeVision AVR (CVAVR). Честно говоря, я не люблю CodeVision. Да, конечно, там замечательный мастер проектов и новичок на нем получит работающую программу буквально за несколько минут. Все очень просто и наглядно… но когда я как то раз глянул в код, в сгенерированный ассемблерный листинг… БУЭЭЭЭ такой лажи не делал даже GCC на минимальных настройках оптимизиации. Еще и денег стоит. Короче, снес я его нафиг. Найти бы еще нормально крякнутый IAR… вот он генерит поистине шедевральный код. По нему можно изучать ассемблерные приемы. А тут… В общем, не впечатлил меня этот компилятор. Но книжку выкладываю. Т.к. им пользуются очень многие. Книгу не читал, выкладываю как есть. Книга толстая весит так много изза того, что качественный скан и очень много страниц — почти 600. Солидный труд.

Read More »

Шпаргалочка

Наваял тут небольшую шпаргалку. На стену перед глазами повесить. Основные степени, маркировка SMD резисторов и керамических кондеров. А также размеры smd резисторов и допустимые мощности для них. Если есть что добавить, то пишите в комменты, вместе настрогаем.

Где бы еще нарыть удобную графическую справку по типам корпусов. Никто не натыкался?

Read More »

Ревич «Практическое программирование Микроконтроллеров AVR на языке ассемблера»

Автор:		Юрий Ревич
Название: 	Практическое программирование 
		Микроконтроллеров AVR на
 		языке ассемблера
Издательство: 	Bhv

Отличная книга. Из серии настольных. Автор очень доступно, подробно, без занудства и заумностей рассказывает как использовать все то богатство, что разработчики из Atmel напихали в свой контроллер, причем книжка свежая, а значит контроллеры там уже из современных. Разобраны все периферийные устройства, а также на конкретных практических примерах наглядно показано, как воспроизводить звуки через ШИМ, как писать и читать на MMC флешки, как пользоваться компараторами, АЦП, SPI, TWI. Есть целый раздел посвященный математике на микроконтроллерах. Сложение, деление, умножение целых и дробных чисел. Как со знаком, так и без. В сочетании с даташитом или книгой Евстифеева дает практически полную информацию для работы с AVR. Также есть глава посвященная связи МК с компом. Есть пример проги на Delphi для работы с COM портом. В общем, настоятельно рекомендую заиметь, не помешает.

Read More »

Р. Токхейм «Основы цифровой электроники»

Автор:		Р. Токхейм
Название: 	Основы цифровой электроники
Издательство: 	Мир

Посоветовали мне эту книжку, как хороший материал по цифровой электронике. Посмотрел. Действительно, отличная подача материала. Все очень просто, но без скатывания в примитивизм. Разобрана как элементарная логика, так и более сложные конструкции, вроде триггеров, счетчиков, регистров. Разннообразных АЛУ и прочих сумматоров. Есть разбор сложных моментов, таких как гонка состояний, когда из-за конечной скорости работы элементов реальная схема работает не так как ее математическое описание. И, конечно же, методы борьбы с этой напастью. Конечно, с точки зрения практики, данная книга уже устарела. Так как разрабатывать схему на дискретных компонентах сейчас будет только закоренелый ретроград — микроконтроллеры и ПЛИС давно уже подмяли эту нишу под себя, перебив дискретку как по быстродействию, так и по цене. Но для понимания теории работы цифровой электроники и принципов построения логических схем, эта книга подойдет как нельзя лучше.
Электронику, то в универах еще не отменили? ;)))) Вот! По этой книге готовиться к экзамену по каким нибудь развертывающим системам самое то.

Read More »

Гордон Мак-Комб «Радиоэлектроника для чайников»

Автор:		Гордон Мак Комб
Название: 	Радиоэлектроника для чайников
Издательство: 	Диалектика

Если взять книги Борисова и выкинуть из них всю теоретическую начинку, оставив только практическую составляющую на уровне тезисов, вроде «ток идет от плюса к минусу» или «диод пропускае ток только в одном направлении», добавить немного байды про странный микроконтроллер из другого мира (не, реально, я не знаю где они отрыли эту фиговину, никак происки Parallaxa), снабдить это картинками и рядом практических советов (весьма, дельных, порой). Что получиться? Правильно! Очередная книга из серии «Для чайников». Научиться по ней чему либо толком нельзя, но зато она, как и любая книга из этой серии, помогает чайнику развить просто кипучую деятельность, позволяя получить результат прямо здесь и сейчас, пусть даже не понимая толком как это работает. Но ведь тоже хорошо, заставляет немного поверить в свои силы и тогда можно выкурить что посерьезней, например, того же Рудольфа Свореня. Так что если вы даже не догадываетесь за какой конец брать паяльник, то найдете там немало интересных моментов.

Read More »

Стюарт Болл «Аналоговые интерфейсы микроконтроллеров»

Автор: Стюарт Болл
Название: Аналоговые интерфейсы микроконтроллеров
Издательство: Додэка

Чертовски мощная книжка. Даже сейчас, многие вещи оттуда мне были почти как откровения. Знать то я это знал, но не было четкой системы в голове и тут… Непередаваемое ощущение. А ведь я пролистал ее бегло, по диагонали. Надо курнуть посерьезней. Она не совсем для начинающих, требует некоторой первоначальной подготовки, например предварительно не помешает загрузить в мозги начала от Свореня или Борисова.

О чем эта книжка? Да обо всем, что начинается сразу за границей корпуса микроконтроллера. Трудно найти такой прибамбас который можно подключить к микроконтроллеру и который бы отсутствовал в этой книге. АЦП, ЦАПы, внешняя память, интерфейсы, кнопки, светодиоды, реле. Разнообразные датчики и подключение шинных магистралей. Энкодеры и двигатели, соленоиды, цифровые потенциометры, да еще черт знает что. Откуда берутся помехи и как с ними бороться, погрешности, способы замера разных величин. Готовые схемотехнические решения и общая концепция работы.

Причем расписано все буквально на пальцах, математика, конечно, есть. Но укладывается в пределы школьного курса. Как говорит сам автор: «Я не хочу писать книгу о вычислениях с теоретическими выкладками, и думаю, вы бы не стали ее читать. Эта книга — о реальных встроенных микропроцессорных системах, поэтому я хочу сфокусироваться на практических примерах. »

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

Read More »

Р.А. Сворень «Электроника шаг за шагом»

Автор:Р.А. Сворень
Название: Электроника шаг за шагом
Издательство: МРБ

Отличная книжка. Пожалуй будет написана даже покруче чем Борисов. И относительно современная — уже вовсью описываются микросхемы и дискретная цифровая техника. Счетчики всякие, дешифраторы и прочая логика. Много про теле и радио вещание, немного про автоматику. Большой упор, все же там идет на транзисторную усилительную звуковую технику и всякие электронные самоделки, вроде мультивибратора, генераторов, пищалок и прочей мелочевки. Очень много картинок и поясняющих диаграмм. Для начинающих — самое то!

Read More »

Изготовление печатной платы от и до. Видео урок.

Сделал видео урок на тему изготовления печатных плат методом Лазерного Утюга ака (ЛУТ). Полный цикл, от подготовки платы с куска текстолита, до сверления и лужения.
Текстовое описание технологии, применяемые материалы и прочие тонкости уже были описаны ранее, поэтому я не стал повторяться. Материалы и инструменты те же самые, что я и писал. Весь процесс был порезан на операции для удобства просмотра, обработки и закачки в инет. При изготовлении платы, между операциями, период времени составлял считанные минуты. В основном оно тратилось на поиск какой-нибудь ваты, ацетона или пинцета, чтобы ухватить горячую плату. Так что можете считать, что они идут без перерыва во времени, чтобы оценить скорость изготовления плат.
(далее…)

Read More »

Юкио Сато «Обработка сигналов, первое знакомство»


Автор: Юкио Сато
Редактор: Есифуми Амэмия
Название: Обработка сигналов. Первое знакомство
Издательство: Додэка 2002

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

Read More »

Матричная клавиатура

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

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

Считывающий порт включается в режиме Pull-up входа, то есть вход с подтягивающими резисторами. Если контроллер это не поддерживает, то эти резисторы надо повесить снаружи.

Сканирующий порт работает в режиме выхода, он подключен к столбцам. Столбцы должны быть подтянуты резисторами к питанию. Впрочем, если используется полноценный Push-Pull то подтяжка не нужна — выход сам поднимет ногу на нужный уровень.

(далее…)

Read More »

Минимальный набор

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

(далее…)

Read More »

Борисов В. Г. «Юный радиолюбитель»

Автор:		Борисов Виктор Гаврилович
Название: 	Юный радиолюбитель. Издание 7-е.
Издательство: 	Радио и связь

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

Read More »