Как залить программу в atmega8 proteus. Моделирование устройства. В этом учебном курсе будет рассказано и показано на простых примерах как

Проектирование схем электрических принципиальных с использованием микроконтроллеров в программной среде Proteus 8.1. Часть 2

В Proteus реализовано большое количество функций для профессионального проектирования микроэлектронных устройств, ориентированных на самые современные средства моделирования. Одной из таких функций является имитация работы микроконтроллеров.

В этой статье процесс моделирования схем с использованием микроконтроллеров рассмотрен на примере микроконтроллера 80С51.

Моделирование схемы включающей микроконтроллер и трансляция программного кода.

Для наглядной демонстрации работы программы инициализации микроконтроллера воспользуемся цветными пробниками логических уровней 0 и 1. Для того, что бы добавить пробник в рабочее поле проекта, необходимо вызвать окно Pick Devices (рис. 1) и в поле Category выбрать из списка библиотеку Debugging Tools, в поле Sub-category выбрать строку Logic Probes, а в поле Results – строку LOGICPROBE, затем нажать кнопку ОК.

Рис. 1. Выбор пробника логических уровней в окне Pick Devices.

В результате чего окно Pick Devices будет закрыто, а символ пробника будет прикреплен к курсору мыши, при помощи которого необходимо поместить символ в нужное место на схеме - щелкнуть в нужном месте схемы левой кнопкой мыши столько раз, сколько пробников необходимо разместить.

Добавим в рабочее поле проекта микроконтроллер 80С51 (подробно процесс создания нового проекта с использованием микроконтроллера в Proteus был рассмотрен в первой части статьи) и подсоединим пробники к исследуемым линиям портов микроконтроллера. В результате чего, при появлении на выходе линии порта значения логической единицы, пробник будет подсвечен красным цветом, при появлении же значения логического нуля пробник будет подсвечен синим цветом. Так же на пробниках визуально отображаются значения 0 и 1.

После того как в рабочей области проекта собрана схема (рис. 2), а на вкладке Source Code введен код программы (рис. 3), можно запускать моделирование.

Рис. 2. Демонстрационная схема с использованием микроконтроллера и цветных пробников логических уровней.

Рис. 3. Программа инициализации микроконтроллера.

Процесс моделирования запускается при помощи кнопки Run the simulation, которая находится в левом нижнем углу окна программы. Для того, что бы временно приостановить процесс симуляции, используйте кнопку Pause the simulation, or start up at time 0 if stopped (кнопка находится в левом нижнем углу окна программы). Остановить моделирование можно при помощи кнопки Stop the simulation.

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

  • *.hex – файл машинного кода (рис. 4);
  • *.asm – файл с ассемблерным кодом программы (рис. 5);
  • *.sdi – файл отладки программы инициализации, содержимое которого можно также просмотреть на вкладке 8051 CPU Source Code (рис. 6).

Рис. 4. Нex файл машинного кода.

Рис. 5. Файл с ассемблерным кодом программы.

Рис. 6. Вкладка 8051 CPU Source Code.

Программа инициализации микроконтроллера пишется на языке программирования asm51. Это язык ассемблера, который предназначен специально для написания программ для микроконтроллеров семейства х51. В том случае, если в ходе компиляции кода программы инициализации микроконтроллера были обнаружены ошибки, они будут отмечены компилятором в файле *.lst. При этом hex файл не будет сгенерирован до тех пор, пока ошибки не будут устранены. В файле листинга для каждой обнаруженной ошибки компилятор указывает причину ошибки и номер строки, в которой она была обнаружена. На рисунке 7 представлен фрагмент файла *.lst, в котором отладчик сообщает об ошибке номер 2 (Неопределенный идентификатор), которая состоит в том что в коде программы неверно указано название порта ввода/вывода данных (в используемом микроконтроллере нет порта с названием Р6).

Рис. 7. Фрагмент файла листинга *.lst.

