AVR Урок 4. Смотрим результаты работы



Урок 4

 

Смотрим результаты работы

 

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

001

Где найти данную программу, я рассказыать не буду, вы сами её найдёте без труда. Расскажу, как ею пользоваться. Запустим его и создадим новый проект

002

Имя проекта у нас будет такое же, как имя проекта в Atmel Studio — Test01 и создадим мы его в папке нашего проекта

003

Идем дальше, всё везде оставляем по умолчанию

007

Далее всё по умолчанию

005

006

В конце жмём «Finish»

008

Проект создан.

 

 

Давайте добавим в него какой-нибудь элемент. Для этого нажмём на кнопку «P» в левой панели и из списка выберем элемент. Сверху в строке поиска можно вводить наименование или часть наименования элемента. Попробуем добавить наш микроконтроллер Atmega8. Здесь контроллеры без букв. Выберем именно Atmega8 и нажмем «ОК» либо приеним двойной щелчок по строке с элементом (нажмите на картинку для увеличения размера)

 

009_0500

 

Элемент появится в левой панели

 

010

 

Если мы только что добавили элемент, то, чтобы его установить в рабочем пространстве, выбирать его не нужно, достаточно щёлкнуть по тому месту рабочего пространства, куда мы хотели бы установить данный элемент. По первому щелчку элемент установится, но ещё не «прилипнет» к пространству, то есть мы ещё можем его позиционировать. После второго щелчка наш контроллер жёстко установится.

 

011

Мы вижим с вами, что это не совсем тот тип контроллера, который мы будем использовать. Нам нужен вариант в корпусе DIP с 28 ножками. Чтобы изменить тип корпуса, щёлкнем двойным щелчком по контроллеру и изменим его тип в следующем выпадающем списке. Также заодно в поле «Program File» мы добавим файл с прошивкой с помощью кнопочки с папкой справа от поля. В качестве прошивки у нас будет файл, созданный на прошлом занятии с помощью Atmel Studio. Путь к нему вы видите в поле на рисунке, у вас, соответственно, он может отличаться

и нажмем «ОК»

 

012

 

Теперь мы видим, что это именно тот контроллер

 

013

 

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

 

014

 

015

 

016

 

017

 

 

Только для токоограничения светодиода 10 килоом будет слишком много. Чтобы изменить номинал, щёлкнем двойным щелчком по надписи «10к» либо по самому резистору и заменим значение на 220 ом. При 5 вольтах это будет оптимально

 

018

 

Ещё нам нужно будет добавить контакт для общего провода (массу). Для этого нажмём в левой панели определённый значок и выберем из списка «GROUND». Затем таким же образом, как и любые элементы, добавим его в нужное место

 

019

021

 

Ну вот наши элементы на месте. Осталось их соединиить. Делается это с помощью мыши. Сначала мы щёлкаем одиночным щелчком по одному контакту соединения, а затем по другому. Таким образом мы соединим все элементы

 

022

Наши элементы соединены, можно попробовать схему в работе. Питание подводить к контроллеру необязательно. Это подразумевается само собой. Для запуска в нижней панели нажмём кнопочку в виде зелёного треугольника. Кнопочка станет ярко-зелёной

 

023

Если сделано всё правильно, то светодиод будет светиться

 

024

 

Таким образом мы увидели результат того, чего мы добились в результате кода. Наша программа работает. Чтобы остановить процесс, нажимаем на кнопочку с синим квадратом.

Следующая задача урока — посмотреть результат работы программы в железе — на живом контроллере. Для этого воспользуемся отладочной платой, которая есть у меня.

 

025 026

Данная плата была взята здесь на этом сайте.

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

 

027

 

На данный программатор у меня есть обзор. Там есть информация, как данный программатор подсоединить, как установить на него драйвер и как с помощью него прошивать контроллеры. В данном обзоре мы прошиваем три различных контроллера. Также используем мы несколько программ для прошивки. В данном уроке мы будем использовать программу avrdude33.

Подключим отладочную плату к программатору, а программатор подключим к шине USB компьютера. Драйвер должен быть установлен.

Теперь Запустим прошивочную программу и выберем там наш контроллер

 

028

 

Попытаемся считать конфигурационные ячейки контроллера, нажав для этого кнопку «Чтение». Если всё подключено и установлено правильно, то мы должны увидеть вот такое вот сообщение

 

029

 

Дальше открываем закладку Fuses. Фьюзы — это настроечные биты контроллера, эксперементировать с которыми — занятие опасное. Поэтому внимательно изучите техническую документацию на тот контроллер, который программируете, прежде чем их устанавливать и прошивать. В нашем конкретном случае пока просто запомните установки на рисунке и обязательно выставите точно такие же, если конечно вы используете такой же контроллер и он у вас также сконфигурирован, то есть у вас нет кварцевого резонатора и вы пользуетесь именно встроенным генератором тактовой частоты. Фьюзы должны быть именно «инверсные», поэтому кнопочка должна быть установлена именно возле данной опции

 

030

 

