PDA

Просмотр полной версии : С чего начать изучение микроконтроллеров?



Andruxa
16.09.2010, 12:32
Помогите советом- с чего начать изучение микроконтроллеров?
Может кто поделится личным опытом освоения данной сферы, посоветует
литературу.

Зы.Extra-PIC уже готов.

RA0ANB
16.09.2010, 12:56
http://ra4a.ru/load/20

ut1wpr
16.09.2010, 13:48
Помогите советом- с чего начать изучение микроконтроллеров?
Может кто поделится личным опытом освоения данной сферы, посоветует
литературу.

Зы.Extra-PIC уже готов.Ответ невозможен без понимания, какая поставлена цель. Я это серьёзно. Разные цели потребуют разных подходов и разных глубин освоения.

Andruxa
16.09.2010, 16:09
Цель- не только просто повторять чьи-то разработки, но и хоть немного разбираться в програмном коде.
Вообще вопрос встал после просмотра нескольких книг-вроде все говорят МК это просто,
а подход к изложению кардинально отличается.В некоторых источниках предлагают изучать черный ящик.
Вот ихотелось бы узнать, кто с чего начинал изучение и их рекомендации.

RA0ANB спасибо за ссылочку!!!

ut1wpr
16.09.2010, 16:42
Вы встали на скользкий путь! :)
Единственный способ "разбираться в программном коде" - изучить его. Аналогия - языки общения. Понять, что тебе говорят на непонятном языке можно только выучив его.
Однако чисто абстрактное программирование сильно отличается от платформозависимого. Т.е. надо всегда знать и помнить, что может, а что не может тот тип процессора, которму Вы пишете последовательность команд. Как вывод. Собравшись писать программы для микроконтроллеров, Вам придётся параллельно свернуть две (может быть и больше) горы. Изучить, что же такое, этот самый микроконтроллер. И научится заставить его выполнять то, что Вы хотите, а он может. За пару недель (как это утверждают многие советчики) вряд-ли это произойдёт. Но если Вас манит этот мир "больной головы и свинцовой задницы" - велкам! Сейчас есть и литература, и люди вокруг подобрались все добрые, отзывчивые (с) красноармеец Сухов - "Белое солнце пустыни". :)
Есть и форумы и сайты. Как для начинающих, так и для профессионалов. Но это потом. Для начала надо понять, "анафигаономненадо?" :)

Andruxa
16.09.2010, 17:03
На счет пары недель, да и месяцев наверное, я с Вами абсолютно согласен.
А по поводу прогаммирования МК, что Вы можете сазать о программе Flowcode?
Если работали- Ваши впечатления и как она годится для новичка?

ut1wpr
16.09.2010, 17:38
Никогда не работал. Но начать можно на чём угодно. Хоть на кубиках. Хочу заметить, чем проще система программирования МК (читай "генератор исполняемых кодов") тем менее рационально она расходует ресурсы самого МК. И быстро наступит момент, когда для простого "шевеления ножками" придётся брать слишком мощный МК, создавая негативное впечатление от свойств этого самого МК. :)

VikR
16.09.2010, 19:19
Мой опыт в программировании МК начался с того что в руки мне попал синтезатор от промрации. В изделиии он управлялся от БЦВМ и мне надо было заставить работать его автономно в моем трансивере. И это пункт 1-ЦЕЛЬ коллеги правильно говорят. Прочитал цикл статей в журнале РАДИО ( примерно за 2002г) там рассматривался PIC16f84. Изготовил программатор, скачал MPLAB и описание МК с системой команд. Это пункт 2 - выбор контроллера и соответственно среды разработки. Далее постановка задачи, что же мне нужно от этого синтеза - установка частоты, выбор диапазона и шага перестройки, на этом остановился, для начала. Следующий шаг - составление алгоритма.
Тут как как в книжках, рисование квадратиков переходы и т.д. Встал вопрос а как же я буду вводить и выводить информацию в, из МК. После поисков в инете остановился на клаве на основе 155ИД3, но она показалась мне слишком большой и я применил две шт 561КП2 получилось 16 клавиш и расход выводов МК всего 5. Вывод сделал на 595-х регистрах, мне надо было выдавать в синтез 28 разрядов двоичного кода и опять экономия вывод в МК, всего 3 - CLC, DATA, и строб. Язык программирования- ассемблер почему он?, а потому что Си не влез бы в выбранный PIC а поставленная задача была не слишком сложной.И поехало, листочек с системой команд перед глазами и комп с запущеным MPLAB и понипрогом. Сначала опрос клавиш, вычисление кода частоты, формула имела примерно такой вид- (А+В)*С/1000+(A-C) и вывод в регистры, подпрограммы умножения, деления и преобразования десятичного числа в двочно-десятичное взял с сайта производителя МК. Какждый этап разбивал на подэтапы. Например опрос сначала одной клавиши- написание кода,ассемблирование ,отладка в MPLABе, запись в МК, проверка в реале. Итак потихоньку двигаемся вперед, узнаем много нового и в конце, когда прога написана, отлажена и работает понимаешь что ты м...к и почти все надо было делать не так. И МК выбрал не тот и алгоритм изменил бы и СИ надо было учить. Но самое главное здесь то что ты задумывал в начале работает. Дерзайте и все у вас получится!