Отладка программы инициализации выполняется на вкладке 8051 CPU Source Code, которая отображается после приостановки процесса симуляции. Для того, что бы временно приостановить симуляцию схемы, используйте кнопку Pause the simulation, or start up at time 0 if stopped (кнопка находится в левом нижнем углу окна программы). Отчет об ошибках полученных в результате трансляции программного кода отображается в нижней части вкладки Source Code на панели VSM Studio Output (рис. 8).

Рис. 8. Отчет об ошибках полученных в результате трансляции программного кода.

Состояние памяти и регистров микроконтроллера можно просмотреть при помощи следующих команд основного меню программы:

  • Debug/8051 CPU Registers (рис. 9а);
  • Debug/8051 CPU SFR Memory (рис. 9б);
  • Debug/8051 CPU Internal (IDATA) Memory (рис. 9в).

Рис. 9. Состояние: (а) регистров, (б) памяти SFR, (в) внутренней памяти микроконтроллера.

Меню Debug (рис. 10) доступно для вызова во время приостановки симуляции схемы.

Рис. 10. Меню Debug.

Проанализируем работу демонстрационной схемы, представленной на рисунке 2. На вкладке main.asm (рис. 3) при помощи команды mov были даны указания программе инициализации микроконтроллера записать в порт Р2 следующие значения линий порта Р2.7-Р2.0 – «00001111», а в порт Р1 – значения линий порта Р1.7-Р1.0 – «01010101». После запуска моделирования при помощи цветных пробников мы можем проверить правильность работы программы. Как видно из рисунка 2 на выводах портов микроконтроллера Р1 и Р2 действительно та комбинация которую мы указали в коде программы.

Сопряжение микроконтроллера х51 с микросхемами 7-сегментных индикаторов в Proteus.

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

На рисунке 11 представлен пример соединения микросхемы 7-сегментнного индикатора с микроконтроллером. Принцип соединения микроконтроллера с элементами схемы такой же, как и для других компонентов схемы.

Рис. 11. Сопряжение микросхемы 7-сегментного индикатора с микроконтроллером.

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

Для управления 7-сегментным индикатором в схеме используется двоично-десятичный дешифратор 74HC4511 (отечественный аналог 1564ИД23). Микросхема дешифратора выполняет преобразование двоичного кода полученного с микроконтроллера в код цифры для дальнейшего отображения на микросхеме 7-сегментного индикатора. Микросхема 74HC4511 – это специальный дешифратор, предназначенный для преобразования двоичного кода в семисегментный код и управления семисегментными и жидкокристаллическими индикаторами. Входы А, B, C, D – информационные входы. Выходы QA-QG – выходы на семисегментный индикатор. Двоичные коды и соответствующие им десятичные цифры представлены в таблице 1.

Таблица 1. Двоичные коды и соответствующие им десятичные цифры.

Двоичный код

Десятичная цифра

Для того, что бы добавить микросхему дешифратора в рабочее поле проекта, необходимо открыть окно Pick Devices (рис. 12а) и в его левой верхней части в поле Category выбрать из списка библиотеку TTL 74HC series. Ниже поля Category находится поле Sub-category, в котором необходимо выбрать пункт Decoders. В поле Results выберите микросхему 74HC4511 и нажмите на кнопку ОК. Для того, что бы добавить микросхему семисегментного индикатора с общим катодом, выберите в окне Pick Devices (рис. 12б) в поле Category библиотеку Optoelectronics, в поле Sub-category пункт 7-Segment Displays, а в поле Results – 7SEG-MPX1-CC.

Рис. 12. Выбор компонентов схемы в окне Pick Devices: (а) дешифратора, (б) семисегментного индикатора.

В представленном на рисунке 11 примере индикатор отображает цифру 3. Для этого на вкладке main.asm (рис. 13) при помощи команды mov были даны указания программе инициализации микроконтроллера записать в порт Р2 следующие значения линий порта Р2.7-Р2.0 – «00000011».

Рис. 13. Запись двоичного кода цифры 3 в порт Р2 микроконтроллера.

После запуска моделирования мы можем проверить правильность работы программы. Как видно из рисунка 11 на выводах порта микроконтроллера Р2 действительно та комбинация которую мы указали в коде программы, а индикатор отображает цифру 3.

