Помогите обучить программированию микроконтроллеров

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
IRIS
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Пт сен 17, 2010 20:33:23

Помогите обучить программированию микроконтроллеров

Сообщение IRIS »

Всем доброго времени суток.
Очень давно у нас с преподавателем кружка радиотехники (членом которого я являюсь) возникла идея организовать курс лекций по программированию микроконтроллеров так как почти вся схемотехника в последнее время строится на них. В процессе проработки этого вопроса возникли некоторые трудности которые я хотел бы вынести на общее обсуждение.

Трудность 1 - какое семейство выбрать?
Выбор между PIC и AVR микроконтроллерами.

Сам работаю с PIC16xx, PIC12xx (хотя переключиться на AVR труда не составит так как имею базовые знания по этому семейству).
PICи 16 с которых я планировал начать обучение в случае выбора этого семейства имеют малый набор команд что по моему мнению при начале обучения является скорее плюсом. Также их не так легко залочить в случае неправильной установки битов конфигурации. К минусам отношу довольно высокую цену и низкую скорость выполнения команд по сравнению с AVR.
AVR имеют более низкую стоимость и более быстро считают, однако требуют более осторожного обращения с ними в процессе прошивки (хотя можно конечно сделать устройство для вылечивания неправильно сконфигурированных контроллеров и эта проблема снимается).
Моё мнение:
Сам начинал с PIC16F84A и считаю его неплохой кандидатурой для начала обучения. В последствии можно будет перейти на PIC16F628 и на PIC18 с уже более полноценным набором команд. Скорость выполнения программы конечно является весомым фактором но на начальных этапах возможностей указанных моделей с 4-х МГц кварцем будет вполне достаточно.

Трудность 2 - какой язык программирования использовать?

Ассемблер или язык высокого уровня?
Моё мнение.
Ассемблер позволяет глубже вникнуть в процессы происходящие в контроллере во время работы что по моему мнению позволит лучше понять принцип его работы. Язык высокого уровня упрощает и ускоряет написание программы но нет тесного взаимодействия с внутренними модулями контроллера.

Так же выкладываю на ваш суд подготовленный конспект первой лекции на эту тему( для образца был выбран контроллер PIC16F84A). Целью данной лекции является познакомить учеников с внутренним устройством контроллера, назначением выводов и некоторым тонкостям схемотехники устройства с использованием данного чипа а так же процесса прошивки контроллера. В данном документе содержатся основные определения которые во время лекции будут объясняться (по крайней мере пытаться объясняться) более подробно. Буду признателен за замечания и предложения по поводу построения лекции (последовательность подачи материала, выбираемые термины и их объяснение) .

Заранее спасибо.
Вложения
Силовой модуль.rar
(42.54 КБ) 225 скачиваний
Первая схема.rar
(62.82 КБ) 222 скачивания
Лекция 1.rar
(321.89 КБ) 273 скачивания
Реклама
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: Помогите обучить программированию микроконтроллеров

Сообщение otest »

Советую в ХХI веке забыть про PIC16F84. Посмотрите для начинающих на PIC16F676 или PIC16F690.
Реклама
Аватара пользователя
vem566
Друг Кота
Сообщения: 4733
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Re: Помогите обучить программированию микроконтроллеров

Сообщение vem566 »