Andruxa
17.09.2010, 18:30
Спасибо всем откликнувшимся!
Буду дерзать.
Честно говоря, думал ответов будет больше. Неужели больше некому поделится опытом?

Sufa
17.09.2010, 19:24
Если интересен Си для AVR-ов, то http://123avr.com/ , достаточно доступно и понятно описано. Мне этого курса было достаточно, что бы написать и отладить программу вывода информации ГЛОНАСС приемника на ЖКИ с помощью ATmega128, в течении трех дней.

ut1wpr
17.09.2010, 21:13
Спасибо всем откликнувшимся!
Буду дерзать.
Честно говоря, думал ответов будет больше. Неужели больше некому поделится опытом?А что вы рассчитывали увидеть? Полный курс лекций по неизвестному предмету? Да вы ещё и вопросы не сформировали для себя, не говоря уже для остальных, а уж жалуетесь на недостаток ответов. Здесь есть люди, которых с полной отвественностью я отношу к категории серъёзных профессионалов. Они в состоянии ответить практически на любой ваш вопрос. Но где вопрос? Или вот это
Помогите советом- с чего начать изучение микроконтроллеров?
Может кто поделится личным опытом освоения данной сферы, посоветует
литературу. вы считаете вопросом?
Вам уже начали отвечать. Идите дальше, читайте, разбирайтесь, будут непонятки - старайтесь "погасить" всё сами. И уж если совсем в тупики - тогда велкам за помощью. Но вести за руку, тыкать в углы, жевать и помогать проглатывать не станут ни на одном из форумов. Нигде. То, к чему вы подошли очень близко, есть труд, труд тяжкий, требующий упорства, терпения,и, если хотите, некоего таланта. Уж про начальные знания я молчу. Если вы чувствуете, что немножко рано вам к этому, займитесь чем-то другим. Мир радиолюбительства бесконечен, как вселенная...

Andruxa
22.09.2010, 12:33
вести за руку, тыкать в углы, жевать и помогать проглатывать не станут ни на одном из форумов. Нигде.

Вот этого я точно не просил делать.

За остальное- спасибо! Дело движется.

ut1wpr
22.09.2010, 14:00
Отлично. Значит скоро нашего полку пишуших и думающих на ЯВУ прибавиться! Это не может не радовать.
Параллельно вопрос, как у вас с логикой? Я имею ввиду Булеву логику. Весьма нужная штука, без учета самих языков. В блоьшинстве своём простые задачи на МК решаются линейным программированием в виде ветвлений по условиям. Вот именно условия и важно решать логически. А то иногда себе таааакое поставишь, на следующий день ужасаешься - сплошные противоречия :)

khach
22.09.2010, 14:55
Наверно с покупки отладочной платы под какой- либо современный АРМ. STM32 lpc1700 итд. Установить Кейл или ИАР и прогнать hello word, написанный на С. Потом брать куски кода с интернета и собирать свой проект. Иногда смотреть на результаты компиляции в ассемблере и пытаться понять, почему так. Самое интересное, что потом переход на старые архитектуры (AVR, PIC, 51) для человека, который никогда перед тем не имел дела с микроконтроллерами, но до этого программировал на компе, происходит гораздо легче. Переход на старье был конечно вынужденный- нового программиста посадили сопровождать древний проект.

slavector
22.09.2010, 15:29
А на какие радиолюбительские нужды может не хватить старья типа AVR !!?? :smile:
Писать свой Андроид!?

khach
22.09.2010, 18:24
Андроид ненадо. А вот посмотрите на темы про синтезаторы гетеродинов, частотометры самодельные. Авторы прошивок почти всегда говорят- все, места во флеши нет. Всякие вкусности, хотелки- сжирают кучу места. А без них -"неудобно". А если хочется самоделку к компу подключить? RS232 уже подыхает, народ на USB переходит, а в перспективе на ethernet. Все последние ARMы имеют эти интерфейсы аппаратно и библиотеки для этих интерфейсов доступны в исходниках. Но в них ненадо разбираться- достаточно взять готовые примеры, скомпилить в свой проект- и уже например имеем управление трансивером через веб-страницу. Разобраться можно за неделю (проверялось в реале на "подопытном кролике" 50 с лишком лет от роду, который перед тем последний раз программировал на ЕС ЭВМ).

