Лично мне, в Arduino IDE очень не хватает отладчика – с этим обязательно нужно что-нибудь сделать 🙂
Но ведь уже существуют пакеты для разработки электронных устройств от схемы до печатной платы.
Например, замечательная программа – ISIS PROTEUS:
— PROTEUS может симулировать несколько МК в одном устройстве (AVR, PIC, Motorola, ARM)
— в поставку PROTEUS входит очень много моделей компонентов.
— можно симулировать любые электронные устройства и не содержащие МК
Т.о. если нужно проверить какую-нибудь идею или вариант реализации – можно не искать детали, а просто «собрать» схему в PROTEUS-е и посмотреть как она будет работать 🙂
Симуляция PROTEUS-а очень реалистична — наглядно видна работа устройства,
напряжения и токи в нем.
Причём PROTEUS — это полная система проектирования — от идеи — до результатов работы устройства и файлов для платы.
Как всегда – об этой системе можно почитать ДиХальта.
Итак, попробуем смоделировать Arduino 🙂
Простейший вариант Arduino/CraftDuino представлен на рисунке выше 🙂
Да – никаких источников питания и стабилизаторов – просто микроконтроллер и светодиод, который подключён к 19 ножке МК, она же 5-й вывод порта B – она же, согласно Arduino Pin Mapping – digital pin 13 🙂
Можно чуть усложнить схему, подключив виртуальный терминал:
— теперь мы сможем видеть данные, которые наша виртуальная ардуина шлёт в последовательный порт 🙂
Если на компоненте дважды щёлкнуть левой кнопкой мышки, то появится окошко, в котором можно установить различные параметры.
Например, для микроконтроллера:
Чтобы загрузить в микроконтроллер программу – через поле “Program File” –указываем путь к .hex-файлу.
Укажем МК частоту 16MHz и загрузим стандартный Blink.
Запускаем симуляцию и видим, как меняется напряжение на светодиоде:
Для наглядности – можно в библиотеке компонентов выбрать светодиод с анимацией:
Теперь можно проверить работу других обучающих скетчей.
Например, светодиод с кнопкой:
— добавляем нужные элементы, загружаем в виртуальный МК .hex со скетчем и вуаля:
Кнопка не нажата:
Нажмём кнопку – и виртуальный светодиод загорается 🙂
Посмотрим – как работает виртуальный терминал; загрузим в МК скетч Blink_HL
Работает! Сообщения терминала отображаются в маленьком окошке 🙂
А осциллограф? Грузим в МК скетч шестиканалоного осциллографа 🙂
Хм… какой-то мусор… ааа я забыл изменить скорость COM-порта!
Дважды щёлкаем на терминале и устанавливаем скорость (Baud Rate) в 38400
Теперь всё работает!
Только симуляция не учитывает наводки, которые были в реальной схеме – поэтому тут одни нули 🙂
Теперь можно запускать свои скетчи вдали от Arduino, используя всю мощь симуляции PROTEUS-а (от виртуальных инструментов до отладки)!
39 комментариев на «“Arduino/CraftDuino и PROTEUS”»
Что можеть быть причиной того, что я в протеусе не могу на виртуальном терминале получить заданое сообщение ?????? Идут нули!!!
в статье об этом упоминается — возможно забыли установить скорость COM-порта аналогичную той, которую инициализирует скетч.
Напротив, нули появляются именно когда скорости совпадают. При разных скоростях сыпятся какие-то символы. Вы не могли бы скинуть мне ваш проект под протеус и скетч под ардуино? плиз.
Подскажите, как правильно выставить установки для МК ATmega328 в протеусе? Может быть в этом проблема?
у меня протеус старый — там только atmega8 — для неё просто выставлял тактовую частоту в 16МГц.
Для 328-й, по идее, должно быть так же.
Вечером выложу пример для 8-й меги.
Проблема в том, что для atmega8 все работает, а вот для atmega328 — сколько не бьюсь, не могу оживить виртуальный терминал!!! Я пользуюсь протеус 7.6.
Прошу прощения за тормоза=\
Тоже, кстати не сразу разобрался=)
Итак настройки для Atmega328 в Proteus 7.6 такие… барабанная дробь:
Удачи=)
Не могу понять, как получить из ArduinoIDE собранный бинарник не на устройство, а в файл, чтобы подключить его к Протусу.
поищите во временной директории, как то так Local Settings\Temp\build40910.tmp\
в версии IDE 0017 можно было настроить чтобы hex-файлы появлялись в каталоге скетча, но в последней 0018 — почему то это добиться не удалось
Спасибо, конечно, но у меня Linux 🙂
И да я все-таки нашел где это в линуксе, IDE создает папку вида /tmp/buildXXXXXXXXXXXXXXXXXXX.tmp
в ней можно и поискать.
Хм… а как из ArduinoIDE 0018 получить asm файл в папке \local settings\temp\… или еще где? Она же создает только hex и elf файл, а для заливки программы в протеус нужен asm. Ради эксперимента переменовал hex и elf в asm, но, как я и предполагал, оно не заработало. Где достать asm?
для заливки в протеус нужен как раз .hex-файл 😉
Я могу ошибаться, но только прошивка в hex файле, а программа в менюшке «Source > Add\Remove Source Files…». В чем я ошибаюсь?
речь и была о прошивке. А вот с остальными файлами в 0018 действительно проблема 🙁
Как думаете с помощью дизассемблера можно будет сделать asm файл?
Нет… глупость говорю. Как бы так сделать asm..?
Да asm не нужен скорей всего. Кстати, вам сопственно зачем?
Если просто проверить — то скармить протеусу можно и hex и rom.
Если с отладкой — то к hex-у нужно ещё .cof приложить, его компилятор генерирует(естественно компилятор нужно соотвествующим образом настроить)
ещётут можно почитать
Мне, собственно, чтобы компилить файлы в ArduinoIDE и заливать их в Proteus. Прошивка то есть — хочу файлы проверять, хотя бы тот же блинк. Но у ардуиноиде же нет настроек компилятора, а под atmega168 больше у меня ничего не умеет компилить. Причем надо именно с прошивкой ардуины для атмеги, но не с любой другой, т.к мне кажется проекты из под ардуины работают только с ней
оО я ничего не путаю когда вижу что проект blink забивается в виде hex вместо прошивки? мне казалось его надо как раз в asm’е в «Source->Add»
Ничего не путаете, я ж картинку зачем рисовал-старался в предыдущем каменте, там тоже красным кружком обведён именно hex. И довольно подробно разрисованно как туда добратся 😉
Ну так и заливайте hex-ы=)эту статью. Там всё написано, и где в папке ардуиныИДЕ компилятор живёт, и как его настроить.эту статью.
А компилятор ручками настраивается, не через ИДЕ.
Ошибаетесь, есть у вас компилятор=) Внимательно почитайте
Правда чтоб генерить разные файлы, (cof, вчастности) придётся изучить ещё и
Но это всй нужно только для отладки, для ваших целей хватит и hex-а.
а куда совать *.cof? в сорц?
Ничего страшного если в симуляции активен пин 1 (reset)? пробовал на разных проектах для atmega168 и atmega8. Все равно активен
Вот нашел эмулятор ардуиноVirtualBreadboard не нужно хекс генерить, работает напрямую со скетч кодом. До протеуса ему конечно еще далеко, но в нём уже есть приличная библиотека элементов.
Подскажите пожалуйста как открыть виртуальный терминал? Ну все уже кнопки нажал 🙂 не могу найти…
Отвечать не надо уже нашёл. С левой стороны кнопка «виртуальные инструменты», нажав на неё появиться список меню, в нём и есть «виртуальный терминал».
В Virtual BreadBoard есть недостаток-лагает. У меня часто не запускает проекты. Тольо те, что получены изменением станадартных
Здравствуйте, я так и не понял, как добиться полного марафета с исходником из arduino IDE ??? Так чтоб при дебагге в Proteus прямо по коду исходника шагать. Какой code generation tool выбирать? нужно ли конвертировать исходник из duinoIDE, и как это проще сделать?
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, очень удобно что не надо устанавливать.
буду крайне рад, если кто поможет победить ошибку с атмегой. макет с тинькой из примера тоже работает, так что склоняюсь к заключению что сама программа тут ни при чем.
А что означает «в режиме эмуляции атмеги8 с настройками 328»?
На кой это?
Почему нельзя сделать скетч под мегу8, если схема для неё?
Или уж схему переделать под мегу328?
Ругается Протеус, судя по всему, именно на разницу в размере памяти меги8 и 328.
Возможно, он пытается залить весь объём флеша, со всеми нулями, на 32 кб, а оно не влазит.
Кстати, был у мня Протеус7.6сп4, нормально работал, пока ключ не сдох
У меня Протеус 7.1 секунд 5 тратит на то чтоб зажечь или потушить светодиод из стандартного Блинка. Иногда пишет, что симуляция запущена не рилтайм потому что процессор сильно загружен. Внизу в статусной строке пишет что CPU load 87%, при том, что диспетчер задач показывает только 24%. У меня core5, я не думаю что такая «мегазадача» как блинк может отжирать какие-то нереальные ресурсы. Кто-нибудь в курсе это лечится как-то?
Никак не могу считать значение потенциометра в Proteus, каша какаято с портами получается.
К примеру
В терминале Proteus всегда sensorValue пишет = 1023, analogWrite(5, sensorValue)поднимает PD5(11-ю ногу)на HIGH(т.е. 5V)
На схеме ATMEGA328P, переменный резистор 1К, диод и терминал.
Подскажите где загвоздка? Это Proteus гонит или я? 🙂
AVcc запитали?
robocraft.ru/blog/arduino/59.html#comment103
О_о спасибо большое за ссылку, я тоже ошибочно полагал что питание берётся внутреннее, кстати странно что это не реализовано 🙂
Остался только один вопрос — analogWrite(5, sensorValue) почему значение передаётся на цифровой вывод PD5? Как указать что мне нужен вывод PC5?
В стать есть рисуночекrobocraft.ru/blog/arduino/54.html
Аналоговые пины тоже могут использоваться как цифровые, номера с 14 по 19.
Ну? AVcc(20 вывод) подключите к нижнему выводу потенциометра (к +)