Автор Тема: Програмирование микроконтроллеров?  (Прочитано 4288 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Jimmy_Page

  • Гость
Всем привет!
Возможно вопрос покажеться глупым, но всё же...

Хотел поинтересоваться, на сколько доступно, скажем так, простому грешному инженеру аналоговой техники, самостоятельно освоить програмирование какого нибудь микроконтроллера?

Второй вопрос, сколько грубо-ориентировочно понадобиться для этого времени если скажем стабильно раз в день уделять этому часик времени после работы?

Хотелось бы услышать мнения уже опытных людей, в своё время не имевших никаких знаний в програмировании и столкнувшихся с аналогичной задачей.
« Последнее редактирование: Мая 22, 2011, 10:56:11 am от Jimmy_Page »

KMG

  • Сообщений: 3776
    • ICQ клиент - 412221711
    • AOL клиент - Mike
    • Просмотр профиля
    • E-mail
Re: Програмирование микроконтроллеров?
« Ответ #1 : Мая 22, 2011, 11:06:59 am »
Начинать советую с высокоуровневых языков, так как программирование на ассемблере, хоть и дает некоторые преимущества в скорости программы, зато требует отслеживания распределения памяти, сохранения регистров при вызовах итд.

KMG

  • Сообщений: 3776
    • ICQ клиент - 412221711
    • AOL клиент - Mike
    • Просмотр профиля
    • E-mail
Re: Програмирование микроконтроллеров?
« Ответ #2 : Мая 22, 2011, 11:20:31 am »
Насчет времени все очень индивидуально, некоторым и 5 лет в институте не помогает.
Андрей, начни, кстати очень помогает попробовать для начала разобраться в чужих программах чтобы оценить свои силы.
« Последнее редактирование: Мая 22, 2011, 12:26:03 pm от Jimmy_Page »

santa

  • Сообщений: 1404
  • с помойки банки рулят, турреты нервно курят
    • Просмотр профиля
Re: Програмирование микроконтроллеров?
« Ответ #3 : Мая 22, 2011, 11:29:36 am »
Реально надо вставить в вопрос до какого уровня чел должен освоить контроллеры, поэтому здесь очень растяжимо... То есть напимер сколько потребуется времени что бы мигнуть светодиодом? Или сколько потребуется времени чтобы записать файл на флешкарту?
« Последнее редактирование: Мая 22, 2011, 12:28:05 pm от Jimmy_Page »
теория убийца практики

slo100>slo100pt  >>  topsecret

KMG

  • Сообщений: 3776
    • ICQ клиент - 412221711
    • AOL клиент - Mike
    • Просмотр профиля
    • E-mail
Re: Програмирование микроконтроллеров?
« Ответ #4 : Мая 22, 2011, 11:49:43 am »
Чтобы что то писать нужно для начала изучить "азбуку", то есть как минимум какой нибудь язык программирования.
Изучение же собственно контроллера сводится к изучению управления его периферией (для этого достаточно даташита).

Peratron

  • Сообщений: 13579
  • GTLab - forever!
    • Просмотр профиля
    • E-mail
Re: Програмирование микроконтроллеров?
« Ответ #5 : Мая 22, 2011, 11:55:08 am »
Цитировать
Хотел поинтересоваться, на сколько доступно, скажем так, простому грешному инженеру аналоговой техники, самостоятельно освоить програмирование какого нибудь микроконтроллера?
Всё зависит от качества серого вещества в голове у этого инженера :)

В целом же, прикладное программирование существенно проще, чем аналоговая схемотехника. Надо только ухватить основные принципы.

Цитировать
Второй вопрос, сколько грубо-ориентировочно понадобиться для этого времени если скажем стабильно раз в день уделять этому часик времени после работы?
Зависит от амбиций: собрать простейший программатор, подключить его к компу и освоить редактор хотя б на уровне прошивки готовых дампов - вот программа-минимум.
А дальше - потихоньку резвиться с простейшими программками, осваивая внутренность (программную модель) избранного микроконтроллера.

Цитировать
Хотелось бы услышать мнения уже опытных людей, в своё время не имевших никаких знаний в програмировании и столкнувшихся с аналогичной задачей.
Освоил это дело именно, как аналоговый электронщик ещё на уровне интеля 4004, потом 8008. А уж потом - 8080.
Нынешние контроллеры - просто праздник по сравнению с теми временами.
Именно поэтому говорю: это проще, чем настоящая аналоговая электроника - в силу жёсткого формализма цифровой системы. В аналоге результат приблизительный, а в программе - строгий.
В аналоге нужно умело орудовать паяльником и осциллографом, а в микроконтроллере можно взять готовый отладочный комплект и забыть про паяльник.