Andruxa
23.09.2010, 17:11
Параллельно вопрос, как у вас с логикой? Я имею ввиду Булеву логику.

Если речь идет о бинарных И, ИЛИ, НЕ и их комбинациях, построению логических схем по заданному условию (синтез)- тема вроде знакомая.Надо только немного вспомнить институт.С высокоуровневыми языками програмирования, хоть поверхностно, тоже знаком.
Наибольшую трудность для меня представляет ассемблер и работа с регистрами.
Пока что собираю простенькую макетку со светодиодами, кнопачками и семисегментным индикатором под PIC16f84.

Добавлено через 10 минут(ы):


RS232 уже подыхает, народ на USB переходит, а в перспективе на ethernet. Все последние ARMы имеют эти интерфейсы аппаратно

PICи имеют аппаратную поддержку RS485,CAN,Ethernet.
ВОПРОС: используется ли там ядро ARM?

ut1wpr
23.09.2010, 21:25
Все же рекомендую больше пользоваться гугл-поиском. Хотя бы не будет вопросов типа наличия АРМ-ядра в ПИКе (http://www.gaw.ru/html.cgi/txt/publ/micros/arm.htm). :)

khach
23.09.2010, 21:36
PICи имеют аппаратную поддержку RS485,CAN,Ethernet.
ВОПРОС: используется ли там ядро ARM?
Нет, не используется- Микрочип пока идет своим путем- своя собственная система команд. Хорошо это или плохо- пока неизвестно. Но в этом случае Вы намертво привязаны к продукции Микрочипа. Отсюда и прошлые религиозные войны PIC vs AVR- что круче?
Притом многие другие 8-битные архитектуры остались у нас практически неизвестны, а их было немало. После изучения десятого по счету ассемблера (начиная с 580ИК80 итд) оно в конце концов надоедает. У арма же основное преимущество- можно легко менять производителей микросхем, подбирая наилучшее по цене, доступности, набору периферии. Ну и в АРМе ненадо изучать ассемблер, по крайне мере в начале освоения архитектуры. Если посмотреть листинги весьма сложных программ, вплоть до операционных систем, то там ассемблерных команд только несколько десятков строчек- весь остальной код на С написан.


Все же рекомендую больше пользоваться гугл-поиском. Хотя бы не будет вопросов типа наличия АРМ-ядра в ПИКе (http://www.gaw.ru/html.cgi/txt/publ/micros/arm.htm). :)
Табличка по ссылке устарела очень сильно- сейчас она раз в 5 длиннее. :-)

ut1wpr
23.09.2010, 21:57
Я вообще-то не длину списка хотел показать, а работу Гугл-поиска. Если поплотнее присесть, головы не хватит всё это вобрать. :)
С одним из ваших утверждений позволю себе всё-таки не согласиться. Отказаться от изучения системы команд (читай ассемблера данного МК) - обречь себя на ущербность и ограниченность в разработках. Роющий яму обязан знать возможности своей лопаты. :) Согласен, трудно. Что тут возразишь? Сам начинал с i8008. И далее ни одного камня без понимания его архитектуры (и системы команд) не было.

khach
24.09.2010, 10:54
Отказаться от изучения системы команд (читай ассемблера данного МК) - обречь себя на ущербность и ограниченность в разработках.
А вы его и так изучите. Автоматически. Когда будете проходить свой код под отладчиком, поймав свой первый эксепшн (вылет управления в ловушку по причине неправильного обращения к памяти, некорректного адреса и еще по сотне разных причин). Только учить ассемблер, глядя на рядом расположенные строки С с комментариями- гораздо приятнее. Я уже не говорю об удобстве отладки при наличии хардверного отладчика. Брейкпоинты, пошаговое выполнение на реальном железе, просмотр памяти и стека, прямое управление регистрами периферии из отладчика - после них к PICам и MSC51 трудно заставить себя вернуться, а приходится по работе. А схем хардверных отладчиков в инете уже доступно множество, доступных для повторения и покупки - клонов Jlink, ST-link итд.
Есть правда одна проблема с АРМами, о которой надо знать- на них плохо получаются частотометры. Это связанно с особенностями работы внутренних ФАПЧ тактовых генераторов.
Приходиться делать внешнюю схему пересчета скоростной декады частотометра и схему стробирования.

