PDA

Просмотр полной версии : Тому кто начал изучать МК



SoundMaster
24.06.2008, 09:58
Недавно я решил изучить возможности применения микроконтроллеров. Очень быстро я получил несколько дисков, на которых была программа MPlab, и несколько обучающих курсов, доступных в интернете. Мой выбор остановился на AVR, как на самых широко распостраненных и функционально развитых чипах. Но к сожалению курс по AVR по большей части состоял из криков о том как все просто, здорово, и содержал массу ссылок часто оказывавшихся рекламой - то есть не было логически связанного и последовательного текста.
Предлагаю в этом форуме рассматривать конкретные простые примеры создания программ, с подробным последовательным разбором действий, ну а когда дело дойдет до более сложных программ тогда уже можно будет и разместить ссылки на отдельные функциональные куски кодов, которые будут полезны разработчику устройств на МК. Ну а на первое время чем меньше ссылок, тем будет лучше - чтобы перед глазами всегда был текст в целом и связанном виде.
У меня имеется MPlab v2.60
Рассматривать предлагаю ATmega32
Итак, вот первый пример.
Необходимо разработать устройство на МК, функция которого заключалась бы в следующем: При напряжении на входе менее +3в на выходе присутствует логический 0.
При достижении и превышении +3в присутствует логическая 1.
Сразу возникают вопросы
1 - какие есть команды и что они заставляют выполнять мк
2 - Если они заставляют МК складывать, делить и производить подобные операции с какими - либо числами - то как эти операции связаны с функциями устройства
3 - где или как назначить вход и выход.
4 - После того как программа написана, все это переводится в набор 16-ричных чисел, процесс называется ассемблированием - про это тоже хотелось бы поподробнее узнать - могут происходить такие случаи, когда оно не может быть выполнено и из - за каких ошибок (есть ли наиболее частые?)
Ну а чисто технические вопросы с подтяжками выхода и т.п. тоже не лишне рассмотреть, тем более что есть стандартные решения, которые нужно знать, но сделать это уже можно не в первую очередь.

R1ZK
24.06.2008, 10:49
MPlab v2.60 поддерживает AVR? :D

SoundMaster
24.06.2008, 11:33
Нет конечно! Ошибся! У меня VMlab 3.12

R1ZK
24.06.2008, 13:25
Очень много информации по AVR для начинающих: http://www.radiokot.ru/forum/viewforum.php?f=20&sid=07059414362389f7 2ca4633c9e7ed5b4

UN9GW
24.06.2008, 13:37
www.avr123.nm.ru - исчерпывающая информация для начинающих и не только.

А также:
www.atmel.ru

ut1wpr
24.06.2008, 13:43
Недавно я решил изучить возможности применения микроконтроллеров. Очень быстро я получил несколько дисков, на которых была программа MPlab, и несколько обучающих курсов, доступных в интернете. Мой выбор остановился на AVR, как на самых широко распостраненных и функционально развитых чипах. Утверждение в корне ошибочно. Рекомендую сделать выбор самостоятельно, получше познакомившись с продуктами от Микрочипа.

Но к сожалению курс по AVR по большей части состоял из криков о том как все просто, здорово, и содержал массу ссылок часто оказывавшихся рекламой - то есть не было логически связанного и последовательного текста.
Предлагаю в этом форуме рассматривать конкретные простые примеры создания программ, с подробным последовательным разбором действий, ну а когда дело дойдет до более сложных программ тогда уже можно будет и разместить ссылки на отдельные функциональные куски кодов, которые будут полезны разработчику устройств на МК. Ну а на первое время чем меньше ссылок, тем будет лучше - чтобы перед глазами всегда был текст в целом и связанном виде.
У меня имеется MPlab v2.60
Рассматривать предлагаю ATmega32
Итак, вот первый пример.
Необходимо разработать устройство на МК, функция которого заключалась бы в следующем: При напряжении на входе менее +3в на выходе присутствует логический 0.
При достижении и превышении +3в присутствует логическая 1.
Сразу возникают вопросы
1 - какие есть команды и что они заставляют выполнять мк
2 - Если они заставляют МК складывать, делить и производить подобные операции с какими - либо числами - то как эти операции связаны с функциями устройства
3 - где или как назначить вход и выход.
4 - После того как программа написана, все это переводится в набор 16-ричных чисел, процесс называется ассемблированием - про это тоже хотелось бы поподробнее узнать - могут происходить такие случаи, когда оно не может быть выполнено и из - за каких ошибок (есть ли наиболее частые?)
Ну а чисто технические вопросы с подтяжками выхода и т.п. тоже не лишне рассмотреть, тем более что есть стандартные решения, которые нужно знать, но сделать это уже можно не в первую очередь.
На мой взгляд, делать этого в конференции радиолюбителей не стоит. Похожие ветки уже зарождались. Существуют специализированные конференции по этим направлениям, их посещают больше профессионалы, нежели любители. Там можно быстрее получить авторитетные ответы и помощь.

http://www.microchip.su/
http://www.telesys.ru/wwwboards/mcontrol/index.shtml
http://www.caxapa.ru/mcu/wwwboard.html

Ну и еще ряд других, которые подскажет добрый дядя Гугль. :-)

RZ6AT
24.06.2008, 13:54
Алиментарно,шэф! :D
Для реализации используем встроенный компаратор напряжения (см. PDF файл на мегу, там чистейшим английским всё расписано), на один вход его программируем внутренний источник опорного напряжения, а на втрой вход компаратора подаём через резистивный делитель входное напряжения, считаем делитель, чтобы компаратор срабатывал при 3В входног напряжения и либо пишем в программе в цикле с приемлимой частотой команду проверки флага компаратора, если он = 0 , то посылаем лог. 0 на выходной битик выходног порта, а если он = 1, то то посылаем лог. 1 на выходной битик выходног порта, либо разрешаем прерывание от компаратора, засылая 1 в соответствующий регистр компаратора, разрешаем общее прерывание и в самом начале проги, где расположены все вектора прерываний ищем строку прерывания от компаратора и туда вставляем команду перехода на подпрограмму обработки прерывания от компаратора, в которой проверяем, если флаг компаратора = 0 , то посылаем лог. 0 на выходной битик выходног порта, а если он = 1, то то посылаем лог. 1 на выходной битик выходног порта и всё, шэф!

rv3bj
24.06.2008, 15:54
Рекомендую сделать выбор самостоятельно, получше познакомившись с продуктами от Микрочипа.
Действительно на Микрочип сейчас стоит обратить внимание. Несмотря на то, что у меня большой опыт общения с AVR, я последнее время поглядываю на микрочип с интересом. Микрочип практически первым сделал контроллер с RISC системой команд. Правда в какой-то момент они остановились в развитии контроллеров с флеш памятью. У них в тот момент был только один вариант 16С84 потом перешедший в 16F84. А вот Атмел не стоял на месте и выпускал флеш версии своих контроллеров уже и в 40 пиновом корпусе. Это во многом не позволило Микрочипу уйти вперед. Но через какое-то время они освоили флеш технологию позволяющую создавать флеш память большего объема, а Атмел несколько остановился в развитии новых типов.
У Микрочипа аналоговая периферия всегда была выше атмеловской.
Так что я поддерживаю тезис ut1wpr о необходимости знакомства с продукцией микрочипа.

UU5JAS
24.06.2008, 17:15
И главное начинайте писать проги на Си. Так намного быстрее и эффективнее. На АСМ тоже хорошо но долго и ненаглядно. Допустим сделать менюшку в Си намного проще, или с LCD дисплейчиком работать

RZ6AT
24.06.2008, 19:32
http://www.atmel.com/dyn/products/param_table.asp?fami ly_id=607&OrderBy=part_no&Direction=ASC

ua9xbi
24.06.2008, 21:14
[ а Атмел несколько остановился в развитии новых типов.

Вроде как бы и не остановился:-)
Анонс с сайта www.atmel.ru

Корпорация Atmel анонсировала новое семейство AVR-микроконтроллеров - XMEGA. Микроконтроллеры XMEGA - это новое, более совершенное поколение уже хорошо знакомых, популярных и признанных AVR - микроконтроллеров. XMEGA программно совместимы с популярными семействами tiny и mega. Микроконтроллеры XMEGA будут выпускаться в корпусах QFP с количеством выводов от 44 до 100, иметь объем встроенной Flash-памяти от 16 до 1024 килобайт, работать с производительностью до 32 MIPS. XMEGA содержат 4 канала прямого доступа к памяти (DMA), 12-разрядные АЦП и ЦАП, 8 каналов системы событий, криптомодули AES и DES, часы реального времени, блок контроля напряжения питания (BOD), сторожевой таймер, встроенный RC-генератор. Новые микроконтроллеры работают в индустриальном температурном диапазоне -40 : +85°С. Напряжение питания составляет от 1,8 до 3,6 Вольт.

Отличительные особенности нового поколения AVR - XMEGA:

Пониженное энергопотребление (технология picoPower второго поколения)
Расширенный набор периферии, включая новые цифровые и аналоговые модули
Увеличенная производительность процессорного ядра и периферии
XMEGA поддерживаются основными средствами разработок для AVR - AVRISP2, JTAGICE2, AVR Studio, компилятор IAR Systems (некоторые аппаратные средства требуют модернизации для поддержки XMEGA). Предлагается новый стартовый набор STK600, который будет работать со всеми микроконтроллерами AVR, включая XMEGA.

На сегодняшний день начато производство ATxmega128A1 и ATxmega64A1. Начало серийного производства других микроконтроллеров XMEGA планируется в третьем и четвертом кварталах 2008 года. Более подробную информацию по семейству XMEGA смотрите на сайте Atmel: http://www.atmel.com/products/AVR/default_xmega.asp

73!

R1ZK
25.06.2008, 07:11
И главное начинайте писать проги на Си. Так намного быстрее и эффективнее.
Быстрее - да, эффективнее - нет. Для начала пусть асм освоит и познакомится с архитектурой, а потом уже и Си.

RZ6AT
25.06.2008, 10:49
Советую вместо ассемблера использовать Algorithm Builder http://algrom.net/

UU5JAS
25.06.2008, 20:22
И главное начинайте писать проги на Си. Так намного быстрее и эффективнее.
Быстрее - да, эффективнее - нет. Для начала пусть асм освоит и познакомится с архитектурой, а потом уже и Си.
На освоение АСМ может не хватить терпения. По моему лучше Си а потом если понадобятся скорость работы и красивый код, то можно перейти на АСМ, но лично мое мнение, логика мышления каждого человека индивидуальна. Желаю удачи и терпения в освоении этого очень интересного поприща! :super:

vadim_d
28.06.2008, 16:23
Для начала пусть асм освоит и познакомится с архитектурой, а потом уже и Си.
Архитектура и язык - вещи достаточно независимые. Архитектуру надо знать, а на выбранном языке программирования нужно уметь использовать возможности этой архитектуры. Мое мнение - если программу можно написать на Си, то ее НУЖНО писать на Си :D

Serg_PRQ
28.06.2008, 18:37
Для начала пусть асм освоит и познакомится с архитектурой, а потом уже и Си.
Архитектура и язык - вещи достаточно независимые. Архитектуру надо знать, а на выбранном языке программирования нужно уметь использовать возможности этой архитектуры. Мое мнение - если программу можно написать на Си, то ее НУЖНО писать на Си :D
Оно понятно, со стороны можно парня и асмом попугать, может и одумается совсем :)
Вадим, поддерживаю Вас на 100%, пока це альтернативы нет на том уровне на котором НУЖНО начинать работать. А потом уже возникнут все равно вопросы, но не такие как в начале ветки.
Только что-то мнения самого автора не видно... на распутье :D

ua9xbi
29.06.2008, 09:01
На освоение АСМ может не хватить терпения.

На изучение любого языка нужны время и терпение. Мне его не хватает на изучение СИ, а вот АСМ просто понравился. Поскольку сам относительно недавно начинал, подскажу как лучше начать его изучение.
Для начала внимательно изучите "Обучалку" на сайте http://www.radiokot.ru/start/mcu_fpga/avr/
Стоит также вдумчиво почитать и проанализировать программы в одной из книг А.В. Белова(в других практически тот же материал):
"Микроконтроллеры в радиолюбительской практике"
"Самоучитель по микропроцессорной технике"
"Создаем устройства на микроконтроллерах"
В книгах очень подробно раскомментировано создание программ, чем они и полезны. В них же даны программы с комментариями для языка СИ.
НУ а дальше - поиск и анализ чужих программ в интернете.
Особенно полезно для изучения, хоть и требует много времени - написание собственных комментариев к каждой строке кода чужой программы, даже если эти строки там написаны на английском. Не знаете английский - вооружитесь Промтом или другим переводчиком
Главное делать все вдумчиво, и через пару месяцев будете знать всю систему команд AVR, и даже уметь составлять не только простые "светодиодоморгалозаж игалки", но и полезные устройства.
Чаще обращайтесь к апноутам - это примеры программирования, которые можно найти на многих сайтах. В них есть практически все примеры для начинающих и не только.
Удачи Вам! И терпения!

Igor^
29.06.2008, 10:51
Для изучения AVR также можно посмотреть http://avr123.nm.ru/

SoundMaster
29.06.2008, 13:54
Всем большое спасибо за ответы. Начал изучать неоднократно рекомендованный курс avr123 и систему команд Си. Тему можно закрыть.

UN7RX
29.06.2008, 15:31
Народ, порекомендуйте хороший симулятор для MCS-51/52 совместимых контроллеров, что бы программы чисто в софте моделировать. Образовалось некоторое количество их, атмеловские, АТ89С и LV.

rv3bj
29.06.2008, 15:45
Народ, порекомендуйте хороший симулятор для MCS-51/52 совместимых контроллеров, что бы программы чисто в софте моделировать. Образовалось некоторое количество их, атмеловские, АТ89С и LV.
Когда я занимался 51, то использовал Keil. Мне понравилось.

pictele
08.12.2008, 07:46
Стоит время терять на ATMEL?
PIC-это вещь.
И на ассемблере.Только так можно прощупать программу.

R0SBD
08.12.2008, 08:29
Для Robert: http://vrtp.ru/index.php?s=a61eca72 4ba106f94c473ea25882 2320&showtopic=9176&st=20
http://kurs8051.narod.ru/ http://dodeca.gaw.ru/html.cgi/txt/soft/mcs-51/index.htm http://www.gaw.ru/html.cgi/txt/soft/mcs-51/proview.htm
Скачайте Proview, мне понравилась. Полное название Franklin Proview,
выкладываю описание как этой прогой пользоваться. Позволяет симулировать , пошагово выполнять написанную программу, без железа...

ra0sms
11.12.2008, 10:46
Приветствую всех. Посмотрев на название темы, я бы рекомендовал именно начинающим сайт ikarab.narod.ru Очень хороший ресурс для желающих изучить PIC микроконтроллеры. Вся информация изложена настолько доступно, что может быть усвоена даже школьником. Автор сайта проделал огромную работу. Более доступного и понятного обучающего сайта по этой тематике не встречал.

11.12.2008, 12:09
На изучение

Все, что написано в этом посте(см.выше), поддерживаю двумя руками. Внимательно каждую строчку прочтите, последуйте советам и будет Вам счастье....

RU3GA
11.12.2008, 15:47
Давненько не заходил на этот ресурс моего земляка.
С сожалением , но при этом с полным пониманием , увидел , что там доступна только маленькая часть инфо. За остальное , как я понял , нужно платить автору. Но ресурс прекрасный! Жаль только , что круто зациклились на асме. Базовые знание его иметь безусловно надо --- без этого никак! Но писать в наше время на нем --- мягко говоря, нецелесообразно... Хотя бы из-за плохой "переносимости" програмы на другие чипы.

Удачи!
RU3GA

UU5JAS
11.12.2008, 19:36
Я думаю человеку не так нужно "прощупывать" программу, сколько уметь быстро сделать работающую конструкцию, что не асме довольно трудно, на разработку простой программы которую на Си можно написать за два часа на асме уйдет несколько дней. Но от реальности не уйдешь люди же сейчас не пишут проги для РС на асме, а стремяться перейти на языки более высокого уровня, да, пусть с потерей в быстродействии и объеме кода, но это как правило для начинающих не проблема. Главное в наше время время написания проги. Но бузусловно базовые знания необходимо иметь, и уметь составлять несложные коды и на АСМ, ну а для практики Си- то что надо.

Колючкин
23.12.2008, 21:58
Я тоже недавно стал изучать МК и нашел в инете две страницки:
http://window.edu.ru/window/library?p_rid=29302
http://kurs8051.narod.ru/
Вся информация на русском и храниться pdf формате