Данные настройки фьюзов заставят работать контроллер Atmega8A от внутреннего генератора тактовых импульсов с частотой 8 мегагерц. Чтобы сохранить настройки в контроллер, нажимаем «Программироване», ещё несколько раз перед этим хорошенько подумав, иначе можно получить кирпич.

Микроконтроллер Atmega8a может с равным успехом работать на частоте 1, 2, 4, 8 мегагерц от внутреннего генератора, также он может работать от внешнего генератора, а также с использованием кварцевого резонатора. В последнем случае обеспечивается более стабильная работа внутреннего тактового генератора и также контроллер уже сможет работать ещё и на частоте 16 мегагерц.

Теперь вернёмся в закладку «Program». Также перед тем, как заливать нашу прошивку, я бы советовал вам стирать информацию в контроллере нажатием кнопки «Стереть всё». Поэтому нажимаем эту кнопочку

 

031

Теперь выбираем нашу прошивку — именно ту, которую мы испытывали в протеусе

 

032

 

Теперь нажимаем «Программирование»

 

033

 

Наша прошивка залита в контроллер. Перезагрузка происходит автоматически.

Как мы видим, наша программа работает и светодиод светится

 

034

 

Питается данная плата от напряжения 5 вольт, идущего с программатора, программатор данное напряжение берёт от порта USB. То есть отдельно на данную плату при условии небольшой нагрузки на порты питание подводить на требуется, что очень удобно для учебных целей.

Ну и ещё давайте попробуем добиться программирования нашего контроллера не через постороннюю программу, а напрямик из Atmel Studio. Вообще я предпочитаю программировать именно из Avrdude, но вообще напрямую удобнее, если мы не меняем фьюзы и не выбираем какой-то другой контроллер. Это именно такой случай, когда наш программатор не имеет поддержки драйверной в Atmel Studio. Зайдём в студию, откроем наш проект и зайдём в меню Tools -> External Tools

 

035

 

Назовём наше новое меню «Atmega8a». В строку «Command» через обзорную кнопку выбираем файл с программой Avrdude, только не тот файл, которым мы запускаем данную программу, вернее её графическую оболочку, а тот файл, который используется непосредственно для команд командной строки. В следующей строке «Arguments» вписываем строку с параметрами «-c usbasp -p m8 -B12 -U flash:w:$(ProjectDir)Debug\$(ItemFileName).hex:a» только без кавычек. Жмем «Apply» и «OK».

На всякий случай ещё раз соберём наш проект и попробуем с помощью нашей команды прошить контроллер, воспользовавшить появившемся новым пунктом меню Atmega8a в меню Tools.

 

036

 

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

 

 

Предыдущий урок Программирование МК AVR Следующий урок

 

Исходный код

Программа avrdude

 

 

Купить программатор можно здесь (продавец надёжный) USBASP USBISP 2.0

 

Смотреть ВИДЕОУРОК

 

AVR Урок 4. Смотрим результаты работы

