Pull to refresh
  • by relevance
  • by date
  • by rating

Про оптимизацию кода

Lumber room
Кодер Один мой знакомый получил работу в очень престижной конторе по разработке устройств связи уоки-токи, мобильные и так далее. Контора надо сказать очень большая и входит в ТОП-50 по этой сфере индустрии.

И из-за такого размера в конторе было очень много бюрократических моментов — согласований, совещаний и уходило на общение очень много времени. Программисты там были в большей части индусы и делали они свою работу очень неторопливо, медитируя так сказать в рабочее время.
Что было дальше
Total votes 86: ↑49 and ↓37 +12
Views 366
Comments 18

Знакомтесь: МиниБот

Robotics

Это и есть MiniBot, собственной персоной.

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

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

Что за зверь такой — МиниБот? Если кратко — то МиниБот простой готовый робот для начинающих.
Подробнее можно прочесть под катом...
Total votes 21: ↑19 and ↓2 +17
Views 3.2K
Comments 8

Главная тема из игры Super Mario на двух DC-моторах

Abnormal programming *
Добрый день всем!

Ребята с сайта hackedgadgets.com собрали плату с двумя моторами постоянного тока и запрограммировали контроллер так, чтобы с помощью вращения этих моторчиков играла мелодия из игры Super Mario!



Подскажите, если выбрал неподходящий раздел.
Total votes 84: ↑60 and ↓24 +36
Views 1.9K
Comments 55

Начинающим: счетчик на микроконтроллере с шагом 2/3 микросекунды и переполнением в несколько суток

Programming microcontrollers *
Часто при работе микроконтроллерного устройства есть необходимость отсчитывать «антропоморфное» время – сколько долей секунды светиться светодиоду, максимальный промежуток времени double-click и т. д. В общем, отсчитывать не только нано- и микросекунды, но и десятки миллисекунд, а то и секунды, минуты и даже часы (боюсь сказать о сутках…).
В то же время в микроконтроллерах нередко нужно одновременно с этим иметь дело с микросекундами – периоды импульсов, антидребезговое ожидание и т. п.
Есть также устройства, которые работают непрерывно многие часы и даже сутки – авиационная техника, автомобильная, скважинные устройства (там речь идет иной раз о непрерывной работе несколько дней). В этих случаях недопустимо переполнение таймеров и 8-битных переменных.
Хотелось бы это все объединить в одно изящное и универсальное решение – иметь средство измерения времени с точностью до микросекунды, не переполняющееся несколько дней.
Почему бы и нет? Помучился я некоторое время и родил решение для 8-битных микроконтроллеров AVR. Для этого я задействовал 8-битный таймер-счетчик и 4х-байтную переменную. С PIC-ами и AT89 я сейчас не работаю, а с другими embedded-платформами не дружу. Впрочем, если читатели помогут – сделаю и для них.
Достоинства – код в высшей степени повторяемый (я уже 5-ое устройство с ним делаю); простота в работе (не используются прерывания для клиентской части работы); клиентская часть кода условно платформенно-независимая; в прерывании – одна операция суммирования (но, правда, для 4-хбайтной величины); нет внешнего устройства — таймера реального времени.
Недостаток я нашел один – занят один такой полезный и всегда нужный таймер…
Статья будет интересна в первую очередь начинающим — Америку я тут не открыл.
Читать дальше →
Total votes 32: ↑30 and ↓2 +28
Views 19K
Comments 43

Чем порадовать любимую 14 февраля

DIY
Видимо немного поздно этот топик оказался здесь, но всё же лучше поздно, чем никогда. Завтра замечательный праздник — День всех влюбленных. Чтобы удивить свою любимую, была проделана (аж почти два раза) вся работа, описанная в этом топике.



(Осторожно, много изображений!)

Читать дальше →
Total votes 263: ↑247.5 and ↓15.5 +232
Views 38K
Comments 118

Запретный плод GOTO сладок (версия для микроконтроллеров)!

Programming microcontrollers *
Доброго времени суток!