Сам я начинал электронщиком, потом плавно ушел в программирование, которым занимаюсь последние 20 лет.
На работе мальчишки из техотдела начали доставать по поводу обучения программированию. Так вот я выбрал не классическую методику, а немного другую. Ассемблер требует минимум знаний, прежде чем начать писать программу, поэтому я выбрал бейсик(они были с ним знакомы со школы). Публично написал программу для мигания светодиода ничего не объясняя, зашил в контроллер и показал. То есть начал с практического занятия. Глазки загорелись. Дальше объяснил назначение каждой командной строчки и попросил переделать так, чтобы три диода перемигивались. Они начали сами, и вот тут начали появляться вопросы! Из тупого слушателя они потребовали диалога с объяснениями. Услышав слово "регистр" потребовали объяснить "кто эта такая, и зачем". Дальше - больше. Так они узнали всю архитектуру. Потребовалось два месяца. И программу, которая лежит в примере к лекции они уже были в состоянии написать сами.
Было их двое. Спустя два года один из них основной программист в конторе, второй - ведущий инженер в тех отделе. Первого я подстегнул тщеславием. Объяснив, что если ты профессионал, то все равно на каком языке писать. Поэтому где ассемблер, паскаль, си, форт? Ведь у шофера - профессионала не спрашивают, на каких машинах он умеет ездить! А второму больше по душе железо.
У меня была цель не учить их, а сделать так, что бы учились сами. Моя функция - помогать.
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: Помогите обучить программированию микроконтроллеров

Сообщение otest »

Началось :facepalm:
Может сюда переместиться нужно? http://radiokot.ru/forum/viewtopic.php?f=62&t=33
Реклама
Эиком - электронные компоненты и радиодетали
IRIS
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Пт сен 17, 2010 20:33:23

Re: Помогите обучить программированию микроконтроллеров

Сообщение IRIS »

otest писал(а):Началось :facepalm:
Может сюда переместиться нужно? viewtopic.php?f=62&t=33
Ладно, выбор семейства и языка программирования оставлю за собой ( PIC/Ассемблер так как я их уже знаю. В последствии может перейдём на AVR).

А что скажите на счёт лекции?
Реклама
Аватара пользователя
vem566
Друг Кота
Сообщения: 4733
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Re: Помогите обучить программированию микроконтроллеров

Сообщение vem566 »

По моему, слишком много информации для начинающего сразу. К тому же разнородной. С третьей страницы ему станет просто скучно.
Реклама
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Помогите обучить программированию микроконтроллеров

Сообщение urry »

