Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Отладка в AтmelStudio кода на С
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
UT2005
Потребовалось написать небольшую программку для AVR, поэтому скачал и установил Студию от Атмел версии 6.2. Пишу на С. Попробовал дебажить (пока что в Simulator-е) и с удивлением увидел, что состояние портов при отладке никак не отображается. Это особенности Студии или я что-то пропустил? Непонятно, как дебажить программу...
demiurg1978
Я все отлаживаю в студии 4.19. Это самая стабильная версия.
UT2005
Цитата(demiurg1978 @ May 4 2016, 13:54) *
Я все отлаживаю в студии 4.19. Это самая стабильная версия.

Всё-таки не понял - она должна показывать состояния портов ввода-вывода?
P.S. Смотрю и состояния переменных иногда не отображает, пишет Unknown identifier... Мрак.
Ga_ry
В проекте указан тип контроллера?
UT2005
Цитата(Ga_ry @ May 4 2016, 15:21) *
В проекте указан тип контроллера?

Да, в самом начале визарда там выбирается моделька контроллера. И в настройках указано, что в качестве программатора/деабгера выступает Simulator.
AlanDrakes
Цитата(UT2005 @ May 4 2016, 18:16) *
Всё-таки не понял - она должна показывать состояния портов ввода-вывода?
P.S. Смотрю и состояния переменных иногда не отображает, пишет Unknown identifier... Мрак.


> Unknown identifier
Локальная переменная вне зоны видимости. Вероятно, что переменная из функции, которая сейчас не выполняется. Это нормально. Если хочется отлаживать какие-то специфические переменные - можно их выставить как volatile (отключает оптимизацию на них и их всегда видно).

PS: Очень похоже, что не в момент выполнения переменная закопана глубоко в стэк и потому не может быть считана. Попробуйте уменьшить уровень оптимизации, или опять же, volatile (минус к скорости выполнения).
У меня случалось и такое, что переменную невозможно осмотреть даже поставив бряк-поинт прямо на неё. Это оптимизация её убирает/не даёт увидеть, ибо заоптимизирована, или где-то лежит неудобно для отладки.

У меня в железе отлаживает (JTAG / ATmega1284P) и видны все порты, регистры и переферия. Студия 5.1
UT2005
Цитата(AlanDrakes @ May 5 2016, 19:31) *
У меня в железе отлаживает (JTAG / ATmega1284P) и видны все порты, регистры и переферия. Студия 5.1


Спасибо, AlanDrakes. По переменным понятно, по портам нет. Может быть от версии студии зависит функционал?. Я смотрю, в основном пользуются старыми версиям.

P.S. Плюнул на студию, установил IVR. Мне объёма программы в 4к - за глаза.


Smoky
Добрый день. При отладке программы в Atmel Studio 7 долго не мог обнаружить ошибку. Оказалось что при объявлении двух байтной переменной в EEPROM инициализируется только младший байт, старший байт потом приходилось корректировать в ручную. Можно это исправить, или это особенность системы? Спасибо.
Сергей Борщ
QUOTE (Smoky @ Sep 10 2016, 10:02) *
Оказалось что при объявлении двух байтной переменной в EEPROM инициализируется только младший байт, старший байт потом приходилось корректировать в ручную.
Где-то ошибка в вашей программе.

QUOTE (Smoky @ Sep 10 2016, 10:02) *
Можно это исправить, или это особенность системы?
Да, можно - написать правильно. Показывайте исходник.
Smoky
Цитата(Сергей Борщ @ Sep 10 2016, 13:55) *
Где-то ошибка в вашей программе.
Да, можно - написать правильно. Показывайте исходник.


Извиняйте, исходник здесь размещать не умею а строка с объявлением переменной: EEMEM unsigned int cor_time=0x0000;
Что то не так?
Smoky
Забыл указать что в реальной памяти EEPROM переменная инициализируется правильно, а в отладчике нет.
Сергей Борщ
QUOTE (Smoky @ Sep 10 2016, 15:49) *
Забыл указать что в реальной памяти EEPROM переменная инициализируется правильно, а в отладчике нет.
Это противоречит вашему вопросу:
QUOTE (Smoky @ Sep 10 2016, 10:02) *
при объявлении двух байтной переменной в EEPROM инициализируется только младший байт
Тогда возможна ошибка в отладчике. Тут я пас.
Smoky
По случаю приобрёл AVR JTAG ICE v2.0 но Windows его не опознаёт. Как правильно его подключить и возможна ли работа этого программатора-отладчика в Atmel Studio 7? Спасибо.
Smoky
Коллеги прошу помощи, Windows опознал устройство а вот Atmel Studio 7 опознаёт jtag ice как stk500, такое может быть?
pavel-pervomaysk
Нужен ICE 3.
Smoky
Цитата(pavel-pervomaysk @ Sep 16 2016, 11:00) *
Нужен ICE 3.


Спасибо, я уже понял что приобретение бесполезное...
smalcom
Цитата
EEMEM unsigned int cor_time=0x0000;

У вас случайно не указан флаг компиляции "-mint8"?
aiwa
Цитата(Smoky @ Sep 16 2016, 09:07) *
Спасибо, я уже понял что приобретение бесполезное...

Пользуюсь этим изделием.
Но все беды идут не от самого изделия как такового, а от Аtmel и его студийного никчемного монстра.
Потребовалось записать XMega и пришлось обновить и судию и прошивку - после этого он перестал видеть обычную mega.
Пришлось возвращать драйвера от 6-й студии, и удалять из нее файл требующий firmware upgrade.
Smoky
Цитата(smalcom @ Sep 26 2016, 15:49) *
У вас случайно не указан флаг компиляции "-mint8"?


Просмотрел все параметры но этот флаг не нашёл, где его искать?

Цитата(aiwa @ Sep 26 2016, 21:46) *
Пользуюсь этим изделием.


Тоже использую, пришлось установить старину AVR Studio 4.19 только для отладки программ.
smalcom
Цитата
Просмотрел все параметры но этот флаг не нашёл, где его искать?

в окне журнала сборки. В настройках проекта иди компилятора это может выглядеть как "использовать 8-ми битное целое".

Add. Полистал интернет, что-то не нашёл где это посмотреть.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.