Какое Ваше отношение к оператору goto в языках С/С++? Скорее всего, когда Вы учились программировать, Вы его использовали. Потом Вы узнали, что это плохо, и Вы о нем позабыли. Хотя иногда при сложной обработке ошибок… нет-нет, там try … throw … catch. Или же для выхода из вложенных циклов … не-ет, там флаги и куча сложностей. Или когда вложенные switch … нет-нет-нет, там те же флаги.
И все-таки, иногда в ночной тиши Вы допускали в свое подсознание грешную мысль – «а почему бы не использовать вот тут goto? И программа вроде как стройней будет, и оптимально выходит. Да-а, было бы хорошо… Но нет – нельзя, забыли!».
А почему так оно?
Под катом – небольшое расследование и мое, основанное на многолетней практике и разных платформах, отношение к этому вопросу. Эта статья — аналог такой же для С++, но здесь выделены моменты именно для С и для микроконтроллеров.
Интересно? - тогда читаем!
Total votes 53: ↑35 and ↓18 +17
Views 8.2K
Comments 69

Охранная система, проект умный дом (часть 1)

DIY
imageМногие хотели обезопасить свою квартиру от взлома, ведь большинство предлагаемых на рынке систем вряд ли будет многим по карману. Однако имея опыт и знания в электронике и микропроцессорной техники это можно легко сделать самому. Ниже будет рассказано, как из подручных и недорогих средств можно сделать «умный» охранный шлейф с возможностью отображать данные на компьютере, планшете или телефоне, имеющим операционку. 2-ая часть.
Читать дальше →
Total votes 165: ↑157 and ↓8 +149
Views 6.6K
Comments 53

Разработка своего первого USB устройства. Маленький шаг вперед

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

Что будет в посте?

В посте я расскажу о своем опыте разработки своей первой поделки, которая управляет светодиодами на плате с помощью программы на компьютере, а конкретнее некое подобие индикатора уровня громкости с одной полосой визуализации.
Читать дальше →
Total votes 117: ↑113 and ↓4 +109
Views 34K
Comments 35

Microtouch

Programming microcontrollers *
Translation
Да, iTouch офигителен. Но кому нужно такое «закрытое» устройство? Может, лучше сделать свой гаджет с сенсорным экраном, написать свои программы — всё с использованием свободных железа и программ? Ну да, пусть этот гаджет не умеет воспроизводить MP3, но в нём есть цветной сенсорный (резистивный) TFT экран 320x240 точек, 8-битный микроконтроллер Atmega32u4, зарядное устройство для литий-полимерных аккумуляторов, управление подсветкой, разъем для microSD и трехосевой акселерометр. Любопытная штучка, особенно для тех, кто любит что-нибудь делать своими руками, как думаете?

Читать дальше →
Total votes 52: ↑51 and ↓1 +50
Views 5K
Comments 22

Определение сопротивления контроллером без АЦП

DIY
Собственно стала такая вот задача — несколько раз в секунду снимать показания потенциометра. Целевой приемник информации — контроллер ATmega32. Имеет встроенный АЦП, но выдаваемый им результат имел разрешение 2-3 бита, а остальные биты несли в себе мусор.

Первое что пришло на ум — купить внешний АЦП и прикрутить к контроллеру. Но не было ни времени ни желания разбираться с еще одним устройством. Решил попробовать другой метод, в работоспособности которого не был уверен, но тем не менее схема оказалось вполне рабочей и дала точность порядка 8 бит (может и больше, не проверял).
Читать дальше →
Total votes 33: ↑28 and ↓5 +23
Views 6K
Comments 23

Raspberry Pi, сигнализация и умный дом

Programming microcontrollers *

Началось все года 4 назад когда во время рабочего дня у меня обчистили квартиру. Попасть домой через дверь после этого уже не удалось из-за поврежденного замка. Неприятное событие заставило задуматься о безопасности жилища. И это лишь одна из причин для мониторинга и автоматизации квартиры. Как часто прийдя на работу (а то и уезжая или улетая куда-либо) вы сомневались выключили ли перед уходом утюг, закрыли ли газ, воду ;-) Подбавим масла в огонь админам — спокойны ли вы что ваш старый БП в работающем системнике дома не чадит и не пылает!?) И что удаленно делать с девайсом, который «наглухо завис».

В этом посте я рассмотрю некоторые существующие на рынке решения, розничную стоимость доступного аппаратного обеспечения и способ как создать сигнализацию квартиры и некоторые из функций «умного дома» используя одноплатный компьютер Raspberry Pi
Читать дальше →
Total votes 45: ↑38 and ↓7 +31
Views 69K
Comments 107

Простая паяльная станция на микроконтроллере