Программирование микроконтроллеров х51.

При написании кода программы для микроконтроллера х51 необходимо владеть синтаксисом языка программирования asm51. Наиболее часто используемые команды asm51 представлены в таблице 2.

Таблица 2. Система команд микроконтроллера х51.

Название команды

Мнемокод

Пересылка в аккумулятор из регистра

Пересылка в регистр из аккумулятора

Обмен аккумулятора с регистром

Сложение аккумулятора с регистром

Сложение аккумулятора с константой

Инкремент аккумулятора

Инкремент регистра

Декремент аккумулятора

Декремент регистра

Логическое И аккумулятора и регистра

Логическое ИЛИ аккумулятора и регистра

Сброс аккумулятора

Инверсия аккумулятора

Переход, если аккумулятор равен нулю (mt – метка в коде программы)

Переход, если аккумулятор не равен нулю (mt – метка в коде программы)

Пустая операция, которая может быть использована в качестве задержки на 1мкс

Выход из подпрограммы

‛стрелка“ ( F 12) – запуск симуляции

‛двойная стрелка“ ( F 11) – пошаговая (по командам) симуляция

‛две палки“ ( pause ) – пауза

‛прямоугольник“ ( Esc ) – стоп

Или буквой «Р»

Выберем компоненты:

И соберем вот такую схему:

Но схема получилась «захламленной», и переделаем ее в:

И в разделе Program File указываем ему файл-прошивку (hex )

Закрываем. Включаем симуляцию ( F12 )

Часы запустились.

Стоит напомнить, что на схеме:

" Красный " - логическая " 1 "
" Синий " - логический " 0 "
" Серый " – неопределенно-высоко-импедансное " Z - состояние"
" Желтый " - конфликт на линии.

Остановим проект. Нажмем правой кнопкой мыши на процессоре.Откроется:

В открывшемся меню в пункте AVR нам доступны:

CPU Registers - Ul – регистры общего назначенияконтроллера.

EPROM Memory - Ul – память eeprom

Program Memory - Ul – память программ (flash)

Data Memory - Ul – содержимое ОЗУ

I / O Registers - Ul – содержимое регистров ввода-вывода (вмикроконтроллерах AVR регистры ввода-вывода – управляющие регистры перифериеймикроконтроллера)

Source Code – Ul – текст программы

CPURegisters:

EPROM Memory :

Program Memory :

Data Memory :

ОЗУ контроллера, в вершине (по адресу) можно увидетьсодержимое стека

I / O Registers :

Source Code :

Выше в этомменю могут быть полезен пункт Configure Diagnostics ...(жук)

Насмотри егоподробнее.

При нажатии нанего откроется панель:

Из нее выбираем ATMEGA 32(Ul ).Панель примет вид:

В открывшемся«меню» появятся периферийные модули выбранного микроконтроллера. При выделении,им можно будет задавать «уровень отладки»:

Disabled – отключено, программа не будет реагировать насобытия в модуле

Warnings Onl у – только предупреждения, при этом прикаком-то событии в модуле будет записываться сообщение(в SIMULATION LOG).

Full Trace - при каком-то событии в модуле будетзаписываться предупреждение (в SIMULATION LOG), но программа будет идти дальше.

Debug – при любом событии в указанном модуле,программа будет останавливаться.

Пример: будемотслеживать прерывания в МК. Выбираем « Interrupt Events », ставим уровень « Debug »:

Приостанавливаемвыполнение программы. ОткрываемSIMULATION LOG . Там показаны события – вызовы прерываний. Такие вещикрайне необходимы при отладке в сложных проектах. Там же есть «ссылки» на«точки» в программе, где эти события были вызваны. К примеру у нас всепрерывания были вызваны из адреса 0х0086. Нажав на значение «ссылку», можнопопасть в участок программы, откуда произошел вызов.

Но этиокна будут открыты, если проект остановлен. Для отображения информации осостоянии регистров ввода-вывода, предназначен Watch Window. Открывается: меню = > Debug => Watch Window. Появитсяокно:

