CraftDuino v2.0
  • - это CraftDuino - наш вариант полностью Arduino-совместимой платы.
  • CraftDuino - настоящий конструктор, для очень быстрого прототипирования и реализации идей.
  • Любая возможность автоматизировать что-то с лёгкостью реализуется с CraftDuino!
Просто добавьте CraftDuino!

Arduino/CraftDuino и PROTEUS

Лично мне, в Arduino IDE очень не хватает отладчика – с этим обязательно нужно что-нибудь сделать :)

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

Например, замечательная программа – ISIS PROTEUS:
— PROTEUS может симулировать несколько МК в одном устройстве (AVR, PIC, Motorola, ARM)
— в поставку PROTEUS входит очень много моделей компонентов.
— можно симулировать любые электронные устройства и не содержащие МК
PROTEUS
Т.о. если нужно проверить какую-нибудь идею или вариант реализации – можно не искать детали, а просто «собрать» схему в PROTEUS-е и посмотреть как она будет работать :)
Симуляция PROTEUS-а очень реалистична — наглядно видна работа устройства,
напряжения и токи в нем.
Причём PROTEUS — это полная система проектирования — от идеи — до результатов работы устройства и файлов для платы.

Как всегда – об этой системе можно почитать ДиХальта.
Итак, попробуем смоделировать Arduino :)

Простейший вариант Arduino/CraftDuino представлен на рисунке выше :)
Да – никаких источников питания и стабилизаторов – просто микроконтроллер и светодиод, который подключён к 19 ножке МК, она же 5-й вывод порта B – она же, согласно Arduino Pin Mapping – digital pin 13 :)
Atmega168 pinmapping
Можно чуть усложнить схему, подключив виртуальный терминал:
PROTEUS
— теперь мы сможем видеть данные, которые наша виртуальная ардуина шлёт в последовательный порт :)

Если на компоненте дважды щёлкнуть левой кнопкой мышки, то появится окошко, в котором можно установить различные параметры.
Например, для микроконтроллера:
PROTEUS
Чтобы загрузить в микроконтроллер программу – через поле “Program File” –указываем путь к .hex-файлу.
Укажем МК частоту 16MHz и загрузим стандартный Blink.

Запускаем симуляцию и видим, как меняется напряжение на светодиоде:

Для наглядности – можно в библиотеке компонентов выбрать светодиод с анимацией:


Теперь можно проверить работу других обучающих скетчей.
Например, светодиод с кнопкой:
— добавляем нужные элементы, загружаем в виртуальный МК .hex со скетчем и вуаля:
Кнопка не нажата:

Нажмём кнопку – и виртуальный светодиод загорается :)


Посмотрим – как работает виртуальный терминал; загрузим в МК скетч Blink_HL

Работает! Сообщения терминала отображаются в маленьком окошке :)

А осциллограф? Грузим в МК скетч шестиканалоного осциллографа :)
Хм… какой-то мусор… ааа я забыл изменить скорость COM-порта!
Дважды щёлкаем на терминале и устанавливаем скорость (Baud Rate) в 38400


Теперь всё работает!

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

Теперь можно запускать свои скетчи вдали от Arduino, используя всю мощь симуляции PROTEUS-а (от виртуальных инструментов до отладки)!

UPD
Проект Протеуса + hex скетча осциллографа

Ссылки:
Система моделирования ISIS Proteus. Быстрый старт.
  • +2
  • 17 ноября 2009, 11:25
  • admin

Комментарии (39)

RSS свернуть / развернуть
+
+1
Что можеть быть причиной того, что я в протеусе не могу на виртуальном терминале получить заданое сообщение ?????? Идут нули!!!
avatar

matlaber

  • 27 января 2010, 01:17
+
0
в статье об этом упоминается — возможно забыли установить скорость COM-порта аналогичную той, которую инициализирует скетч.
avatar

noonv

  • 27 января 2010, 10:27
+
+1
Напротив, нули появляются именно когда скорости совпадают. При разных скоростях сыпятся какие-то символы. Вы не могли бы скинуть мне ваш проект под протеус и скетч под ардуино? плиз.
avatar

matlaber

  • 27 января 2010, 11:05
+
0
Подскажите, как правильно выставить установки для МК ATmega328 в протеусе? Может быть в этом проблема?
avatar

matlaber

  • 27 января 2010, 16:45
+
0
у меня протеус старый — там только atmega8 — для неё просто выставлял тактовую частоту в 16МГц.
Для 328-й, по идее, должно быть так же.
Вечером выложу пример для 8-й меги.
avatar

noonv

  • 27 января 2010, 16:57
+
+1
Проблема в том, что для atmega8 все работает, а вот для atmega328 — сколько не бьюсь, не могу оживить виртуальный терминал!!! Я пользуюсь протеус 7.6.
avatar

matlaber

  • 27 января 2010, 21:18
+
0
Прошу прощения за тормоза=\
Тоже, кстати не сразу разобрался=)
Итак настройки для Atmega328 в Proteus 7.6 такие… барабанная дробь:

