Программирование микроконтроллеров с нуля

Добрый день

Заинтересовался разработкой для микроконтроллеров (ARM, AVR, MSP430), хочу узнать побольше, а без практики понятное дело буду топаться на месте.

Не подскажете ли что нужно для того чтобы начать?

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Не менее перспективной является разработка под ПЛИС. Однако здесь программистом нужно быть меньше, чем в случае с микроконтроллерами, нужно знать совсем другое — больше знаний по «железу», схемотехнике, микроэлектронике и т.д..Язык разработки — один из линейки HDL — языки описания аппаратуры, например, VHDL (ни на что не похож) и Verilog (похож на Си). Несколько сред разработки, обычно каждая крупная компания-производитель ПЛИС разрабатывает свою среду. Мне известны Active-HDL от Atmel и очень мощный Xilinx IDE.

>>> Не менее перспективной является разработка под ПЛИС.

У нас? Если у нас, то нет, не является. Если за рубежом, то там это уже давно сформировавшиеся отрасль.

>>> VHDL (ни на что не похож)

На паскаль похож

>>> Active-HDL от Atmel

от Aldec?

>>> и очень мощный Xilinx IDE

Xilinx ISE?

да, правильные исправления. У нас конечно ничего , что касается железа, не развито, это только, если хотите работать за границей, ну и ПМЖ.
По схожести языка я говорил не столько про синтаксис, а скорее про морфологию. Всё-таки Verilog был ориентирован на СИшников, чтоб им было легче, в нём больше конструкций и функци, чтоб работать c железом «мягко», как будто это элементы программы. В VHDL сразу понятно, что речь идёт именно о железе, интегральных схемах, регистрах, сигналах, булевой логике и т.д.

На 3 курсе пришел на завод в КБ стажироваться «за еду», и стал писать под C51, на входе было знание C, и трех ассемблеров, нужный четвертый выучил на месте. Плюс схемотехника.

Поискать книжек про микроконтроллеры... Шпак был такой.
Да и вообще много русскоязычных книг есть.
В целом AVR как архитектура уже отживает. Дешевле купить 32ух битный cortex-m0 cortex-m3 с бортовым USB и ethernet’om за 15-40 грн. и 64ю ногами... чем платить тоже за 8ми битную мегу.
Советую начать с установки протеуса (Proteus) и изучения стандартной переферии...
Компилятор avr-gcc (winavr). Также неплохо было бы пройтись по древнесайтам типа
avr123.nm.ru
proteus123.narod.ru
В принцыпе если запастись терпением и фанатизмом за пару недель освоите.
В целом я бы смотрел в сторону STM32 lpc1*** at91sam* и проч.

Но только после изучения AVR. Детальки покупаю на imrad.kiev.ua

Протеус — зло!

Всю отладку можно проводить 3-я светодиодами и компортом.

Дешевле купить 32ух битный cortex-m0 cortex-m3 с бортовым USB и ethernet’om

А теперь расскажите человеку, как ему распаивать ваш кортекс с USB и Ethernet, которые обычно идут в весьма мелких корпусах. А AVR-ки младших семейст, все в DIPах, тут все на breadboard (гуглим) собрать можно.

Протеус зло. А вот запаивать без проблем. При наличии не совсем кривых рук с шагом 0.5-0.4 паяется без проблем даже обычным паяльником. С BGA чуток сложнее, но тоже решаемо — китайская паяльная станция стоит «аж» 400грн. Это если говорить про опытные образцы. А если речь идет о более-менее приличной партии, там где используется автоматический монтаж, то там DIP вообще очень нежелательно.

Думаю что автор темы не станет заморачиваться с изготовлением плат под BGA корпуса.

Зато взяв микросхему в DIP корпусе и breadboard, за вечер можно собрать любительскую поделку с моргающим светодиодом. А там дальше уже человек сам решит чего он хочет.

Коментар порушує правила спільноти і видалений модераторами.

Коментар порушує правила спільноти і видалений модераторами.

Да протеус зло но научиться светодиодами моргать и изучить переферию можно... На деле, в продакшене то что в протеусе — слишком идеализировано. Особенно если нужно разрабатывать какие-то real-time плюшки для которых важна каждая фаза. (pi-регулятор тому пример)
*QFP корпуса более чем паябельны...
easyelectronics.ru DiHalt отжигает.
BGA паябельны... но только мелкие.
Максимум что мне удавалось так это PBGA208 плата 3ёх слойная на фоторезисте за 2 дня.

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

и травить плату в хлорном железе

Можно кипятить в медном купоросе.

Не, ну я имел ввиду может есть какие гибкие фольгированные пленки формата А4, на которых на струйнике или лазернике можно напечатать печатную плату, а потом — в травильную ванночку :)

Ну додумались же печатать на лазернике плату на пленке, а потом положить на фольгированный слой платы, и проутюжить

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

Так а мы на пленке делали, на которой делают в типографии оригинал-макет. наверное, просто не было бумаги

3-х слойка в домашних условиях... сурово... снимаю шляпу.

Ну вот прям так только АВР :) У нас одного джуна сразу за LPC2148 посадили... и ничего — справился.

Ну дык, если ему дали уже готовый инструментарий, попросили дописать небольшой функционал, то тут что ARM, что AVR, пофиг. А вот если ему принесли новую плату и сказали — «оживляй!», и он таки оживил, то таки да, крутой у вас джун))