При нажатии правой кнопки,выйдет меню:

Для примера, занесем в Watch Window содержимое счетчика секунд наших часов (r 17) и содержимое порта, отображающего счетчик секунд.

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

Главным преимуществом и отличием Протеус от других подобных программ для симуляции работы электрических цепей, — это возможность выполнять симуляцию работы микропроцессоров и микроконтроллеров (МК). Библиотека Proteus содержит такие основные типы МК: AVR, ARM, PIC, Cortex.

Как и в любом другом аналогичном софте, предназначенном для симуляции работы электрических цепей, данный софт имеет ряд виртуальных измерительных приборов: амперметры, вольтметры, ваттметр, осциллограф, логический анализатор, счетчик и т.п.

Также в Протеусе встроены инструменты для автоматизированной разработки печатных плат и для создания их 3D моделей.

Для симуляции нашей первой программы, из библиотеки нам понадобится только микроконтроллер ATmega8, резистор и светодиод.

Настройка Proteus 8.4

Любая настройка начинается с запуска. В появившемся окне кликаем по значку диода с конденсатором Schematic Capture (Схемотехника).

После этого откроется окно с пустым полем.

Теперь добавим микроконтроллер ATmega8, резистор и светодиод.

По умолчанию установлен подходящий режим Component Mode поэтому, чтобы попасть в меню выбора электронных и других элементов, достаточно кликнуть по кнопке P, расположенной на панели DEVICE (устройство). После этого откроется окно, в котором необходимо выбрать в меню Category (Категории) Microprocessors ICs (микропроцессоры), в Sub-Category (Подкатегории) – AVR Family . Далее в окне Results находим и выделяем МК ATMEGA8 . Кликаем по кнопке OK .

После этого он появится в меню окна DEVICE и его уже можно перетягивать мышкой в рабочую область.

Аналогичным образом добавляем резистор и светодиод.

Светодиоды находятся в категории Optoelectronics (Оптоэлектроника) и далее в подкатегории LEDs . В данном примере он выбран зеленого цвета LED-GREEN .

Теперь собираем схему, как показано на рисунке ниже. К выводу МК PC0 подсоединяем резистор R1, который соединяем с анодом светодиода D1. Катод светодиода соединяем с «землей». Элемент «земля» находится в меню вкладки Terminals Mode .

Чтобы изменить значение сопротивления резистора R1 нужно дважды кликнуть мышкой по нему. В открывшемся окне устанавливаем 300 Ом в строке Resistance (сопротивление).

Обратите внимание, что выводы микроконтроллера в Proteuse для удобства объединены в отдельные группы по портам. Однако это не соответствует расположению их в реальном МК. Кроме того отсутствуют выводы, к которым подается напряжение для питания МК. Эта функция установлена по умолчанию.

Запись программы в память микроконтроллера

Теперь осталось записать наш код в виртуальный МК. Дважды кликаем по нему мышкой и в появившемся новом указываем путь к файлу с кодом. Место расположения файла находим кликнув по значку в виде открытой папки в строке Program File .

В папке с проектом находим папку Debug и в ней выбираем файл с расширением HEX . После этого нажимаем кнопку Открыть .


В этом учебном курсе по avr я постарался описать все самое основное для начинающих программировать микроконтроллеры avr . Все примеры построены на микроконтроллере atmega8 . Это значит, что для повторения всех уроков вам понадобится всего один МК. В качестве эмулятора электронных схем используется Proteus - на мой взгляд, - лучший вариант для начинающих. Программы во всех примерах написаны на компиляторе C для avr CodeVision AVR. Почему не на каком-нибудь ассемблере? Потому что начинающий и так загружен информацией, а программа, которая умножает два числа, на ассемблере занимает около ста строк, да и в сложных жирных проектах используют С. Компилятор CodeVision AVR заточен под микроконтроллеры atmel, имеет удобный генератор кода, неплохой интерфейс и прямо с него можно прошить микроконтроллер.