Удачи=)
avatar

Zoltberg

  • 1 февраля 2010, 01:55
+
0
Не могу понять, как получить из ArduinoIDE собранный бинарник не на устройство, а в файл, чтобы подключить его к Протусу.
avatar

Vass

  • 10 апреля 2010, 16:47
+
0
поищите во временной директории, как то так Local Settings\Temp\build40910.tmp\
avatar

aspire89

  • 10 апреля 2010, 18:10
+
0
здесь об этом упоминается:
во временной директории вида Local Settings\Temp\build40910.tmp\

в версии IDE 0017 можно было настроить чтобы hex-файлы появлялись в каталоге скетча, но в последней 0018 — почему то это добиться не удалось
avatar

noonv

  • 10 апреля 2010, 18:15
+
+1
Спасибо, конечно, но у меня Linux :)
И да я все-таки нашел где это в линуксе, IDE создает папку вида /tmp/buildXXXXXXXXXXXXXXXXXXX.tmp
в ней можно и поискать.
avatar

Vass

  • 10 апреля 2010, 21:20
+
0
Хм… а как из ArduinoIDE 0018 получить asm файл в папке \local settings\temp\… или еще где? Она же создает только hex и elf файл, а для заливки программы в протеус нужен asm. Ради эксперимента переменовал hex и elf в asm, но, как я и предполагал, оно не заработало. Где достать asm?
avatar

AlexMelyon

  • 4 августа 2010, 22:44
+
0
для заливки в протеус нужен как раз .hex-файл ;)
avatar

admin

  • 4 августа 2010, 22:46
+
0
Я могу ошибаться, но только прошивка в hex файле, а программа в менюшке «Source > Add\Remove Source Files...». В чем я ошибаюсь?
avatar

AlexMelyon

  • 4 августа 2010, 22:58
+
0
речь и была о прошивке. А вот с остальными файлами в 0018 действительно проблема :(
avatar

admin

  • 4 августа 2010, 23:03
+
0
Как думаете с помощью дизассемблера можно будет сделать asm файл?
avatar

AlexMelyon

  • 4 августа 2010, 23:05
+
0
Нет… глупость говорю. Как бы так сделать asm..?
avatar

AlexMelyon

  • 4 августа 2010, 23:17
+
+1
Да asm не нужен скорей всего. Кстати, вам сопственно зачем?
Если просто проверить — то скармить протеусу можно и hex и rom.
Если с отладкой — то к hex-у нужно ещё .cof приложить, его компилятор генерирует(естественно компилятор нужно соотвествующим образом настроить)


ещё тут можно почитать
avatar

Zoltberg

  • 7 августа 2010, 13:09
+
0
Мне, собственно, чтобы компилить файлы в ArduinoIDE и заливать их в Proteus. Прошивка то есть — хочу файлы проверять, хотя бы тот же блинк. Но у ардуиноиде же нет настроек компилятора, а под atmega168 больше у меня ничего не умеет компилить. Причем надо именно с прошивкой ардуины для атмеги, но не с любой другой, т.к мне кажется проекты из под ардуины работают только с ней
avatar

AlexMelyon

  • 10 августа 2010, 21:19
+
0
оО я ничего не путаю когда вижу что проект blink забивается в виде hex вместо прошивки? мне казалось его надо как раз в asm'е в «Source->Add»
avatar

AlexMelyon

  • 10 августа 2010, 21:29
+
0
Ничего не путаете, я ж картинку зачем рисовал-старался в предыдущем каменте, там тоже красным кружком обведён именно hex. И довольно подробно разрисованно как туда добратся ;)
avatar

Zoltberg

  • 10 августа 2010, 21:37
+
0
Ну так и заливайте hex-ы=)
А компилятор ручками настраивается, не через ИДЕ.
Ошибаетесь, есть у вас компилятор=) Внимательно почитайте эту статью. Там всё написано, и где в папке ардуиныИДЕ компилятор живёт, и как его настроить.
Правда чтоб генерить разные файлы, (cof, вчастности) придётся изучить ещё и эту статью.
Но это всй нужно только для отладки, для ваших целей хватит и hex-а.
avatar

Zoltberg

  • 10 августа 2010, 21:56
+
0
а куда совать *.cof? в сорц?
avatar

AlexMelyon

  • 11 августа 2010, 01:42
+
0
Ничего страшного если в симуляции активен пин 1 (reset)? пробовал на разных проектах для atmega168 и atmega8. Все равно активен
avatar

AlexMelyon

  • 11 августа 2010, 13:08
+
+1
Вот нашел эмулятор ардуино VirtualBreadboard не нужно хекс генерить, работает напрямую со скетч кодом. До протеуса ему конечно еще далеко, но в нём уже есть приличная библиотека элементов.

avatar

svyaz

  • 24 августа 2010, 01:54
+
0
Подскажите пожалуйста как открыть виртуальный терминал? Ну все уже кнопки нажал :) не могу найти…
avatar

conysSM

  • 2 февраля 2011, 07:36