Если начинать - то нынче очень правильно это делать с ардуино (ввиду огромного количества методического материала и готовых конструкций).

[size=16]http://arduino.ru/[/size]
Схемотехническая мантра: титцешенкохоровицехилл. Повторять до просветления...

Jimmy_Page

  • Гость
Re: Програмирование микроконтроллеров?
« Ответ #6 : Мая 22, 2011, 12:33:13 pm »
Цитировать
Реально надо вставить в вопрос до какого уровня чел должен освоить контроллеры, поэтому здесь очень растяжимо... То есть напимер сколько потребуется времени что бы мигнуть светодиодом? Или сколько потребуется времени чтобы записать файл на флешкарту?

Справедливо замечено.

Скажем, до начального уровня...
Ну например принял сигналы "1"/"0" с датчиков на определённые порты, и при определённом условии включить/выключить переферию. Ну или наример принять serial data stream и конвертировать в parallel, вычислить скважность TTL сигнала, ну  и другие, подобной сложности задачи. 
« Последнее редактирование: Мая 22, 2011, 12:34:41 pm от Jimmy_Page »

KMG

  • Сообщений: 3776
    • ICQ клиент - 412221711
    • AOL клиент - Mike
    • Просмотр профиля
    • E-mail
Re: Програмирование микроконтроллеров?
« Ответ #7 : Мая 22, 2011, 01:02:17 pm »
1. В любом случае сначала азбука, без нее просто ничего не напишешь.
Цитировать
Ну например принял сигналы "1"/"0" с датчиков на определённые порты, и при определённом условии включить/выключить переферию.
Чтение из определенного адреса(входой порт)->булевы уравнения->Запись в определенный адрес(выходой порт)
Цитировать
Ну или наример принять serial data stream и конвертировать в parallel
Большинство микроконтроллеров имеют встроенный UART, так что задача сводится к опросу регистра состояния UART пока не придет байт
Цитировать
вычислить скважность TTL сигнала
Во многих микроконтроллерах есть "Capture unit", которая позволяет "защелкивать" в регистр состояние таймера на момент фронта импульса. Далее используя эти величины для разных фронтов, методом вычитания получаем интервал между фронтами в тактах таймера. Поделив  интервал /---\ на итервал \---/ получим скважность.
Вопрос усложняется когда есть параллельные асинхронные процессы, например обработка MIDI и органов управления.
Здесь уже приходится использовать работу по прерываниям, где есть некоторые нюансы.

santa

  • Сообщений: 1404
  • с помойки банки рулят, турреты нервно курят
    • Просмотр профиля
Re: Програмирование микроконтроллеров?
« Ответ #8 : Мая 22, 2011, 01:10:46 pm »

непомню точно сколько времени я въезжал  в мигнуть светодиодом ,

 но думаю для этого потребуется неделя , и это ещё при том что  до этого
 я  программил  средненько  на ПК ,
 а вот если чел вобще не сталкивался  с программированием  вот здесь  я даже
без понятия сколько времени.........
теория убийца практики

slo100>slo100pt  >>  topsecret

Jimmy_Page

  • Гость
Re: Програмирование микроконтроллеров?
« Ответ #9 : Мая 22, 2011, 05:50:10 pm »
Я учил один семестр С++ в "вижуал студио" в рамках B.Sc по электронике, а так же два или три семестра Assembler 8051. Но всё это было давно и не правда.

Rst7

  • Сообщений: 1619
  • Мимо проходил...
    • Просмотр профиля
    • E-mail
Re: Програмирование микроконтроллеров?
« Ответ #10 : Мая 22, 2011, 06:42:39 pm »
Цитировать
Освоил это дело именно, как аналоговый электронщик ещё на уровне интеля 4004, потом 8008. А уж потом - 8080.

Это когда это Вы i4004 осваивали? Почему-то хочется поучительных подробностей - где, когда и в каком виде?
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен

KMG

  • Сообщений: 3776
    • ICQ клиент - 412221711
    • AOL клиент - Mike
    • Просмотр профиля
    • E-mail
Re: Програмирование микроконтроллеров?
« Ответ #11 : Мая 22, 2011, 06:56:04 pm »
Андрей, тогда время определяется тем, как быстро ты сможешь вспомнить синтаксис С.
Ну и некоторое время на изучение устройства встроенной преиферии однокристалки по даташиту.

Sanoend

  • Сообщений: 1241
  • GTLab - forever!
    • Просмотр профиля