В этом учебном курсе будет рассказано и показано на простых примерах как:

  • Начать программировать микроконтроллеры, с чего начать, что для этого нужно.
  • Какие программы использовать для написания прошивки для avr, для симуляции и отладки кода на ПК,
  • Какие периферийные устройства находятся внутри МК, как ими управлять с помощью вашей программы
  • Как записать готовую прошивку в микроконтроллер и как ее отладить
  • Как сделать печатную плату для вашего устройства
Для того, чтобы сделать первые шаги на пути программирования МК, вам потребуются всего две программы:
  • Proteus - программа-эмулятор (в ней можно разработать схему, не прибегая к реальной пайке и потом на этой схеме протестировать нашу программу). Мы все проекты сначала будем запускать в протеусе, а потом уже можно и паять реальное устройство.
  • CodeVisionAVR - компилятор языка программирования С для AVR. В нем мы будем разрабатывать программы для микроконтроллера, и прямо с него же можно будет прошить реальный МК.
После установки Proteus, запускаем его
Он нам предлагает посмотреть проекты которые идут с ним, мы вежливо отказываемся. Теперь давайте создадим в ней самую простую схему. Для этого кликнем на значок визуально ничего не происходит. Теперь нужно нажать на маленькую букву Р (выбрать из библиотеки) в панели списка компонентов, откроется окно выбора компонентов
в поле маска вводим название компонента, который мы хотим найти в библиотеке. Например, нам нужно добавить микроконтроллер mega8
в списке результатов тыкаем на mega8 и нажимаем кнопку ОК . У нас в списке компонентов появляется микроконтроллер mega8
Таким образом добавляем в список компонентов еще резистор, введя в поле маска слово res и светодиод led

Чтобы разместить детали на схеме, кликаем на деталь, далее кликаем по полю схемы, выбираем место расположения компонента и еще раз кликаем. Для добавления земли или общего минуса на схему слева кликаем "Терминал" и выбираем Ground. Таким образом, добавив все компоненты и соединив их, получаем вот такую простенькую схемку
Все, теперь наша первая схема готова! Но вы, наверное, спросите, а что она может делать? А ничего. Ничего, потому что для того, чтобы микроконтроллер заработал, для него нужно написать программу. Программа - это список команд, которые будет выполнять микроконтроллер. Нам нужно, чтобы микроконтроллер устанавливал на ножке PC0 логический 0 (0 вольт) и логическую 1 (5 вольт).

Написание программы для микроконтроллера

Программу мы будем писать на языке С в компиляторе CodeVisionAVR. После запуска CV, он спрашивает нас, что мы хотим создать: Source или Project Мы выбираем последнее и нажимаем кнопку ОК. Далее нам будет предложено запустить мастер CVAVR CodeWizard (это бесценный инструмент для начинающего, потому как в нем можно генерировать основной скелет программы) выбираем Yes
Мастер запускается с активной вкладкой Chip, здесь мы можем выбрать модель нашего МК - это mega8, и частоту, на которой будет работать МК (по умолчанию mega8 выставлена на частоту 1 мегагерц), поэтому выставляем все, как показано на скриншоте выше. Переходим во вкладку Ports
У микроконтроллера atmega8 3 порта: Port C, Port D, Port B. У каждого порта 8 ножек. Ножки портов могут находиться в двух состояниях:
  • Выход
С помощью регистра DDRx.y мы можем устанавливать ножку входом или выходом. Если в
  • DDRx.y = 0 - вывод работает как ВХОД
  • DDRx.y = 1 вывод работает на ВЫХОД
Когда ножка сконфигурирована как выход, мы можем выставлять на ней лог 1 (+5 вольт) и логический 0 (0 вольт). Это делается записью в регистр PORTx.y. Далее будет подробно рассказано про порты ввода-вывода. А сейчас выставляем все, как показано на скриншоте, и кликаем File->Generate, Save and Exit. Дальше CodeWizard предложит нам сохранить проект, мы его сохраняем и смотрим на код:

