Есть ли средства отладки программ на Ардуино?
- Войдите на сайт для отправки комментариев
Пнд, 13/01/2014 - 06:09
Доброго времени суток!
Подскажите как отлаживать программу на языке Ардуино?
Не работает простая функция: в передаваемой переменной типа байт lamps каждый бит отвечает за светодиод, глобальная переменная того же типа current_state_lights хранит в себе текущее состояние вкл. и выкл. светодиодов.
void switch_light (byte lamps) { byte tmp; tmp = current_state_lights & lamps; // запрашиваемые лампы горят? if (tmp == lamps) { // Исключаем из текущего состояния лампы current_state_lights = current_state_lights & ~lamps; } else { // Добавляем к текущему состоянию лампы current_state_lights = current_state_lights | lamps; } }
Другая функция включения и выключения ламп с такими же побитовыми операциями работает.
Может быть есть сторонние отладчики?
Proteus http://robocraft.ru/blog/arduino/114.html
Или Serial.println(); на каждом шаге.
попробую по USB.
С Протеусом надо конкретно разбираться, возьму на заметку, спасибо.
Толко не понятно, почему же функция не работает? Ведь оператор if должен по любому совершить одно из двух действий, но не совершает...
Пробовал и switch применить - тоже самое. Такое ощущение, что функция не вызывается.
Есть идея!
Если в схему поставить кнопку и повесить ее на внешнее прерывание, а в обработчике - бесконечный цикл с проверкой нажатия кнопки еще раз для выхода из обработчика.
А после каждого оператора в коде поставить Serial.println() и delay(2000) чтобы успевать нажать кнопку.
Будет работать такой пошаговый режим и надо ли в обработчике запрещать прерывания на время его выполнения?
Доброго времени суток!
Подскажите как отлаживать программу на языке Ардуино?
Не работает простая функция: в передаваемой переменной типа байт lamps каждый бит отвечает за светодиод, глобальная переменная того же типа current_state_lights хранит в себе текущее состояние вкл. и выкл. светодиодов.
А какие признаки "не работает" и как именно вызывается эта функция?
Можете попробовать такой отладчик (правда не понятно, какой у Вас Ардуино):
https://sites.google.com/site/vanyambauseslinux/arduino/otladka-sketcej-arduino
Подключается в виде библиотеки. Я раньше пользовался на своем Леонардо.
ites: функция типа процедура, вызывается в цикле loop, ничего особенного. А не работает - не переключает светодиоды.
kisoft: Ардуино Уно
Спасибо большое за библиотеку!!!!!
Нашел проблему!
if работает как надо, перед завершением процедуры забыл отправить новое значение в порт :)
Я проделал все в точности:
Kisoft: Можете попробовать такой отладчик (правда не понятно, какой у Вас Ардуино):
https://sites.google.com/site/vanyambauseslinux/arduino/otladka-sketcej-arduino
Подключается в виде библиотеки. Я раньше пользовался на своем Леонардо.
но, к в результате в окне Serial Monitor выскочила какая-то абра-кадабра из непонятных символов. Подскажите, как с этим бороться? Уменя Ардуино Мега 2560.
Serial.print - основной отладчик ардуино)
Есть еще пакет в visualmicro.com, но стоит денег (сама среда бесплатна, денег стоит отладчик). Сам не пробовал.
про протеус вам уже написали, правда нельзя назвать протеус отладчиком, это симулятор всего лишь
права все перечисленное меркнет перед железными отладчиками от атмела ))) но увы ардуина с ними не дружит. Особенно прелестна отладка по JTAG, как раз atmega2560 поддерживает такую отладку. В железном отладчике можно ставить точки останова, видеть состояние портов (не симулятор, а железо!), редактировать значения переменных, eeprom во время отладки без перепрошивки и т.д.
Я проделал все в точности:
Kisoft: Можете попробовать такой отладчик (правда не понятно, какой у Вас Ардуино):
https://sites.google.com/site/vanyambauseslinux/arduino/otladka-sketcej-arduino
Подключается в виде библиотеки. Я раньше пользовался на своем Леонардо.
но, к в результате в окне Serial Monitor выскочила какая-то абра-кадабра из непонятных символов. Подскажите, как с этим бороться? Уменя Ардуино Мега 2560.
Увы, я не телепат. Что выводит то? Скорость порта в мониторе соответствует тому, что в программе?
https://sites.google.com/site/vanyambauseslinux/arduino/otladka-sketcej-arduino
Подключается в виде библиотеки. Я раньше пользовался на своем Леонардо.
Как раз вчера наткнулся на фиготень Visual Micro. На робокрафте был пост про неё, правда старенький.
Раньше эта либа (плагин?) цеплялась на MS Visual Studio. Теперь умеет цепляться ещё и на бесплатную среду Atmel Studio 6.2. (в этой среде, я так понял, используется т.н."изолированная" либа от того же Visual Studio).
Правда, среда бесплатная, а вот эта Микра - 30 уёв за 1 экземпляр хотят. Так триал ставится, не понял, на какое время.
Так вот, как раз они утверждают, что как раз у них полноценно реализованы брыкпоинты. Очень меня это заинтересовало. Но за сегодняшний вечер ни фига не разобрался.
Вероятно, задействован именно этот механизм, что и по ссылке товарища kisoft.
Сухой остаток, мало чего я понял, разве что одно: ЕСТЬ инструменты для отладки на Ардуине! :)
ЗЫ сорри, два поста назад эту прогу упоминают уже. Ну да может кто поставит, да подскажет, как эти брыкпойнты активизировать :) а то пока не получилось....
Че-то не пойму, а что для адрудино действительно нормального отладчика нет? Думал, щас быстро програмку сделаю, даже плату купил. Или я плохо ищу?
Зачем Вам отладчик? Хотите трахаться, как нормальные пацаны, берите STM с JTAG, а не ардуино. Здесь, как выше уже было замечено, основной отладчик - Serial.print.
Если нужна отладка, пишите в AVR Studio на чистом ''C".
И чем поможет написание на чистом С с точки зрения отладки?
не Си, а AVR Studio, я так понимаю
В AVR Studio есть отладчик и можно использовать аппаратные средства отладки. Но зачастую
хватает простого прогона. А если знаком с ассемблером, то можно загнать hex файл от Arduino
и прогнать по шагам.
Уже упоминали, что visualmicro не бесплатный, я не использую ломанные проги.
Если говорить про совместимый с атмел студио программатор, который поддерживает отладку, то они тоже стоят космических денег.
А потому бесплатных или с небольшой ценой вариантов отладки для атмел камней я не встречал.
Впрочем интерес мой - чистое любопытство, отладчик мне пока что не был нужен.
Я хоть и новичок но имхо Arduino ide полное УГ, пользуюсь visual studio + visualmicro, там и автодополнение кода, и дебагер, русский язык, и уже все безплатно ! русскоязычной литератури, и титориулов мало, но я буквально за 1 вечер в общих очертаниях разобрался, так что рекомендую !