DIY
Паяльник — основной инструмент тех, кто хоть как-то связан с электроникой. Но большинство обычных паяльников пригодны лишь для пайки кастрюль, более-менее нормальный паяльник с термостатом и сменными жалами стоит недешево, а про паяльные станции и говорить нечего. Предлагаю собрать несложную паяльную станцию не особо отличающуюся по функциональности от серийных.
Читать дальше →
Total votes 73: ↑69 and ↓4 +65
Views 60K
Comments 50

Python-интерфейс между компьютером и физическим миром

Python *


Американский инженер Ричард Уардлоу (Richard Wardlow) разработал интересный микроконтроллер pyMCU, который он позиционирует как «простой интерфейс на Python между компьютером и физическим миром».

В отличие от существующих Python-микроконтроллеров, эта плата предназначена не столько для автономной работы, сколько как постоянно подключенные к компьютеру «органы чувств» для Python-программы. Контроллер оснащён цифровыми и аналоговыми коннекторами, так что к нему можно подключить разнообразные устройства и сенсоры. Проще всего показать возможности контроллера на примерах.
Примеры
Total votes 58: ↑49 and ↓9 +40
Views 4.9K
Comments 21

FleX™Silicon-on-Polymer™ — первый серийный гибкий микроконтроллер

Programming microcontrollers *


FleX™Silicon-on-Polymer™ – революционный процесс создания высокоэффективных однокристальных электронных схем CMOS с многослойным металлическим проводником на гибкой подложке.

FleX позволяет разработать новое поколение ИС, которые значительно улучшат возможность интегрирования функциональности CMOS в гибкую электронику. С помощью FleX можно создавать полностью функциональные гибкие полупроводники на кремнии, толщина которых составляет менее 200 нм. FleX может применяться для процессов «кремний на изоляторе» на любых фабриках. FleX позволяет сделать полупроводники тоньше, обеспечить новые возможности упаковки и 3DIC-интеграции.

Читать дальше →
Total votes 55: ↑53 and ↓2 +51
Views 20K
Comments 27

Бюджетный UHF RFID считыватель и его развитие

Wireless technologies *
Здравствуйте, досточтимые леди и джентльмены.
Самый дешевый UHF RFID считыватель или считыватель стандарта EPC Gen2 стоит в розницу никак не меньше 200 USD.

Как можно сделать работоспособный UHF RFID считыватель из деталей за 10 USD, и как можно было бы из этого извлечь пользу, рассказано ниже.
Читать дальше →
Total votes 21: ↑19 and ↓2 +17
Views 50K
Comments 14

Как понять ассемблер для AVR

Assembler *
Всем добрый вечер! Веду свою трансляцию из уютного мира, который называется «ассемблер». Сразу поясню что тема касается микроконтроллеров AVR — и я пока ещё не знаю, пригодится ли этот пост тем, кто хочет использовать ассемблер для любой другой задачи. Дело в том, что я буквально несколько дней назад начал учить ассемблер с нуля — нужно сделать одно устройство — и я решил сделать в нём всё самостоятельно. Так вот — в один прекрасный день понял, что учить ассемблер абсолютно бесполезно! Ассемблер можно только понять! То есть всем тем, кто хочет программировать на ассемблере я настоятельно рекомендую детально вникнуть в то, каким образом ФИЗИЧЕСКИ работает микроконтроллер, а затем уже изучать тонкости команд.
Так вот, я пожалуй начну небольшой цикл статей, в которых буду с самого начала рассказывать как именно я понял те или иные вещи в программировании на ассемблере — думаю для тех, кто вообще не понимает что такое асм я буду как раз таким «переводчиком» с языка тех, кто в этом деле очень хорошо шарит.
Читать дальше →
Total votes 116: ↑66 and ↓50 +16
Views 99K
Comments 78

Как понять ассемблер. Часть 2. Микроконтроллер

Assembler *
Ну чтож, пора копнуть чуть глубже. Понимание самого ассемблера по мне так не мыслимо без понимания того, как работает микроконтроллер. Оставим наших персонажей в комнате и вновь воспользуемся нашим воображением.
Итак сейчас нужно будет просто представлять то, о чём я напишу.
***
Представь, что ты сидишь внутри микроконтроллера. Скажем внутри ATmega 8. Только микроконтроллер это такая большая прямоугольная белая комната, а ты сидишь в удобном кресле в самом её центре. Эта комната — твой личный центр управления — ты из неё управляешь тем, что снаружи. Пока неважно ЧЕМ — пока важно КАК.
Читать дальше →
Total votes 43: ↑23 and ↓20 +3
Views 36K
Comments 20