#include //библиотека для создания временных задержек void main(void) { PORTB=0x00; DDRB=0x00; PORTC=0x00; DDRC=0x01; // делаем ножку PC0 выходом PORTD=0x00; DDRD=0x00; // Timer/Counter 0 initialization TCCR0=0x00; TCNT0=0x00; // Timer/Counter 1 initialization TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization MCUCR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00; // Analog Comparator initialization ACSR=0x80; SFIOR=0x00; while (1) { }; }


Здесь вам может показаться все страшным и незнакомым, но на самом деле все не так. Код можно упростить, выкинув инициализацию неиспользуемых нами периферийных устройств МК. После упрощения он выглядит так:

#include //библиотека для работы с микроконтроллером mega8 #include //библиотека для создания временных задержек void main(void) { DDRC=0x01; /* делаем ножку PC0 выходом запись 0x01 может показаться вам незнакомой, а это всего лишь число 1 в шестнадцатиричной форме, эта строка будет эквивалентна 0b00000001 в двоичной, далее я буду писать именно так.*/ while (1) { }; }


Всё хорошо. Но для того, чтобы светодиод замигал, нам нужно менять логический уровень на ножке PC0. Для этого в главный цикл нужно добавить несколько строк:

#include //библиотека для работы с микроконтроллером mega8 #include //библиотека для создания временных задержек void main(void) { DDRC=0x01; /* делаем ножку PC0 выходом запись 0x01 может показаться вам незнакомой, а это всего лишь число 1 в шестнадцатиричной форме, эта строка будет эквивалентна 0b00000001 в двоичной, далее я буду писать именно так.*/ while (1)//главный цикл программы {// открывается операторная скобка главного цикла программы PORTC.0=1; //выставляем на ножку 0 порта С 1 delay_ms(500); //делаем задержку в 500 милисекунд PORTC.0=0; //выставляем на ножку 0 порта С 0 delay_ms(500); //делаем задержку в 500 милисекунд };// закрывается операторная скобка главного цикла программы }


Все, теперь код готов. Кликаем на пиктограму Build all Project files, чтобы скомпилировать (перевести в инструкции процессора МК) нашу программу. В папке Exe, которая находится в нашем проекте, должен появиться файл с расширением hex, это и есть наш файл прошивки для МК. Для того, чтобы нашу прошивку скормить виртуальному микроконтроллеру в Proteus, нужно два раза кликнуть на изображении микроконтроллера в протеусе. Появится вот такое окошко
кликаем на пиктограму папки в поле Program File, выбераем hex - файл нашей прошивки и нажимаем кнопку ОК. Теперь можно запустить симуляцию нашей схемы. Для этого нажимаем кнопку "Воспроизвести" в нижнем левом углу окна Протеус.

Наверняка, многие из читателей данного сайта хотели бы самостоятельно разработать и собрать какое-нибудь устройство на МК AVR. Но причин, по которым это затруднительно сделать в железе, может быть масса. Например, проживание в сельской местности, где нет радиомагазинов с большим выбором радиодеталей. Хотя в таком случае, как всегда, нам приходит на помощь сайт Али экспресс. Либо ограниченность бюджета. Особенно это актуально для школьников и студентов, еще не имеющих постоянного источника дохода.

Так как же быть в таком случае? Здесь на помощь нам приходят специальные программы-симуляторы, специально созданные для отладки схем.

Одну из них, Proteus версию 7.7, мы и разберем в этой статье применительно к нашему проекту. Скачать ее можно на Рутрекере.

Что же нам дает эта программа? Начинающие подумают, что она слишком сложная для освоения. Нет, это не так. Просто всеми функциями программы при эмуляции наших первых проектов мы пользоваться не будем. Освоить её основы реально за один-два вечера. Что она дает нам в плане изучения работы с микроконтроллерами? Там, например, есть визуальное представление работы светодиодов, дисплеев в реальном времени. Можно выбрать для эмуляции работы множество типов МК AVR, в том числе и те, на которых будут основаны наши уроки: Tiny2313 и Mega8. Что это означает и как это осуществляется? Мы пишем код нашей прошивки, компилируем его, получаем нужный нам HEX-файл и виртуально прошиваем наш МК в программе Proteus. Причем мы также можем изменить и фьюз биты нашего виртуального МК.

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

Вот такое окно у нас открывается сразу после запуска программы (кликните для увеличения):

Затем нам нужно выбрать из библиотеки те радиодетали, которые нам нужны для проекта и поместить их в список деталей. Их мы затем сможем выбрать и установить на рабочее поле. В нашем проекте мы будем использовать МК Attiny2313, желтый светодиод LED-YELLOW (он хорошо «светится» в Протеусе) и резистор RES для ограничения тока, протекающего через светодиод. Иначе мы, как бы это смешно не звучало, «спалим» виртуальный светодиод:-).

Для того, чтобы выбрать эти радиоэлементы, мы должны кликнуть по буковке «Р»:

После того, как кликнули, выйдет вот такое окошко:

В поле «Маска» вбиваем то, что хотим найти, а именно, наш МК, светодиод и резистор

Набираем в поле Маска “Tiny2313” и кликаем по найденному нами МК в графе «Результаты(1)»:

Затем повторяем то же самое с резистором. Вбиваем «res»:

и точно также ищем светодиод:

Ну вот, теперь все эти три элемента у вас должны отобразиться в графе «Устройства»:

Теперь кликаем по черной стрелочке, и потом уже в списке выбираем нужный нам радиоэлемент:

Слева в вертикальной колонке мы видим значок «Терминал». Нас там интересуют две строчки: Power и Ground. Это соответственно в нашей схеме +5 вольт питания и земля. На МК питание подавать не надо, оно подается автоматически. Для схемы мы берем только значок «земля».

Вытаскиваем все радиоэлементы на рабочее поле

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

Сразу скажу, не пытайтесь установить один вывод детали впритык к другому или даже внахлест, без использования линий-связей. Программа не поймет это как соединение и схема работать не будет.

Нам также нужно изменить номинал резистора. По умолчанию он не подходит для нашей схемы. Как это сделать?

Нажимаем правой кнопкой мыши на резисторе, выбираем Правка свойств

А потом меняем значение на 200 Ом. Вполне хватит, что наш виртуальный светодиод не помер)

Иногда рабочее поле у нас пытается убежать с экрана, тогда нам нужно, используя скроллинг колесика мыши изменить масштаб, и кликнуть, установив зеленую рамку в левом верхнем углу так, чтобы весь наш проект оказался внутри нее

Кстати, хочу сразу сказать, если мы совершили какое-то ошибочное действие, нам достаточно нажать кнопку «Отменить» и последнее действие будет отменено. Думаю, многие это знают из сторонних программ, но мало ли).

Итак, мы собрали схему. Теперь надо залить прошивку в наш микроконтроллер и посмотреть, как же это выглядит в действии. Для этого нам нужно кликнуть правой кнопкой мыши по МК и нажать иконку с изображением желтой папки в графе Program Files. Кстати, здесь же можно при необходимости выставить фьюз биты (кликните для увеличения картинки):

Затем нужно выбрать файл прошивки с расширением *.HEX и нажать «Открыть». Все готово, можно эмулировать проект.

(для увеличения кликните по картинке)

Для начала эмуляции нужно нажать кнопочку «треугольник» в нижнем левом углу программы «Протеус»:

У нас начнется эмуляция. Мы увидим, как мигает светодиод. В какой-то момент времени наш светодиод будет светиться. Смотрите как ярко горит желтым цветом 🙂

А потом он снова будет тухнуть:

Так выглядит иконка сохраненного проекта на рабочем столе:

Надеюсь, у вас, читатели, не составит труда собрать этот проект самостоятельно и в дальнейшем, прокачав скилл, вы легко сможете самостоятельно собрать любой более сложный проект. Готовый проект для программы Proteus 7.7 и прошивку прикрепил в этом архиве.

Ну вот и все! Ниже видео работы схемы, а также всех этапов эмуляции:



Просмотров