|
Отладка в AтmelStudio кода на С |
|
|
|
May 3 2016, 20:16
|
Группа: Участник
Сообщений: 9
Регистрация: 22-04-16
Пользователь №: 91 423

|
Потребовалось написать небольшую программку для AVR, поэтому скачал и установил Студию от Атмел версии 6.2. Пишу на С. Попробовал дебажить (пока что в Simulator-е) и с удивлением увидел, что состояние портов при отладке никак не отображается. Это особенности Студии или я что-то пропустил? Непонятно, как дебажить программу...
|
|
|
|
|
May 4 2016, 12:16
|
Группа: Участник
Сообщений: 9
Регистрация: 22-04-16
Пользователь №: 91 423

|
Цитата(demiurg1978 @ May 4 2016, 13:54)  Я все отлаживаю в студии 4.19. Это самая стабильная версия. Всё-таки не понял - она должна показывать состояния портов ввода-вывода? P.S. Смотрю и состояния переменных иногда не отображает, пишет Unknown identifier... Мрак.
|
|
|
|
|
May 4 2016, 14:29
|
Группа: Участник
Сообщений: 9
Регистрация: 22-04-16
Пользователь №: 91 423

|
Цитата(Ga_ry @ May 4 2016, 15:21)  В проекте указан тип контроллера? Да, в самом начале визарда там выбирается моделька контроллера. И в настройках указано, что в качестве программатора/деабгера выступает Simulator.
Эскизы прикрепленных изображений
|
|
|
|
|
May 5 2016, 16:31
|

Частый гость
 
Группа: Участник
Сообщений: 101
Регистрация: 2-05-15
Из: Россия, Омск
Пользователь №: 86 474

|
Цитата(UT2005 @ May 4 2016, 18:16)  Всё-таки не понял - она должна показывать состояния портов ввода-вывода? P.S. Смотрю и состояния переменных иногда не отображает, пишет Unknown identifier... Мрак. > Unknown identifier Локальная переменная вне зоны видимости. Вероятно, что переменная из функции, которая сейчас не выполняется. Это нормально. Если хочется отлаживать какие-то специфические переменные - можно их выставить как volatile (отключает оптимизацию на них и их всегда видно). PS: Очень похоже, что не в момент выполнения переменная закопана глубоко в стэк и потому не может быть считана. Попробуйте уменьшить уровень оптимизации, или опять же, volatile (минус к скорости выполнения). У меня случалось и такое, что переменную невозможно осмотреть даже поставив бряк-поинт прямо на неё. Это оптимизация её убирает/не даёт увидеть, ибо заоптимизирована, или где-то лежит неудобно для отладки. У меня в железе отлаживает (JTAG / ATmega1284P) и видны все порты, регистры и переферия. Студия 5.1
Сообщение отредактировал AlanDrakes - May 5 2016, 16:33
|
|
|
|
|
May 5 2016, 17:35
|
Группа: Участник
Сообщений: 9
Регистрация: 22-04-16
Пользователь №: 91 423

|
Цитата(AlanDrakes @ May 5 2016, 19:31)  У меня в железе отлаживает (JTAG / ATmega1284P) и видны все порты, регистры и переферия. Студия 5.1 Спасибо, AlanDrakes. По переменным понятно, по портам нет. Может быть от версии студии зависит функционал?. Я смотрю, в основном пользуются старыми версиям. P.S. Плюнул на студию, установил IVR. Мне объёма программы в 4к - за глаза.
|
|
|
|
|
Sep 10 2016, 07:55
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (Smoky @ Sep 10 2016, 10:02)  Оказалось что при объявлении двух байтной переменной в EEPROM инициализируется только младший байт, старший байт потом приходилось корректировать в ручную. Где-то ошибка в вашей программе. QUOTE (Smoky @ Sep 10 2016, 10:02)  Можно это исправить, или это особенность системы? Да, можно - написать правильно. Показывайте исходник.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Sep 10 2016, 08:15
|

Местный
  
Группа: Свой
Сообщений: 401
Регистрация: 7-05-10
Из: Оренбург
Пользователь №: 57 135

|
Цитата(Сергей Борщ @ Sep 10 2016, 13:55)  Где-то ошибка в вашей программе. Да, можно - написать правильно. Показывайте исходник. Извиняйте, исходник здесь размещать не умею а строка с объявлением переменной: EEMEM unsigned int cor_time=0x0000; Что то не так?
--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
|
|
|
|
|
Sep 10 2016, 20:50
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (Smoky @ Sep 10 2016, 15:49)  Забыл указать что в реальной памяти EEPROM переменная инициализируется правильно, а в отладчике нет. Это противоречит вашему вопросу: QUOTE (Smoky @ Sep 10 2016, 10:02)  при объявлении двух байтной переменной в EEPROM инициализируется только младший байт Тогда возможна ошибка в отладчике. Тут я пас.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|