Задача: эмуляция Arduino в программе Proteus Isis.

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

Собираем Blink

В Arduino IDE создаём скетч:

int i = 0;

void setup() {

pinMode(13, OUTPUT); //устанавливаем 13 порт (со встроенным LED) для вывода

  Serial. begin(9600);

}

void loop() {

i++;

Serial. print(i);  // заходя чуть вперёд, сразу добавлю код для терминала

digitalWrite(13, HIGH); // подаём на 13 порт 1 (5В) — включаем

Serial. println("H");  // светодиод горит – пишем H

delay(500); // пауза 0,5 с

digitalWrite(13, LOW); // подаём на 13 порт 0 (0В) – выключаем

Serial. println("L");  // светодиод погасили – пишем L

delay(500); // пауза 0,5 с

}

Проверяем на железе, должно работать – мигать с периодом в 1 сек и выдавать на терминал такое:

Теперь собираем схему в Протеусе. В Proteus нет Arduino, даже в последней 8-й версии.

Поэтому берём AVR МК ATMega 328P (как в Arduino Uno Rev.3) и смотрим

Соответствие пинов Ардуино портам Атмеги:

(здесь другой ОМК, но однако суть близка)

Итак, схема:

Но где же взять HEX-прошивку?

Запускаем снова Arduino IDE, и открываем нужный скетч, нажимаем Проверить:

Дальше, открываем проводник и пишем там %temp%\ и нажимаем Enter:

Находим там папки с именами buildXXXXXXXXXXXXXXX. tmp:

В каждой из этих папок будет куча файлов, нас интересует файл Blink. cpp. hex - это и есть наш скомпилированный Blink, который можно заливать на микросхему или скормить Протеусу.

Примечание

Когда вы производите изменения с исходным текстом скетча, то папка buildXXXXXXXXX. tmp очищается автоматически, и вам надо заново нажать Проеверить, чтобы в ней появились файлы. 

При дефолтных настройках Протеус будет мигать ну очень медленно – проблема со фьюзами микроконтроллера.

Вот какие должны быть настройки ATМеги, чтобы Proteus не тормозил с блинком:

(настройки фьюзов далее будут «улучшены»)

Прим: 16 МГц – рабочая частота Arduino Uno

2. Добавляем Terminal

Как же в Протеусе запустить Терминал?

Настройки терминала (вроде как дефолтные):

Запускаем моделирование (F12). Для вывода собственно окна терминала ПКМ по значку Virtual Terminal (в период выполнения) и ставим галочку внизу:

А чтобы не было крякозябров, настраиваем Атмегу так:

Теперь запускаем и получаем:

Т. о. LED мигает, терминал порт слушает, контора пишет, всьо чьотко!)

По материалам

http://robocraft. ru/blog/arduino/114.html

http://www. radioprog. ru/?p=25