Да нет, почти весь проект сам сделал. Правда на основе готового порта FreeRTOS. Инструментарий в смысле j-link + iar был. На счет крутой... не сказал бы... ну может "выдающийся да и только"©. :)

Завидую я вам... у меня простой ft2232 борд и arm-gcc =D

С конкретного проекта. По другому никак. Ну можете какую-нибудь evilution board взять, поморгать на ней светодиодами, но это больше так — для уверенности в себе. С какого именно МК начнете совершенно не принципиально. А по конкретным вопросам лучше обращайтесь на electronix.ru, раньше еще на телесистемах неплохой форум был, но сейчас там помойка.

Программатор + какой-нибудь starter kit.

Чтобы изучить основы, «поморгать светодиодами» можно что-нибудь на основе AVR — контроллеры дешевые, есть USART, I2C — можно поиграться с датчиками, LCD. Во многих моделях есть встроенный АЦП, во всех — компаратор. Много информации в сети, даже на русском языке. Также есть куча библиотек для работы с различными устройствами.

Для того, чтобы работать с embedded linux будет нужен ARM.

Перед покупкой starter kit обязательно ознакомьтесь со способом прошивки МК ( некоторые программаторы подключаются через LPT и COM ) и комплектацией (я из-за своей невнимательности после заказа starter kit еще неделю смотрел на демо-прошивку, пока по почте ко мне шел недостающий программатор).

Не подскажете ли что нужно для того чтобы начать?

Как это ни странно, но нужно желание.

Для быстрого старта можно взять arduino, правда стоят они дурных денег (нужно брать б/у), но для «попробовать», самое оно.

www.evodbg.com — тут можно взять неплохие киты на arm.

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

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

зачем стартер кит за 200 баксов?
Asus WL-520gC, на борту уже есть wi-fi, 4 эзернет порта, UART.
куча светодиодов что бы "помограть..
на него портирован OpenWRT (полноценный линух)

играйся-нехочу за 250 грн

При чем здесь микроконтроллеры?

причем здесь стартер киты?

или Вы полагаете, что роутер работает на паровом двигателе?

причем здесь стартер киты?

Производители МК выпускают стартер киты к своим изделиям. Если хочешь научиться работать с МК, то единственный вариант это обзавестись «железом». Следовательно, нужно купить стартер кит (или сделать плату самому).

или Вы полагаете, что роутер работает на паровом двигателе?

Если брать конкретно роутер, то там будет линукс и еще куча софта. Да, оно будет собрано под целевую платформу, но это будет обычный десктопный линукс. С таким же успехом, можно собрать openwrt под x86 и развернуть его под qemu, тогда по деньгам еще дешевле получится.

не троллинга ради, а чем отличается обычный десктопный линукс, от необычного недесктопного линкуса?

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

Ничем не отличается.. В том то и проблема. Если человек хотел поиграться с линуксом то он бы написал «Я хочу пособирать линуксы, посоветуйте что-то», вместо этого он написал то, что он написал. Программировать под линукс это еще не значит программировать под контроллеры.

Как вы прицепите, скажем, температурный датчик (тупо — обычный терморезистор) к роутеру? По Wi-FI, по TCP/IP, или будете перепаивать роутер? :)

На роутере есть серийный порт?

Да можно и гвозди забивать ноутом, но целесообразно ли? Ваш термометр в виде роутера в карман не влезет, и работать он будет только при наличии свободной розетки, если в рюкзаке не носить аккумулятор :)

Так а на картинке — цифровой датчик, а я вам говорил про аналоговый.

Я практически уверен что там есть TxD и RxD, но я сомневаюсь в наличии DTR

Ну значит вашу приблуду уже будет сложнее прицепить.

matt, микроконтроллер — это микросхема. Если дружить с паяльником — можно десятки. если не сотни элементов схемотехники заменить им одним. Стартер кит — это комплект от производителя, чтобы «стартануть»: программатор, ПО, иногда — мануалы и сами микроконтроллеры. Есть еще продакшн кит — это уже посерьезнее и подороже: набор для серийной штамповки прошивок.

Струдомпрасцал Вашапраграм, а роутер это не микросхема? с полноценным микроконтроллером? и если дружить с паяльником то там ничего интересного подцепить нельзя?

где собственно уже выведено несколько интересных портов ввода/вывода (за 300 грн будет еще и УСБ порт)?

и чем плох вариант роутера для старта? где уже написаны самые подробные инструкции по отладке, прошивке, открыты мануалы по камню и прочее?

Роутером вообще-то если по башке стукнуть, то и убить можно, так что он отнють не микро. Да и на плату его не припаять (не тот форм-фактор :)
Вы хоть вообще представляете, зачем используют микроконтроллеры?

p.s. А наличие USB контроллера помнится, было еще в древних PIC18, и дешевле, чем 300 грн

нет, первый раз слышу

расскажите!

Роутером вообще-то если по башке стукнуть, то и убить можно, так что он отнють не микро. Да и на плату его не припаять (не тот форм-фактор :)

кстати, иногда все таки интересуйтесь вопросом, прежде чем что то утверждать

www.docstoc.com/...Wireless-Router

Ну согласитесь, что изучать программирование микроконтроллеров, используя хакнутый роутер — это извращение!

Это все-таки скорей для желающих разобраться embedded linux.

Підписатись на коментарі