Доработка проветривателя или управление вентиляцией от датчика углекислого газа

DIY
image
Уровень углекислого газа (CO2) один из важных показателей качества воздуха в помещении. Еще его уровень очень удобно использовать для управления вентиляцией.

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

Читать дальше →
Total votes 53: ↑53 and ↓0 +53
Views 49K
Comments 21

Зачем язык Verilog программисту микроконтроллеров

IT systems testing *
image

Несколько раз начинал писать эту статью и бросал. Бросал потому, что тема, как мне кажется, несколько спорная. Изобретенный мною велосипед может кому-то показаться смешным и нелепым и вообще не совсем корректным. Тем не менее…

Вообще, мне кажется, что в области разработки электронных устройств существует как бы несколько мало пересекающихся миров. Например, существует разработка устройств на базе микроконтроллеров и параллельно существует разработка устройств на базе ПЛИС. Принципы работы этим микросхем принципиально отличаются и точно так же отличаются принципы и методы разработки, используемые языки программирования и отладки. Конечно, выбор элементной базы сильно зависит от поставленной задачи. Однако и так понятно, что эти миры, мир микроконтроллеров и мир ПЛИСов почти не пересекаются. Может быть на стыке технологий что-то есть?
Читать дальше →
Total votes 52: ↑50 and ↓2 +48
Views 54K
Comments 16

Контроллер дистанционного управления для ПК-сервера с текстовой консолью, без паяльника и Arduino

DIY

Аннотация


Хотя один из героев второго плана — ИК-порт на материнской плате, не стану я рассказывать про пульты от телевизоров и переключение ими треков в любимом медиаплеере. В продолжение истории про сервер FreeNAS, построенный из старого железа, я расскажу, как снабдить его столь же нехитрым бортовым контроллером с последовательным портом (консолью) поверх IP (Serial-over-LAN), дистанционным сбросом (RESET) и управляемым питанием. Спрашивается: зачем? Ведь *nix и так неприхотлив в дистанционном управлении: включил тот же SSH и управляй себе на здоровье. Но что будет при аварии? Стартовом сбое операционной системы? Что, если надо нажать RESET? Сделать апгрейд системы? Или запустить fsck в single user? Или восстановить спиленный сук неверно настроенный firewall? Не ехать же на площадку каждый раз, подключать монитор, клавиатуру и торчать ночью в офисе на регламентных работах… или мозолить глаза днём сердитому Бизнесу.

Ещё один NAS своими руками, часть 4: призрак Чернобыля


Я давно понял, что лень — основной двигатель человеческого прогресса. Наверное, самые изящные формы лени встречаются в самой прогрессивной области: сфере информационных технологий, где лень уже часть профессии. Это мы внедряем сложные helpdesk-регламенты, чтобы не устанавливать пользователям нужные программы. Это мы два дня отлаживаем скрипт, чтобы потом сэкономить себе полчаса. Это мы управляем рабочим столом в соседней комнате, используя для этого сервер на соседнем континенте. Это мы придумали мораторий на работы, чтобы отдыхать ещё за неделю до Нового Года. Кто это там ждёт лифт в вечерний час пик, чтобы чинно спуститься на нём со второго этажа на первый? Бизнес снисходительно зовет нас айтишниками, но мы гордо величаем себя Инженерами ИТ…

Напрашивается устройство, часто именуемое off-band (baseboard) management controller, или автономный бортовой контроллер дистанционного управления. Это такая серебряная посеребрённая пуля, уменьшающая чрезмерные нагрузки на священный сисадминский зад. По функциям наше изделие близко к IPMI за некоторым вычетом, и до настоящих серверных продуктов вроде iLO или DRAC тут, конечно, далеко. Да, лучше купить готовый контроллер за половину стоимости старого компьютера (или серверную платформу за пятикратную стоимость), если того требует важность данных и связанные риски. Я же собрал рабочее устройство немногим дороже $70, которое к моменту публикации поста успело выручить меня уже несколько раз, чего и всем желаю.

Используете старый ПК-сервер Linux дома или в офисе? Некому нажать RESET? Не хватает денег на серверную платформу? Возможно, вы узнаете новые способы упростить себе жизнь. Программировать почти не будем, паяльник и Хор Друидов не потребуются, зато вспомним весёлые 90-е. Микроэлектроника — это просто!

Читать дальше →
Total votes 29: ↑25 and ↓4 +21
Views 45K
Comments 35