Comments 101
Так же можно сказать, что та же Atmel выпускает микроконтроллеры с интерфейсами USB, IDE, реализует встроенные интерфейсы для MMC, SD карт, декодеры MP3 и т.п., что позволяет запросто создать свой mp3 плеер. У той же Atmel есть микроконтроллер с 8! ножками серии AVR, что позволяет делать простенькие но маленькие устройства.

В инете для AVR существует реализация TCP/IP стека, что позволяет делать устройства взаимодействующие с сетью.

Микроконтроллеры — хорошая штука. Они затягивают. Там нет ничего сложного, но результат может быть очень полезным или забавным.
О да!
У микроконтроллеров огромный потенциал!
Технологии позволяют, а пользователь «требует» использования микроконтроллеров в кластерной системе.
Так что устройсва, которые будут работать как мозг человека (на каждый интерфейс ввода данных — один «контроллер») совсем не за горами!
Вот и узнал, как же работают эти микроволновки и стиральные машины. Кстати, а можно ли писать код для каких-нибудь микроконтроллеров на java?
UFO landed and left these words here
о, привет!
ты не мог не объявиться в этой теме!
(я grubbka из жж)

2all: кому по душе кондёры и резисторы — почитайте его жж )
(и камюнити тоже)
упс, судя по вкладу и карме, этого товарища знают хорошо
(растворяюсь)
UFO landed and left these words here
UFO landed and left these words here
Вопрос не в том, можно ли, а в том, есть ли смысл. То, что это однокристальная ЭВМ не говорит о том, что это полноценный компьютер. Туда и ось в принципе не нужна, т.к. он затачивается под выполнение конкретной задачи в конкретном устройстве. Именно поэтому такое распространение получили именно 8 битные МК — для задач управления их возможностей более чем достаточно. А теперь представьте зачем в этой области нужна переносимость. С кофеварки на чайник код переносить?
UFO landed and left these words here
в далёких начальных 90-ых, я работал «на втором конце провода» за персональкой, а моими коллегами были классные мужики, уоторые похое на зубок знали команды C51, и правил свои программы прям в образе ПЗУ. Так вот, они предпочитали С и PL-1 (или там PL-M? не помню). Просто потому, что удобнее. Компилятор делал гораздо больше работы сам, чем если писать на ASM.

Java — это следующий шаг удобства для разработчика. Насколько оно оправдано в 8-ми битных железках, я не знаю. Но насколько я помню, разрабатывали Java, именно как инструмент для встраиваемых систем.
компьютер — это сеть
а кофеварки, холодильники и телевизоры, по-хорошему, тоже должны быть в сети.
ява, помимо гораздо меньшего времени на разработку и большей надежности, даст возможность пересылать исполняемые коды по сети, производить динамическое нахождение устройств, прозрачное обновление кода и еще много-много чего вкусного. именно для этого она и создавалась
>прозрачное обновление кода и еще много-много чего вкусного
Вы хотите, чтобы на ваш холодильник прозрачно трояны зашивали? ;)

А теперь кроме шуток. Как вы думаете, почему в МК не используют, например, C++, а только С? Для чего вообще вводились концепции ООП? Чтобы облегчить работу программистам при написании больших программ. Насколько большая программа может влезть в 8 Кб памяти данных?

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

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

А теперь о главном. Многие люди, искушённые в программировании, с временем начинают интересоваться железом (в частности МК). И на первых порах создается иллюзия, что раз на МК можно писать хоть на С, хоть на бейсике, то он мало чем отличается от x86 со всеми его ОСями и виртуальными машинами. На самом же деле чтобы заниматься контроллерами нужно в первую очередь быть хорошим схемотехником, а уже потом неплохим программистом. Это уровень железа, это потенциалы на ножках, здесь впервые телом начинаешь ощущать физический смысл размерности переменной. (да, и еще здесь нет 10к слоев ядер ОСЕй, библиотек и виртуальных машин. Какой потенциал подал на ножку — такой и будет.) Поэтому, если хочешь решать конкретные задачи управления для абсолютного большинства невычислительных устройств — учимся отвыкать от прелестей ООП.
дело в том, что техника не стоит на месте. даже на кустарном уровне люди постепенно уходят от «подачи потенциала на ножку», тем более когда речь идет о массовых фабричных изделиях.
контороллеры общаются по стандартным интерфейсам, типа USB/Ethernet и т.д.
именно в этом случае начинает замечательно работать Ява. и 8кб памяти ей совсем не мешает. спецификация Java Card существует уже лет 8
Существуют встраиваемые компьютеры с Java-машиной. А еще есть Java для контроллеров.
Я впринципе могу рассказать как делал считыватель RFID-карт (что используются в большинстве офисов) на АтМеге 8 -)
Почитал про микроконтроллеры — зацепило. Когда-то писал на Ассемблере простые утилитки. С контроллерами вроде тоже все ненамного сложнее.
Намного проще. Там даже мудрить то нечего. ЯДро и простейшая периферия.
Есть карточка, есть формат хранимых данных. Нужно создать устройство, способное принять этот код, обработать его и передать дальше на центральный контроллер.
я тоже делал ;) на PIC-е
кстати, если кому надо, мой имеет открытый SDK — spnx.ru/reader_eh.php
Опишите еще взаимодействие с USB, правда тут насколько я понимаю нужен еще готовый USB-контроллер?
бывает что USB интерфейс встроен в чип как одна из функций.
а бывает что ставят отдельный переферийный процессор, который дает USB, а с этим переферийным процессором интерфейс очень простой — обычный последовательный (как COM-порт). на таких же переферийных процессорах делают шнурки для сотовых
Необязательно, господа из Objective Development, создали програмную реализацию USB для avr микроконтроллеров. Впринципе работает вполне сносно, на сайте есть достаточно примеров и готовых устройств.
Вот, кстати, очень интересная тема. Думаю, что когда закончу учиться на программиста — пойду становиться промэлектронщиком. Уж очень роботизация меня заводит. Я так понимаю, что разработка печатных плат не сложнее программирования, по крайней мере принципы те же. Только работается с параметрами электричества, а не напряжения.
К чему это я все. Во-первых, пожалуйста, поправьте меня, если я не прав, а во-вторых, может кто-нибудь посоветует качественную литературу по этому поводу? Буду безумно благодарен.
1) прежде всего нужно разработать схему. в большинстве случаев разработка печатной платы довольно проста, ставишь элементы (резисторы, конденсаторы) в нужные места, а программа автоматически их соединяет проводниками (автотрассировщики), в частности материнские платы разведены автоматически и только потом подправлены вручную где надо). Одно и двухсторонние небольшие платы можно самим нарисовать в программах, их разработка не требует расчетов, скорее это такая головоломка.
2) судя по всему те расчеты о которых вы говорите это относится к разработке электронной схемы. в большинстве простых устройств расчеты не выходят за закон ома. Более серъезную информацию п расчетам можно найти в учебнике электротехники. Также рекомендую почитать Хоровиц, Хилл, «искусство схемотехники».
3)меня самого увлекает разработка, но спешу остудить пыл, разработка промышленной электроники преследуют кипы ГОСТов, тонны требований надежности, цены, технологичности, электромагнитной совместимости, долговечности.
О роботах:
habrahabr.ru/blogs/selfmade_robot/

А вообще будь! Электронщиков реально не хватает. Я когда закончил универ так меня были готовы с руками оторвать и взять на моих условиях.

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

Да крупные градообразующие предприятия почти мертвы, это факт. Но есть куча частников.

Производители пластиковых окон — у них у всех одни и те же автоматиизрованные линии

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

и таких примеров очень много.
Да контроллеры это вещь!
Если не ошибаюсь есть еще DSP контроллеры, которые очень широко применяются в серьезных девайсах. типа авиа приборы и тому подобное!
DSP — Digital Signal Processing — цифровая обработка сигналов, да, они много где используются, но работа с ними несколько иная, там больше математики и ассебмлера.
Давно хотел про это человеческим языком почитать, побольше примерчиков бы :)
«На тех форумах, что я обитаю»
а можно пару линков на хорошие форумы по теме?
Спасибо!
очень интересно было читать!
скажите, а насколько серьезные знания в электронике должны быть, чтобы этим заниматься?
программировать умею, а вот паять не особо…
«а насколько серьезные знания в электронике должны быть, чтобы этим заниматься?»
Закон Ома, понимание что такое цифровая и аналоговая электроника, общее представление о схемотехнике. Это в случае если схемы готовые брать). Изготовление печатных плат можно зашарить уже в процессе.
Так что если есть желание и время, начать не проблема!)
Интересно, может пора уже написать статью по сборке простейшего робота?
Ох как приятно, что мой алгоритм случайного блуждания по цепи Маркова используют следующие поколения.
Вот эти таблицы случайного блуждания в данных целях были предложены именно мной. Ну это я выпендриваюсь просто.
Весь блог этому и посвящен.

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

Схема, плата, прошивка. Технология изготовления плат.

Или под нулем вы понимаете отливку деталей из пластмассы и пайку микросхем на дискретных компонентах? ;)
Нет, у вас, как мне кажется, идет описание того, что делаете вы (пусть и с выкладыванием схем). А для новичка нужны указания что должен сделать он чтобы у него получилось.
Да, так и есть. Ничего не утаиваю, но и как закручивать отверткой болты в клеммнике разьяснять не собираюсь. =)
Начинал с чтения ресурса avr123.nm.ru. Там достаточно специфический стиль изложения, но зато много полезной информации о том как начать с нуля.
Спасибо, добавил в закладки, как раз в этом году в университете будут микроконтроллеры. Как вижу, тема интересная, буду постигать.
Скорей всего будете ассемблер изучать. Либо MSC 51 (что вероятней) либо AVR. Если АВР то easyelectronics.ru содержит учебный курс по этому контроллеру :)
интересно бы узнать, какой есть софт для эмуляции контроллеров? отладку на контроллере не сделаешь, а постоянно перезаписывать микросхему замучаешься
для атмеловских МК компания выпускает бесплатную программу AVR Studio. там можно хоть пошагово прогонять программу, на ходу меняя значения регистров. А так я большую часть отлаживаю в PROTEUS
Для AVR я использую программу VMLAB. Из основных преимуществ: пошаговый отладчик, осциллограф выводов контроллера (рисует графики изменения состояния выводов по ходу выполнения программы), интегрирована с компилятором ассемблера, бесплатная. Мне пока не удалось полноценно интегрироваться с компилятором Си (чтобы подсвечивал при выполнении строку кода), но поскольку я больше на асме пишу, это не особо напрягает.
C протеусом и прочими виртуальными отладчиками только осторожней :) Не доверяйте им на 100% Часто схема отлично работающая в отладчике не работает на практике и наоборот.
+1. уже зарекся верить протеусу в системах, сложнее моргания светодиодами на ножках, а уж если речь идет об аналоговой измерительной технике — совсем верить нельзя. Никому верить нельзя :-)
Многие контроллеры поддерживают отладку через JTAG т.е. подключаешься этим JTAG адаптером к контроллеру и пошагово все отлаживаешь прям в чреве реального устройства. Также появился новый интерфейс — DebugWire это вообще однопроводное решение.
Когда надоедает чистое программирование и хочется что-то сделать руками — МК для программиста самое то, ИМХО. Во-первых увлекательно, когда «оно» мигает или ползает, а во-вторых и для чего-то полезно может быть.

Я вот на AVR 8битных сейчас делаю «умный дом» в простейшей версии, возможностей этих маленьких чипов вполне хватает, а по сравнению с компами меньше объем программы — больше надежность.
Когда-нибудь этот парсер починят? Или можно его хоть как-то для своих сообщений отключить? :(
Просто, вопреки народной мудрости, заразен на только дурной пример.
Отличная статья! Я именно сейчас понял, что хочу попробовать это :) Сам учусь в техническом ВУЗе, с физикой связан. Ассемблер для x86 знаю хорошо. Все эти порты, напряжения понимаю. В общем база некоторая есть.

Можно ли Вас попросить в следующей статье упомянуть, что нужно для того, чтобы собрать это всё? Ну кроме самого констроллера и компилятора. Там проводки, паяльник, что ещё?:)

Буду ну ОЧЕНЬ признатаелен.
По минимуму:
паяльник (лучше не более 40-а ватт),
флюс (канифоль),
припой (ПОС-61),
мультитестер,
программатор,
микроконтроллер, ATMega8/ATMega16 в DIP корпусе (лучше взять сразу пару),
макетную плату,
панельку
россыпь резисторов разного номинала, светодиодов (для нача хватит),
монтажный провод (например можно добыть из LPT удлиннителя)
А программатор в данном случае зачем? Простите за глупый вопрос :) Мультитестер я так понимаю для «прослушки» цепи? И что за панелька?
Программатор, чтобы зашить программу в МК.

Панелька это разъем для МК, подобие сокета на материнской плате.
Рекомендую такую для меги 16/32: TRL-40.

Мультитестер вещь просто незаменимая. Да для проверки нужен.
о том как паять, как делать платы — есть на портале licrym.org Статью по пайке я хочу перенести сюда.

