Отладка программы в связке CodeVisionAVR + AVR Studio4
Дата: 9 Марта 2013. Автор: Алексей
Всем привет.
По малочисленным просьбам или еще по какой причине, решил написать небольшой мануальчик по отладке написанной программы в среде CodeVisionAVR при помощи AVR Studio4. Будем считать что программа написана и появилось желание ее отладить. Сделать можно это разными способами но на мой взгляд для начала пройтись по ней программно. Есть вариант пошаговой отладки в Proteus но мне как-то оно не понравилось и я решил воспользоваться родной Атмеловской программой AVR Studio4. Сейчас уже вышли новые версии и я думаю что работа с ними не чуть не изменилась. К тому же эта программа с каждой новой версией обновляет прошивку программатора AVRISP о котором может быть я напишу.
Первое что нам понадобиться это запустить программу. (Если у Вас ее еще нет, то Вы можете скачать последнюю версию с сайта www.atmel.com или четвертую версию из раздела "полезные программы") Для запуска программы нажмите на красного жука сверху окна программы CodeVisionAVR.

Начнется загрузка программы AVR Studio4. Если программа устанавливалась не по умолчанию, то CodeVisionAVR предложит указать путь до места установки программы. Указываем путь и продолжаем. После загрузки программа выведет окно следующего вида.

Так как мы будем отлаживать наш проект, до жмем на кнопку "Open", далее нам программа предложит выбрать файл для загрузки.

Вариантов у нас всего два. Это COFF файл и obj файл. Если выбрать COFF файл, то программа загрузит наш С код, а если obj, то загрузит ассемблерный код. Тут уж выбирайте сами что вам ближе к сердцу. Лично мне нравится работать с С файлом по этому выбираем его. Далее жмем "Открыть" и видим еще одно окно.

Что от нас хочет программа теперь? А хочет она сохранить новый проект, построенный на основании нашего COFF файла. По умолчанию программа сохранит файл в ту же папку где и лежит проект CodeVisionAVR. Жмем "Сохранить". После сохранения мы видим очередное окно.

В этом окне программа предлагает выбрать (слева) с чем будем работать. Выбираем AVR Simulator так как мы будем симулировать работу МК, а справа выбираем наш МК. После этих действий кнопка "Finish" станет активной и мы на нее давим. Все программа запустилась.

Что мы имеем. В середине окна программы расположился наш С код. Слева расположено окошко "Processor". В нем показаны основные характеристики МК. Справа расположено окошко "I/O View". В нем показаны все внутренности МК в основном регистры. Ну, а в нижнем окне описание проекта. Теперь давайте пройдемся по правому окну поближе.

Рассмотрим сверху вниз по всем пунктам.
PORTB Здесь мы видим три регистра управления портом B.
TIMER_COUNTER_0 Здесь управление регистрами таймера-коунтера 0.
TIMER_COUNTER_1 Здесь управление регистрами таймера-коунтера 1.
WATCHDOG Здесь управление сторожевым таймером.
EXTERNAL_INTERRUPT Здесь управление внешним прерыванием.
UART Здесь управление UARTом.
ANALOG_COMPARATOR Здесь управление аналоговым компаратором.
CPU Здесь управление регистрами CPU.
PORTD Здесь мы видим три регистра управления портом D.
EEPROM Здесь управление регистрами EEPROM.
Я специально писал именно управление так как во время отладки можно менять значения любого регистра. То есть если мы хотим изменит порт с вывода на ввод, то просто нажимаем на соответствующий бит в регистре DDRx и меняем черные квадратики на белые. Ну или наоборот. И так можно с любым регистром.
Так, с этим разобрались, что мы еще можем полезного сделать. Смотрим вверх окна программы. Видим поле с кнопками.

Это так сказать наш пульт управления. Давайта взглянем на него по ближе.















Далее можно закрыть окно или нажать на кнопку "Add to watch" и тем самым сохранить переменную в окошке просмотра переменных.







Ну вроде все, если что пропустил пишите в коментах или на форуме.
demos 13.08.13
"Эта кнопк по моему делает тоже самое. В
чем разница я так и не понял."
Step Over — сделать шаг по тексту, но не
заходить в процедуры и функции (процедуры
и функции при этом выполняются, просто
нам это не показывают).
Алексей 13.08.13
Спасибо за поправку. Буду знать)