+
0
Отвечать не надо уже нашёл. С левой стороны кнопка «виртуальные инструменты», нажав на неё появиться список меню, в нём и есть «виртуальный терминал».
avatar

conysSM

  • 2 февраля 2011, 08:30
+
0
В Virtual BreadBoard есть недостаток-лагает. У меня часто не запускает проекты. Тольо те, что получены изменением станадартных
avatar

MAFia

  • 26 сентября 2011, 15:11
+
0
Никак не могу считать значение потенциометра в Proteus, каша какаято с портами получается.
К примеру

int sensorPin = 3;
int ledPin = 13;
int sensorValue = 0;

void setup()
{
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  sensorValue = analogRead(sensorPin);
  digitalWrite(ledPin, HIGH);
  delay(sensorValue);
  digitalWrite(ledPin, LOW);
  delay(sensorValue);
  Serial.println(sensorValue);
  analogWrite(5, sensorValue);
}

В терминале Proteus всегда sensorValue пишет = 1023, analogWrite(5, sensorValue)поднимает PD5(11-ю ногу)на HIGH(т.е. 5V)
На схеме ATMEGA328P, переменный резистор 1К, диод и терминал.

Подскажите где загвоздка? Это Proteus гонит или я? :-)
avatar

sabeshkin

  • 12 декабря 2011, 09:42
+
0
avatar

Zoltberg

  • 12 декабря 2011, 10:18
+
0
avatar

sabeshkin

  • 12 декабря 2011, 11:14
+
0
О_о спасибо большое за ссылку, я тоже ошибочно полагал что питание берётся внутреннее, кстати странно что это не реализовано :-)
avatar

sabeshkin

  • 12 декабря 2011, 11:18
+
0
Остался только один вопрос — analogWrite(5, sensorValue) почему значение передаётся на цифровой вывод PD5? Как указать что мне нужен вывод PC5?
avatar

sabeshkin

  • 12 декабря 2011, 11:23
+
0
В стать есть рисуночек robocraft.ru/blog/arduino/54.html
Аналоговые пины тоже могут использоваться как цифровые, номера с 14 по 19.
avatar

Zoltberg

  • 12 декабря 2011, 13:05
комментарий был удален

+
0
Здравствуйте, я так и не понял, как добиться полного марафета с исходником из arduino IDE ??? Так чтоб при дебагге в Proteus прямо по коду исходника шагать. Какой code generation tool выбирать? нужно ли конвертировать исходник из duinoIDE, и как это проще сделать?
avatar

r0m

  • 28 февраля 2012, 16:42
+
0
ISIS Proteus 7.2 SP2 в режиме эмуляции атмеги8 с настройками 328 со скетчем «blink» жалуется: pc=0020 is outside of rom space. И как интересно заставить ее оказаться в нужных границах ROM? в общем, долго думал, решения не нашел. на радиокоте говорят, что это бывает если занять больше половины флеша, ну извините блинк-то маленький, не думаю что он займет больше 1 кб.

что характерно, обычная логика эмулируется на ура, нарисовал вот этот (http://lib.qrz.ru/files/images/usefulschemes/book1/chapter3/3-91.preview.jpg) светофор на ТТЛ, и свою выбиралку MP3 записи на FM модуляторе (нужное количество раз нажимет кнопку «next track» в зависимости от цифры в двоичной системе, установленной дипами S1-S8) — s019.radikal.ru/i609/1204/5b/81b3d17c1b5d.jpg (это уже кмоп) — обе схемы эмулируются на ура, да и чего бы не эмулировались, я их обе собирал когда-то.

пробовал версию 7.6 SP4, не обадовала ибо падает постоянно. к тому же 7.2 у меня portable, очень удобно что не надо устанавливать.

буду крайне рад, если кто поможет победить ошибку с атмегой. макет с тинькой из примера тоже работает, так что склоняюсь к заключению что сама программа тут ни при чем.
avatar

hcorwin

  • 1 апреля 2012, 09:12
+
0
А что означает «в режиме эмуляции атмеги8 с настройками 328»?
На кой это?
Почему нельзя сделать скетч под мегу8, если схема для неё?
Или уж схему переделать под мегу328?
Ругается Протеус, судя по всему, именно на разницу в размере памяти меги8 и 328.
Возможно, он пытается залить весь объём флеша, со всеми нулями, на 32 кб, а оно не влазит.

Кстати, был у мня Протеус7.6сп4, нормально работал, пока ключ не сдох
avatar

able

  • 1 апреля 2012, 10:02
+
0
У меня Протеус 7.1 секунд 5 тратит на то чтоб зажечь или потушить светодиод из стандартного Блинка. Иногда пишет, что симуляция запущена не рилтайм потому что процессор сильно загружен. Внизу в статусной строке пишет что CPU load 87%, при том, что диспетчер задач показывает только 24%. У меня core5, я не думаю что такая «мегазадача» как блинк может отжирать какие-то нереальные ресурсы. Кто-нибудь в курсе это лечится как-то?
avatar

zveruga

  • 18 мая 2012, 21:31

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.