24 комментария на “AVR Урок 4. Смотрим результаты работы
  1. Roma:

    Спасибо за статьи, мне нравится Ваша манера изложения материала, все последовательно, все разжевано и есть примеры что и как делать. Супер.

  2. Евгений:

    Спасибо за проделанную работу!

     

  3. mixaDD:

    Хочу поделиться своим опытом. Я создал проект с названием Testing. После сборки проекта у меня создавался фаил прошивки с названием Testing.HEX (E:\AVR Studio\C\Test\Testing\Testing\Debug\Testing.hex), если я вводил этот параметр  "-c usbasp -p m8 -B12 -U flash:w:$(ProjectDir)Debug\$(ItemFileName).hex:a" , то авр дуде заходил в папку дебаг и искал там фаил "main.hex", такого файла там не было, соответсвенно была ошибка. Вот с этим параметром у меня было всё норм -c usbasp -p m16 -B12 -U flash:w:$(ProjectDir)Debug\$(TargetName).hex:i  

    * отличие в поиске хекс файла $(TargetName) вместо $(ItemFileName)

    если кому-то помогло то это хорошо!

     

     

    • Алексей:

      Верно, тоже долго мучился, не прошивалось через Студию, пока не заменил $(TargetName) вместо $(ItemFileName)
      Теперь интересно, почему у автора работает через $(ItemFileName). Может он компилирует как то иначе?

  4. Alex:

    mixaDD, помогло. Тлько в конце не ":i"

  5. alex:

    Странно, только в 7 протеусе горит не D0, а D1. 

    А по команде PORTD = 0b00000111 загоряются все три диодика правильно ).

  6. Виктор:

    Все изложено последовательно, доступно к пониманию начинающим.

    На мой взгляд, главное, что материал подкреплен практическим примером.

    Давно хотел получить такую конкретику.

    Огромное спасибо. 

    Успехов и благополучия.

    • И Вам спасибо за внимание и интерес к ресурсу. Я рад, что мои статьи и видео, которым практически уже скоро 2 года, до сих пор популярны и актуальны. Честно говоря, когда я это дело начинал, я не знал, что так будет. Удачи Вам в освоении программирования!

  7. Максим:

    Здравствуйте! вот какая у меня строка аргумента получилась , -p m8 -c stk500v2 -P COM8 -U flash:w:$(ProjectDir)Debug\$(TargetName).hex:a , может кому пригодиться , и не придется тратить время на понимание. данная строка генерируется в AVRDUDE в начале процесса загрузки данных в микроконтроллер, внизу в окошке для просмотра хода событий , как я понял команда -p m8 это сокращенное названия микроконтроллера , -c stk500v2 это названия программатора , -P COM8 это порт , так же можно указать скорость передачи данных с помощью команды -B 115200 , -U flash:w:$(ProjectDir)Debug\$(TargetName).hex:a это путь к файлу .hex. Если что не так указал то буду рад пояснению , только начал изучать эту тему. Огромное Спасибо !!!! автору этих курсов. Сегодня наткнулся на такую статью, как через программу arduino заливают скетч на прямую через программатор в atmega8a. Хотел попробовать проделать это , но увы не чего , не вышло, так как arduino стала уже arduino-1.8.5 и возможно в файле boards нужны другие настройки , еще у меня программатор китайский utk 500 , а в статье был другой . Если кто справился с это проблемой, было бы не плохо если бы поделились ссылкой на статью или видео . Это всё нужно для того , что в интернете много скетчей под arduino которые в свободном доступе , и с одной среды разработки , переделывать на си ++ очень хлопотно , а так очень удобно, нашел скетч и загрузил через программатор в МК

    • Сергиуш:

      Здравствуйтею И мне тоже очень интересно как можно через среду Ардуино ИДЕ заливать скетчи в МК ?
      Очень прошу сообщить, что это за статья ?

  8. liolik13:

    Добрый День! Купил ATmega8a, но мой программатор USBTinyisp v2.0
    в упор его не видит, attiny2313 шьется без проблем. Подключаю программатор через макетку: MOSI — 17,MISO — 18, SCK -19, RESET — 1, VCC — 7 и 20, GND — 8 и 22. Смотрел в youtube Ваш ролик с обзором программатора, все паяные соединения, которые видны совпадают за исключением XTAL1 и XTAL2. Уменьшал ск-сть соединения до 100kB в Sinaprog — Fail! В AVRDUDE пишет все ок, но калибровочные по нулям. И тишина в Google. ШО робить, шо робить? Может кто подскажет? Выудил из ардуинки atmega328p — тоже калибровочные 00.

  9. Виктор:

    Добрый день, может кто знает, установил протеус, но на нём судя по всему нет библиотек, никакую деталь нельзя вывести на макет, пишет library not found, что делать?

    • Александр:

      Попробуй запустить от имени администратора. У меня сработало.

    • Рома:

      В свойствах екзешника поставь чтобы запускался от имени админа. Ну или каждый раз через контекстное мену запускай от имени администратора.

  10. Murz0id:

    Спасибище огромное!

  11. Альберт:

    При запуске проекта в Proteus у меня возникает такая ошибка:
    ISIS Release 8.09.00 (Build 27865) (C) Labcenter Electronics 1990- 2019.
    Compiling design 'C:\Atmel\diodled\diodled.pdsprj'.
    Netlist compilation completed OK.
    Netlist linking completed OK.
    Partition analysis completed OK.
    Simulating partition [5AF5522F]
    PROSPICE 8.08.00 (Build 27367) (C) Labcenter Electronics 1993-2019.
    Loaded netlist 'C:\Users\48C4~1\AppData\Local\Temp\LISA5068.SDF' for design 'diodled.pdsprj'
    AVR Release 8.3SP0 build 25647 for ATMEGA8. [U1]
    AVR: Program property is not defined.
    Real Time Simulation failed to start.

    Гуглил, ничего не нашел по поводу этой ошибки.
    Как решить эту ощибку?

    • Такое подозрение, что путь на кириллице. У Вас, видимо имя пользователя в Windows на кириллице. Исправьте данную ситуацию и скорее всего всё сработает, либо сохраните проект туда, где в пути не будет кириллицы.

  12. Альберт:

    Переимновал и переместил, запустил от имени администратора, не помогло, тоже самая ошибка.

  13. pavpolk1978:

    У меня три ошибки
    mixed model AVR2.DLL failed to authorize — Missing or invalid Customer Key.. [U1]
    Real Time Simulation failed to start.
    Simulation FAILED due to fatal simulator errors.

  14. Сергиуш:

    Что это за обзор ? ПРосто выложитьвидео и притянуть аудиторию ?
    Вот я все сделал правильно, заинсталировал драйвер программатора, согласно инструкции в Уроке 4 дошел до в AVRDude-Prog до «Чтение» Калибровочные ячейки генератора, и получил сообщение — «ОШИБКА»
    И что дальше ???????????
    Какая оштбка ???
    Что делать дальше???
    И какая польза от таких уроков ???
    Пробовал запрограммировать и из AVR Studio? Все сделал согласно описания ….. и никаакого эффекта!!!
    Даже прочитал комментарии к уроку, пробовал заменить (InemFileName) на (TargetName) и никакого эффекта

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*