что бы начать нужно:
паяльник на 25 ватт (можно 40), макетная плата (продается в радиомагазинах, такая плата из дырочек с шагом 2,54 мм, выводы соединяют куском провода.), нож и пинцет. Ну и сам микроконтроллер еще. В следующей статье я в заголовке дам ссылки на необходимые для создания технологии (пайка и лазерно-утюжная технология изготовления плат).

Прошу на сайте licrym.org читать статьи и писать мне, чего нехватает и что нужно раскрыть поподробнее — я по мере возможности буду исправлять и дорабатывать.
Хорошая идея упомянуть в статье и дать ссылки. Буду ждать! Сайт конечно почитаю.

У вас какой паяльник(фирма-производитель, модель)?
пока псковский на 25 вт. и китайский какой то CT-BRAND на 35 ватт. мои паяльники как раз на фотках в статье)
UFO landed and left these words here
Нет. Вам потребуется установить avr-gcc, binutils-avr, avr-libc
Но с отладкой сложнее чем под win.
В качестве IDE можно использовать eclips с avr eclipse plugin'ом
Забыл еще сказать про avrdude.

А вообще гугл выдает довольно много ссылок по запросу «avr mac».
Впринципе вс теже пакеты что и для линукса.
UFO landed and left these words here
если знаете английский язык то почитайте материалы на arduino.cc программная часть вместе с прошивальщиком бегает под маком, а разводка плат доступна бесплатно.

для заливки прошивки в микросхему опенсорсниками используется программа avrdude, скорее всего есть порт под мак. Компилировать программу можно AVR-GCC.
Лапки зачесались… хочется сделать что-то такое, чтоб бегало, ездило или хотя бы время показывало
… и прогноз погоды. :)
Да… надо ещё и разные электрические науки поизучать, а то я закон Ома не помню
… не говоря уж про остальное...))
>В 1980 intel уже выпускает первый микроконтроллер
Неправда, в 1976. www.cpushack.net/IntelMicrocontrollers.html#48

>Около 55% проданных в мире процессоров приходится на 8ми битные микроконтроллеры.
Меньше. Уже меньше 40% и в перспективе будет уменьшаться. www.edn.com/article/CA502421.html

>Таким образом микроконтроллер имеет гарвардскую архитектуру, т.е. раздельные памяти данных и программ.
Вы это о чем? Вы о каком м-ре говорите? Почитайте про модифицированную гарвардскую архитектуру, про фон-нейманскую…

>Естественно без холивара не обошлось и тут.
При чем здесь это?! «конкуренция» == «священная война» ?!

>Исторически основной язык – ассемблер.
Основной язык — это Си. Если мы конечно говорим о сегодняшнем дне и если под словом «основной» имелось ввиду наиболее часто используемый… И ассемблер — это не язык, а инструмент перевода мнемоники языка ассемблерА в машинный код. И говорят «язык ассемблерА». И, как правило, на практике язык ассемблера необходим для низкоуровневой оптимизации, а также для проектирования компиляторов ЯВУ.

>Глобально они от PIC и других не отличаются, различия лишь в параметрах (скорость, количество команд, памяти, наличие перефирии…).
OMG! Понятие «архитектура» вам ведомо?

У меня вопрос: вы кроме AVR что использовали на практике?

2 all: В общем, не советую использовать данную заметку как начальную точку погружения в часть мира разработки цифровой электроники ( в мир микроконтроллеров )…

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

суть не в этом, суть в том, что «Студент — это не гусь, которого нужно нафаршировать, а факел, который нужно зажечь». //И.Е.Тамм. Поэтому неважно, какой указан год, или как точнее сказать, если материал заинтересовал читателя и он пошел почитать «что нибудь еще» по теме значит он выполнил свою функцию. Статья — запал, а не справочник.
всегда это было интересно. с детства проводки и моторчики. но… руки… ну не заработал у меня в свое время детекторный приемник.
потому — программист: D
А еще есть страшные звери именем ПЛИС, в которых можно самому сделать свой собственный процессор. А на одном физическом кристалле таких процессоров может быть несколько :-)
Есть.
Но мне не верится, что найдется человек не осиливший АВР, осилит ПЛИС.
Хм… Это сложный вопрос. Я вот верю, что можно всерьез заниматься ПЛИС и не уметь программировать микроконтроллеры — там языки слишком разные :-)
Only those users with full accounts are able to leave comments. Log in, please.