Лекция построена неправильно - слишком много внимания уделяется программатору - с ним и так методом тыка можно разобраться - и совсем не уделяется средствам отладки (мплаб сим, протеус, scl (http://www.pic24.ru/doku.php/osa/articles/scl)).
Несмотря на борьбу с пиратством, в нашем политехе преподы вовсю заставляют студентов работать с протеусом.
Наконец, силовая часть нарисована с ошибкой - ну нельзя оставлять висящую базу - отстыкована от мк, плата включит все каналы.
И не нужно увлекаться сразу силовой частью - навесьте на порт светодиоды и организуйте на них, например, 8 битный счетчик - чтобы молодежь втягивалась в двоичную математику - число на выходе в двоичном коде, в шестнадцатеричном и за сколько времени переполнится счетчик, если поступают импульсы 50 герц.
akl
Друг Кота
Сообщения: 4445
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Помогите обучить программированию микроконтроллеров

Сообщение akl »

IRIS Светики HL9,HL10 наличия питания переверните.
IRIS
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Пт сен 17, 2010 20:33:23

Re: Помогите обучить программированию микроконтроллеров

Сообщение IRIS »

urry писал(а):Лекция построена неправильно - слишком много внимания уделяется программатору - с ним и так методом тыка можно разобраться - и совсем не уделяется средствам отладки (мплаб сим, протеус, scl (http://www.pic24.ru/doku.php/osa/articles/scl)).
Несмотря на борьбу с пиратством, в нашем политехе преподы вовсю заставляют студентов работать с протеусом.
Наконец, силовая часть нарисована с ошибкой - ну нельзя оставлять висящую базу - отстыкована от мк, плата включит все каналы.
Возраст обучающихся лежит в пределах 6-11 класс. Одной из задач данной лекции является ознакомление именно с способами прошитвки контроллера (до этого момента никто из обучащихся с контроллерами не раотал вооще и если кто либо из них захочет в домашних условиях собрать каку нибуть готову конструкцию он будет хотябы знать как залить в неё прошивку) конкретно внутрисхемное программирование.Я как раз планировал обьяснить работу с программатором ибо методом тыка разбираться с программатором который подаёт 12 вольт на схему не безопасно для контроллера.

По поводу резисторов и диодов каюсь забыл,исправлю.
urry писал(а):И не нужно увлекаться сразу силовой частью - навесьте на порт светодиоды и организуйте на них, например, 8 битный счетчик - чтобы молодежь втягивалась в двоичную математику - число на выходе в двоичном коде, в шестнадцатеричном и за сколько времени переполнится счетчик, если поступают импульсы 50 герц.
Всё это (правдва на несколько других примерах) будет обьясняться в процессе непосредственному обучению системе команд и тонкостям переферии контроллера.
Последний раз редактировалось IRIS Пт сен 27, 2013 09:54:05, всего редактировалось 1 раз.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Помогите обучить программированию микроконтроллеров

Сообщение oleg110592 »

Трудность 1 - какое семейство выбрать?
Трудность 2 - какой язык программирования использовать?
зачем задавали вопросы, если уже (наверное ранее) приняли решение:
Ладно, выбор семейства и языка программирования оставлю за собой
Мое имхо - семейства пик и авр немного уже устарели, может взять чего нибудь с ядром арм. Например, считаю неплохо взять стм32 дискавери - там и светодиодики и отладчик/программатор и штырьки для подключения прочего и цена имхо доступная для ученика. Ассемблер для этих микроконтроллеров в принципе и не нужен - можно только поверхностно пройтись и сосредоточиться на Си.
IRIS
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Пт сен 17, 2010 20:33:23

Re: Помогите обучить программированию микроконтроллеров

Сообщение IRIS »

oleg110592 писал(а):
Трудность 1 - какое семейство выбрать?
Трудность 2 - какой язык программирования использовать?
зачем задавали вопросы, если уже (наверное ранее) приняли решение:
Ладно, выбор семейства и языка программирования оставлю за собой
Потому что ещё не определился но нехочу разжигать войну поэтому выбрал то что ближе мне :)
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Помогите обучить программированию микроконтроллеров

Сообщение Аlex »

Вопрос "с чего лучше начать, с PIC или AVR", так-же как и "на чём писать прогарммы, Си или АСМ ?", априори - провокация на розжиг религиозной войны :)
Выбирайте то, что Вам ближе (и в прямом и в переносном смысле) всего.
Аватара пользователя
vem566
Друг Кота
Сообщения: 4733
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Re: Помогите обучить программированию микроконтроллеров

Сообщение vem566 »

Вот когда я делился опытом(см. выше), ни разу не упомянул ни о типе МК, ни о приоритетах в языке. Весь рассказ только о методике. Предпочтения каждый выберет сам, и потом будет нахваливать везде как истину в последней инстанции. При грамотной постановке задачи перед началом программирования ВЫБИРАЕТСЯ наиболее подходящий для конкретной задачи язык реализации. Правда, это относится к профессионалам, одинаково хорошо владеющими множеством языков. А если дилетант, освоивший, например СИ, будет рассказывать, что ничего лучшего нет, получится как у классика: "...Если других туфель не видел, то наши - во!..." А споры о приоритетах - флуд.
aleksandr-zh
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Re: Помогите обучить программированию микроконтроллеров

Сообщение aleksandr-zh »

Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Re: Помогите обучить программированию микроконтроллеров

Сообщение BCluster »

Вопрос в том, чему надо научить. Я бы начал с программирования. Для обучения программированию, к МК сразу вообще прикасаться не стоит. Нужно основы алгоритмизации внушить людям. А для этого лучше и проще использовать компьютер. Конечно, не надо писать сразу приложения под Win. Есть старые компиляторы под DOS, типа Turbo C (я бы его взял), Turbo Pascal, QBasic...
Начать решать задачи именно по программированию. Когда у людей появится понятие об том, что такое программа и с чем ее есть, и как правильно ее строить. Потом переходить на МК.

Если сразу начать с МК - будет возникать масса глупых вопросов по программированию, гораздо проще это отточить на компе
Ответить

Вернуться в «Разные вопросы по МК»