Re: Програмирование микроконтроллеров?
« Ответ #12 : Мая 23, 2011, 07:29:38 pm »
Первый контролер с которым я работал был Атмега 8.
Принимал данные от компа через Ком порт, переводил из цифры в аналог и выводил на порт контролера. Всего на освоение и реализации этого с нуля ушло 4 часа, дольше всего мучался с растановкой галочек в программе от прошивальшика.
Но я программист по професии, правда в совсем другой области.

santa

  • Сообщений: 1404
  • с помойки банки рулят, турреты нервно курят
    • Просмотр профиля
Re: Програмирование микроконтроллеров?
« Ответ #13 : Мая 24, 2011, 03:24:36 am »
 4ч ,  удивительно . А  софт уже был установлен ?
То есть  так с нуля это и софта не было , и чел должен всё по строгой инструкции выполнять .
И вопросов не должно стоять типа  каким софтом Я буду пользоваться  бесплатным демо или ломаным , время на поиск инфы  не тратить , а инфа должна сама уже быть как факт :D . Не знаю как там советуют начинать
 с СИ  но у меня с компилятором винавр было больше проблем , сначал установил  он оказался глючный долго  патался заставить компилить но
потом пришлось всё равно удалять, новую версию  искать ...
теория убийца практики

slo100>slo100pt  >>  topsecret

Sanoend

  • Сообщений: 1241
  • GTLab - forever!
    • Просмотр профиля
Re: Програмирование микроконтроллеров?
« Ответ #14 : Мая 24, 2011, 05:14:06 am »
Да софт был установлен и программатор был успешно взят и подключен.
И вообще я немного схитрил т.к. я разбирался не по документации, а скачал исходники похожей программы с подробными коментариями и из её кусочков сделал свою, кое что убрав и кое что добавив.

Ещё у меня был затык с кварцем. В моем проекте контролер должен был работать от внешнего кварца, а не от внутренего генератора. Я и залил в него промежуточную версию программы поставив эту галочку, проверил работоспособность написанного кусочка, а потом долго не мог понять почему он не хочет прошиваться. Пришлось к програматору на МГТФ привешивать кварц и два конденсатора.

И делалось это все под линукс, программа компилилась через какой-то gcc, вроде через  avr-gcc, а заливалась через пони прог. Кстати пони прог надо запускать от рута иначе не будет достапа к ком порту.
« Последнее редактирование: Мая 24, 2011, 05:26:27 am от Sanoend »

research

  • Гость
Re: Програмирование микроконтроллеров?
« Ответ #15 : Мая 26, 2011, 06:28:40 am »
МК AVR  ATTINY2313 и ATMEGA - халява. Шьются через LPT в легкую. Потом лично мне это надоело, купил USB программатор. Халява еще и в том, что материала по ним  - тонны. Разобрано все, начиная от аппаратного RS232 до чтения файлов с SD-карты.
Но, поработать самому все равно придется.

Тестовая железка:
Если интересует в первую очередь тупо программирование на Си, то ардуино/фридуино  ( http://megachip.ru/article.php?id=294 ).

Хотя самому такое сделать на рыбе -пара часов, МК, панелька, чуть рассыпухи, типа 78L05 + преобразователь уровней.

Для старта, навыков 8051 за глаза, если по настоящему учили, а не "сдавали".

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

Рекомендованный материал:

Простой:
http://myrobot.ru/articles/mc_stab.php
http://homorobot.md6.ru/index.php?option=com_content&task=view&id=5&Itemid=6

Классика самообразования:
даташиты. Не экономьте бумагу :)
http://easyelectronics.ru/category/avr-uchebnyj-kurs
http://avr123.nm.ru/
http://www.avrbeginners.net/

wav плеер на тини85. Рекомендую посмотреть работу с флэшкой (сд карта): http://radioded.ru/content/view/108/39/

Адекватный форум:
http://electronix.ru/forum/index.php?showforum=10&prune_day=100&sort_by=Z-A&sort_key=last_post&topicfilter=all&st=0
найдете решение почти любой своей проблемы + проекты от знакомых лиц :)

Rst7

  • Сообщений: 1619
  • Мимо проходил...
    • Просмотр профиля
    • E-mail
Re: Програмирование микроконтроллеров?
« Ответ #16 : Мая 26, 2011, 02:59:37 pm »
Цитировать
Адекватный форум: http://electronix.ru/forum/index.php?showforum=10&prune_day=100&sort_by=Z-A&sort_key=last_post&topicfilter=all&st=0

О да, там склад. Только там сначала в поиск, а потом задавать вопрос. Иначе - стреляют без предупреждения ;)
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен