На чем начать программировать AVR? Рекомендации.

Автор: | 01.02.2010

После предыдущего поста как-то сразу потянуло давать советы по поводу выбора среды программирования для AVR контроллеров. Только не надо кидать в меня тапками. Я совсем чуть-чуть 🙂

Языков программирования для микроконтроллеров много. Сред программирования так же не мало и сравнивать их между собой некорректно. Лучших языков программирования не существует. Значит, придется выбрать наиболее подходящие для Вас язык и среду программирования.

Если Вы, в данный момент, стоите перед выбором, на чем начать работать, то вот Вам несколько рекомендаций.

Прежний опыт программирования. Не стоит пренебрегать прежним опытом в программировании. Даже если это был Бейсик. Даже если это было давно в школе. Программирование как езда на велосипеде – стоит только начать и быстро вспоминаешь все забытое. Начните с Бейсика – освойтесть – позже будет проще выбрать что-то более подходящее для Ваших целей.

Помощь окружения. Ваши друзья пишут на Паскале? Для Вас вопрос решен – пишите на Паскале! Вам всегда помогут советом, подкинут библиотек, дадут на изучение готовые проекты. Вобщем рады будут принять в свое сообщество. Если поступите наоборот — получите обратный результат. Друзья сишники заклюют Вас, решившего изучать Ассемблер. Помощи не ждите.

Хорошая книга по программированию AVR очень здорово поможет. К сожалению их очень мало. Если Вам в руки попалась книга, и вы считаете что в ней очень доступно все расписано – попробуйте. Не советую учиться по электронным книгам, в крайнем случае, распечатайте. Очень неудобно переключаться между средой и текстом файла книги. Гораздо приятнее читая книгу тут же пробовать, не отвлекаясь на переключения, кроме того, на полях можно делать пометки, записывать возникшие идеи.

окна AVR StudioОкно CV-AVRСреда программирования попроще. Если есть на выбор несколько сред программирования Вашего языка – не сомневайтесь, выбирайте ту, что проще. Пусть она менее функциональна. Пусть она компилирует страшно раздутый код. Главное чтобы было просто начать работать. После того как Вы освоитесь в простой среде вы с легкостью перейдете на более продвинутую и «правильную» среду. И не слушайте тех, кто говорит, что вы потеряете больше времени – они не правы. Ученикам младших классов не задают читать «Войну и мир» им дают книги попроще – с картинками.

Библиотеки. Наличие библиотек спорно для изучения языка. Конечно, позже они очень облегчат жизнь, но поначалу «Черные ящики»-библиотеки непонятны и не очень способствуют пониманию языка. С другой стороны облегчают чтение программы и позволяют новичку, не особо напрягаясь, строить сложные программы. Так что, их наличием особо не заморачивайтесь. По крайней мере, по началу.

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

Окно визардаВизарды. Любое устройство на борту кристалла нуждается в настройке при помощи портов. Процедура довольно муторная и даташиты обязательны. Кроме того, есть нюансы, в которые новичку не просто вкурить. Поэтому в среде очень желательно наличие визардов. Вызарды это автоматические настройщики SPI, I2C, USART и т.д. Чем больше устройств поддерживается, тем лучше. Выставляешь необходимые параметры периферии, а визард сам генерирует код, который обеспечит заданные параметры. Очень упрощает жизнь.


Общие рекомендации такие – программирование на начальном этапе должно быть максимально простым (пусть даже примитивным). Среда программирования должна быть легка в освоении (так как Вам надо, для начала, освоить программирование а не тратить время на ковыряние в настройках). Желательно русифицирована. Также не помешает русский мануал и примеры программ. Желательна возможность прошивки кристалла из среды. Далее при освоении основ программирования можно переходить и на более сложные оболочки.


Еще одна рекомендация, напоследок – работайте с реальным кристаллом. Не бойтесь его спалить. Нарабатывайте практический опыт. Работа с эмуляторами (например Proteus) хоть и освободит от возни с паяльником, но никогда не сможет дать то удовлетворение которое Вы получите от заработавшей программы, первых помигиваний светодиодом! Понимание того, что вы сделали своими руками реальную рабочую схему вселяет уверенность и стимул двигаться дальше!

(Visited 8 928 times, 1 visits today)

На чем начать программировать AVR? Рекомендации.: 23 комментария

  1. GetChiper Автор записи

    Как для обучающего проекта — это слишком. Там только с железяками можно намучится так что и до электроники дело не дойдет.

  2. Rusakow

    Пытаюсь вникнуть, однако процесс познания походу затянется. Очень хочется собрать вот эту штуку http://roboreview.ru/samodelkin/sigvey-svoimi-rukami.html
    Как из этого всего https://github.com/Lauszus/BalancingRobotFullSize создать компилированный файл прошивки, ума не приложу. Здорово было-бы увидеть этот девайс . Help !

  3. student1987

    учусь в AVR STUDIO 4 по книгам Д.Мортон «AVR вводный курс» и Белов.

  4. destroyer

    Спасибо теперь понял r16 -> запись в стек,
    ->SREG а это из стека записать в SREG

  5. GetChiper Автор записи

    Если Вы имеете в ввиду r16 -> r16
    то это операция пустая, то есть записать в r16 то что находится в r16.
    Если Вы имеете в виду r16 ->
    то это запись r16 в стек

    Запись 1 в в r16 выглядит следующим образом:
    1 -> r16

  6. destroyer

    Здравствуйте!начинаю осваивать АВ-возник вопрос по командам-подскажите как работают такие строчки ?
    r16 -> ->R16
    r17-> ->R17
    SREG -> -> SREG
    Подразумеваю ,что это положить еденицу в регистр.Но возможно ошибаюсь.

  7. GetChiper Автор записи

    «Живая» книга вообще хорошо.

  8. mxroman

    Не стал париться, зашёл в магазин и купил) повезло), Самоучитель разработчика устройств на микроконтроллерах AVR 2-е издание 2010

  9. GetChiper Автор записи

    Поддерживаю Евгения. Мы все учились по книгам Белова — это самый лучший путь.

  10. mxroman

    большое спасибо, завтра же выведу на бумагу и приступлю…

  11. mxroman

    с электроникой норм, сам инженер)

  12. GetChiper Автор записи

    Трудно будет начинать с нуля. А как с электроникой?

  13. mxroman

    неа, надеюсь на ваш совет, что предложите на том и начну впринципе, так как опыта вообще нет… Я так понимаю сначала на Си пишется а потом уже переделывается в HEX

  14. GetChiper Автор записи

    Выбрали на чем хотите начать?

  15. mxroman

    Здравствуйте, классный сайт, почти весь сайт перевёл на бумагу, занятное просто чтение, всё понятно как для детей, но только вот после прочтения всего я понял что тут готовые программы… Хотелось бы чтобы для чайников было объяснено как пишется программа с нуля, на примере светодиодов например, как зажечь, чтобы моргал через интервалы времени… Или хотя бы литературу на эту тему… Просто хочется самому что нить написать для простейшего светодиода… Заранее спасибо

  16. ec

    а что делать если вся информатика — это один курс технаря с клавиатурой нарисованной на бумажке? Ни бейсик, ни паскаль, ни си осваивать просто поздно да и сил не хватит если честно. Друзей, которые пишут на чем-то — есть только такие, которые хорошо обращаются с бутылкой.
    И тогда погуглив, обращаем внимание на программу flowcode. Признаться, был удивлен, насколько быстро у меня получилось помигать светодиодиками, даже не зная никакого языка. Через пару дней я уже писал в еепром, научился работать с прерываниями, и даже сделал девайсик — триггер с запоминанием последнего состояния.
    Русский сайт — http://www.flowcode.info

  17. IROBOT

    Просто у Вас как то нагляднее все получается объяснять,вот и хотелось бы научиться настраивать и работать с таймерами и прерываниями.

  18. GetChiper Автор записи

    Формат сайта как-бы не подразумевает обучения, но возможно я со временем сделаю небольшой гайд по билдеру — посмотрим…

  19. IROBOT

    Автору сайта можно просьбу -начать с простых примеров по algorithm builder-на вртп был но там как то люди увлеченные более сложными проектами

  20. alexandershahbazov

    CodeVisionAVR ругают за большой и непонятный код ( DI HALT ) .
    У продуктов mikroelectronics говорят много багов .

  21. GetChiper Автор записи

    А я мечтаю освоить CodeVisionAVR 😉 — займусь по свободе.

  22. alexandershahbazov

    Хотелось узнать ваши предпочтения .
    Например , я сижу на CodeVisionAVR .
    И только лишь мечтаю освоить WinAVR и IAR .

Добавить комментарий