RN6LIQ
24.09.2010, 11:48
Помогите советом- с чего начать изучение микроконтроллеров?
Ни один микроконтроллеров я еще не ковырял. Но первое, с чего я начал познавать, что такое компьютер, это был СПЕКТРУМ и его процессор Z80. Только после того как я нашел соответствующую литературу об архитектуре процессора и самого Спектрума, и "ручками " по программировал в машинных кодах, понять до конца ничего не мог. Первые программы были в виде столбика цифр в общей тетраде. Это потом когда понял принцип, начал применять ассемблер. Ну а потом естественно пришел к Си. Не думаю что на микроконтроллере надо применять чистый ассемблер. Скорее всего нужна смесь Ассемблера и Си. Си автоматизирует многие процессы. Например, хотим вызвать подпрограмму. Что мы обычно делаем в ассемблере - сохраняем регистры, делаем вызов подпрограммы, решаем определенные задачи, восстанавливаем регистры, продолжаем дальше выполнять программу. А в Си это все делается объявлением и вызовом функции. Мало того, что автоматизируем этот процесс, так и еще и получаем меж платформенный код. Конечно ассемблерные вставки из Си программы будут нести архитектурные особенности микроконтроллера. Тут ничего не поделаешь Но вот то что код на ассемблера будет шустрее работать чем Сишный - не всегда правда. Это зависит и от компилятора и от программиста.
Короче: Я Вам советую начать с подбора хорошей и обстоятельной литературы. Иначе придется изучение проводить в потемках. Не знаю как обычно работают программеры на микроконтроллерах, но неплохо было бы иметь эмулятор его на персональном компьютере. Что бы можно было бы экспериментировать в изучении программирования с минимумом временных затрат.

R2DNU
24.09.2010, 13:06
Помогите советом- с чего начать изучение микроконтроллеров?
Может кто поделится личным опытом освоения данной сферы, посоветует
литературу.


Хорошая ссылка:

http://roboforum.ru/forum19/topic3550.html

Александр Вдовенко
24.09.2010, 20:07
Я начинал разбираться с микроконтроллерами при помощи среды разработки/симулятора VMLAB для AVR http://amctools.com/download.htm , попутно читая документацию на сам контроллер и публикации Рюмика в Радиохобби.
Главное сделать над собой усилие, и все таки осилить первый "шедевр" в виде мигающих от контроллера светодиодов:smile:

RK9AMX
28.09.2010, 10:12
http://ikarab.narod.ru/Kea_20.html Самоучитель по программированию PIC контроллеров для начинающих.
Открытая часть 287 стр., остальная инфо платная

RA4ATL
09.11.2010, 00:01
так проще понять http://www.flowcode.info/index.php?option=com _content&view=article&id=70:adcandlcd&catid=13:video&Itemid=11

RA4ATL
09.11.2010, 06:55
ктонибуть работал с этой графической оболочой

er1mf
09.11.2010, 10:18
Я уже не говорю об удобстве отладки при наличии хардверного отладчика. Брейкпоинты, пошаговое выполнение на реальном железе, просмотр памяти и стека, прямое управление регистрами периферии из отладчика - после них к PICам и MSC51 трудно заставить себя вернуться, а приходится по работе.
Гм, а что вам мешает делать тоже самое на Пике? С MSC51 - если взять от MSC51 серию от атмела, то тоже самое есть...

khach
09.11.2010, 13:45
С MSC51 - если взять от MSC51 серию от атмела, то тоже самое есть...
Ага, а потом полгода искать атмелевскую микросхему. Хватит, наелись их АРМов- сроки поставки неизвестны и неизвестно, когда будут известны. Вот и еще одна причина - когда AT91 стали труднодоступны, переразвели платку под STM32 и за неделю поправили немного код под другую перифирию. Чтоб я так когда-то мог прыгать с Z80 на MSC51 и на PIC- поставил бы ящик коньяку тому кудеснику, кто позволит это делать, не переписывая полностью программу с нуля.
Ну а изучать сейчас MSC51 архитектуру 20-летней давности- ну это особо тонкий мазохизм. Я уж не говорю, дописать к MSC51 USB или LCD экран. А с армами тупо берете либы из стандартного набора, или идешь на китайский форум за платными либами- и все через неделю работает- это с изучением контроллера LCD например, отладкой кода из либы, вылавливании в нем багов (их есть там всегда) итд..Я уж не говорю про фурье преобразование и прочую математику, хотя в свое время на MSC51 ее тоже делать приходилось.
Единственная серьезная трабла с АРМами- на них плохо частотометры получаются- приходится ставить внешнюю декаду и триггер на мелкой логике или ПЛИС.
Все это не голосоловные утверждения- по работе приходится поддерживать и модифицировать старую измерительную и научную аппаратуру на 5-6 различных архитектурах. Заниматься реверс-инжинирингом (дизасмом) прошивок приборов давно почивших производителей. Помнить эти 5-6 ассемблеров и писать на них. После этого зоопарка на АРМах отдыхаешь.