Ошибка отладки в Atmel Studio 6
- IM1
- Грызет канифоль
- Сообщения: 268
- Зарегистрирован: Вт фев 16, 2010 12:10:38
- Откуда: Воронеж, Россия
Ошибка отладки в Atmel Studio 6
Здравствуйте.
Atmel Studio (6.2 vers 1502 sp1).
Столкнулся с крайне неприятной проблемой при работе с ATtiny2313, симулятор не видит порты при чтении. А именно: при отладке выставляем мышкой нужные разряды на ПИНах порта, а по команде IN они не читаются.
При замене девайса на ATtiny13 все ОК. Команду IN видим естественно в дизасемблере.
Кто-нибудь сталкивался с такой проблемой? Есть ли пути решения?
Для удобства прикладываю крохотный тестовый проект по этому вопросу.
Atmel Studio (6.2 vers 1502 sp1).
Столкнулся с крайне неприятной проблемой при работе с ATtiny2313, симулятор не видит порты при чтении. А именно: при отладке выставляем мышкой нужные разряды на ПИНах порта, а по команде IN они не читаются.
При замене девайса на ATtiny13 все ОК. Команду IN видим естественно в дизасемблере.
Кто-нибудь сталкивался с такой проблемой? Есть ли пути решения?
Для удобства прикладываю крохотный тестовый проект по этому вопросу.
- Вложения
-
- termo_test.zip
- (13.89 КБ) 161 скачивание
- IM1
- Грызет канифоль
- Сообщения: 268
- Зарегистрирован: Вт фев 16, 2010 12:10:38
- Откуда: Воронеж, Россия
Re: Ошибка отладки в Atmel Studio 6
Странно... Неужели никто не работал с ATtiny2313?
Уточняю (см. снимок) в этом месте: 00000023 IN R24,0x16
ATtiny2313 не читает ПИНы порта, а ATtiny13 читает на ура.
Может я что-то делаю не так, тогда пожалуйста подскажите.
Уточняю (см. снимок) в этом месте: 00000023 IN R24,0x16
ATtiny2313 не читает ПИНы порта, а ATtiny13 читает на ура.
Может я что-то делаю не так, тогда пожалуйста подскажите.
- Вложения
-
- Снимок.PNG
- (8.84 КБ) 389 скачиваний
-
codenamehawk
- Вымогатель припоя
- Сообщения: 527
- Зарегистрирован: Вт фев 09, 2010 17:52:26
Re: Ошибка отладки в Atmel Studio 6
У вас включена оптимизация, компилятор выкинул присваивание, так как переменная prov более не используется.
Если переменная будет использоваться в прерывании используйте volatile
Измените программу, для отладки :
Если переменная будет использоваться в прерывании используйте volatile
Код: Выделить всё
volatile uint8_t prov;Измените программу, для отладки :
Код: Выделить всё
while(1)
{
//TODO:: Please write your application code
PORTB = prov;
}
- IM1
- Грызет канифоль
- Сообщения: 268
- Зарегистрирован: Вт фев 16, 2010 12:10:38
- Откуда: Воронеж, Россия
Re: Ошибка отладки в Atmel Studio 6
Спасибо.codenamehawk писал(а):У вас включена оптимизация, компилятор выкинул присваивание, так как переменная prov более не используется.
Если переменная будет использоваться в прерывании используйте volatile
А Вы проверяли свой совет?
- IM1
- Грызет канифоль
- Сообщения: 268
- Зарегистрирован: Вт фев 16, 2010 12:10:38
- Откуда: Воронеж, Россия
Re: Ошибка отладки в Atmel Studio 6
Для codenamehawk:
понял не проверяли, а я же давал снимок ассемблера, повторю фрагмент
Компилятор не только не "выкинул присваивание", а честно прочитал ПИН В и сохранил в ОЗУ (что в общем-то и есть присваивание как таковое).
Для специалистов: ПОДСКАЖИТЕ ХОТЬ ЧТО-НИБУДЬ!
Вдогонку: на AVR Studio 4.18 build 684 все ОК.
понял не проверяли, а я же давал снимок ассемблера, повторю фрагмент
Код: Выделить всё
00000023 IN R24,0x16 In from I/O location
00000024 STS 0x0060,R24 Store direct to data space Компилятор не только не "выкинул присваивание", а честно прочитал ПИН В и сохранил в ОЗУ (что в общем-то и есть присваивание как таковое).
Для специалистов: ПОДСКАЖИТЕ ХОТЬ ЧТО-НИБУДЬ!
Вдогонку: на AVR Studio 4.18 build 684 все ОК.
-
codenamehawk
- Вымогатель припоя
- Сообщения: 527
- Зарегистрирован: Вт фев 09, 2010 17:52:26
Re: Ошибка отладки в Atmel Studio 6
IM1 писал(а):Столкнулся с крайне неприятной проблемой при работе с ATtiny2313, симулятор не видит порты при чтении. А именно: при отладке выставляем мышкой нужные разряды на ПИНах порта, а по команде IN они не читаются.
Это верно, только отчасти.
Добавив чтение порта в основной цикл,
Код: Выделить всё
int main(void)
{
DDRB = 0;
prov = PINB;
cli ();
while(1)
{
//TODO:: Please write your application code
prov = PINB;
}
}отладка начинает работать, но удалось заметить задержку между установкой PINB и считыванием этого значения из порта.
Уже такой код отлаживается нормально.
Код: Выделить всё
DDRB = 0;
asm("nop");
prov = PINB;
cli ();В протеусе ваша программа работает нормально, так что скорее всего проблема в 6 студии.
- dr.doc
- Это не хвост, это антенна
- Сообщения: 1368
- Зарегистрирован: Вс мар 28, 2010 12:52:22
- Откуда: Беларусь
Re: Ошибка отладки в Atmel Studio 6
- пишу на ассемблере и у меня постоянно эта задержка при отладке. Уже привык и внимания этому не придаю.отладка начинает работать, но удалось заметить задержку между установкой PINB и считыванием этого значения из порта
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
- IM1
- Грызет канифоль
- Сообщения: 268
- Зарегистрирован: Вт фев 16, 2010 12:10:38
- Откуда: Воронеж, Россия
Re: Ошибка отладки в Atmel Studio 6
Ну Вы прям "Капитан Очевидность". Суть вопроса в этом и была, причем ни на миг не сомневаюсь, что в протеусе все будет ОК. Очень хотелось, чтобы кто-то попробовал у себя, вдруг чего-то я недопонимаю. Дело то минутное, и программу приложил. А в ответ - голая теория.codenamehawk писал(а):В протеусе ваша программа работает нормально, так что скорее всего проблема в 6 студии.
Опять же вопрос у меня был про студио 6.2 и именно о симуляции на С.dr.doc писал(а):пишу на ассемблере и у меня постоянно эта задержка при отладке. Уже привык и внимания этому не придаю.
Как ассемблерист ассемблеристу скажу, что если у Вас в программе написана вот такая фигня:
Код: Выделить всё
IN R24,0x16Такая вот беда, достались несколько 2313 в подарок... очень жаль. В английском не настолько силен, чтобы писать производителю программы.
- dr.doc
- Это не хвост, это антенна
- Сообщения: 1368
- Зарегистрирован: Вс мар 28, 2010 12:52:22
- Откуда: Беларусь
Re: Ошибка отладки в Atmel Studio 6
Поставьте для отладки nop перед данной командой.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
- IM1
- Грызет канифоль
- Сообщения: 268
- Зарегистрирован: Вт фев 16, 2010 12:10:38
- Откуда: Воронеж, Россия
Re: Ошибка отладки в Atmel Studio 6
СПАСИБО!dr.doc писал(а):Поставьте для отладки nop перед данной командой.
Попробовал - оно, только 2 nop-а требуются, но это уже детали.
А то я вчера затосковал, когда увидел, что на ATmega8 тоже самое. Теперь буду обходить этот затык, а потом нопы выбрасывать, немного не элегантно, но терпимо.
П.С.
А на ТИНИ 13 работает и в студии 4 тоже и без нопов.
- dr.doc
- Это не хвост, это антенна
- Сообщения: 1368
- Зарегистрирован: Вс мар 28, 2010 12:52:22
- Откуда: Беларусь
Re: Ошибка отладки в Atmel Studio 6
Хорошо что помогло. Есть вещи, в которые даже при отладке nop не вопрешь - все развалится...
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
- zero648
- Вымогатель припоя
- Сообщения: 650
- Зарегистрирован: Пн июн 18, 2012 12:01:04
- Откуда: Челябинская область, Копейск
Re: Ошибка отладки в Atmel Studio 6
У меня была подобная ситуация, но с точностью до "наоборот", т.е. в симуляторе работает, а в железе нет. Без "нопов" в железе кнопки не опрашивались, при частоте 4МГц контроллер не видел нажатия кнопок, если читать их сразу после переключения пинов на вход, пришлось добавить пару "нопов" для выдержки.
- dr.doc
- Это не хвост, это антенна
- Сообщения: 1368
- Зарегистрирован: Вс мар 28, 2010 12:52:22
- Откуда: Беларусь
Re: Ошибка отладки в Atmel Studio 6
А антидребезг?
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
- zero648
- Вымогатель припоя
- Сообщения: 650
- Зарегистрирован: Пн июн 18, 2012 12:01:04
- Откуда: Челябинская область, Копейск
Re: Ошибка отладки в Atmel Studio 6
Не понял, а при чем тут антидребезг? Говорю же, при переключении на вход уровень сигнала на пине устанавливается не мгновенно, в зависимости от частоты.
- dr.doc
- Это не хвост, это антенна
- Сообщения: 1368
- Зарегистрирован: Вс мар 28, 2010 12:52:22
- Откуда: Беларусь
Re: Ошибка отладки в Atmel Studio 6
Так это нормально. Там же цепочка триггеров, они и вносят задержку.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
- IM1
- Грызет канифоль
- Сообщения: 268
- Зарегистрирован: Вт фев 16, 2010 12:10:38
- Откуда: Воронеж, Россия
Re: Ошибка отладки в Atmel Studio 6
Позвольте напомнить уважаемым котам, что речь идет всего лишь о СИМУЛЯЦИИ, а не о реальном устройстве. Уровни на портах ставятся МЫШКОЙ на экране симулятора и до команды ШАГ с точки зрения микроконтроллера проходит вечность, и всякие триггеры-миггеры здесь не причем.dr.doc писал(а):Так это нормально. Там же цепочка триггеров, они и вносят задержку.
Налицо ошибка симулятора СТУДИИ 6, разработчики решили (почему-то), что на брейкпойнте тактовый генератор микроконтроллера выключен. Опять же писал, что такого ляпа нет в СТУДИИ 4 и на некоторых девайсах в СТУДИИ 6, например на ТИНИ 13.
С уважением.
- dr.doc
- Это не хвост, это антенна
- Сообщения: 1368
- Зарегистрирован: Вс мар 28, 2010 12:52:22
- Откуда: Беларусь
Re: Ошибка отладки в Atmel Studio 6
- А как, по Вашему, происходит отладка дебаггером? На мой взгляд она пропускает тактовые импульсы генератора лишь в разрешенные моменты, что эквивалентно остановке генератора.разработчики решили (почему-то), что на брейкпойнте тактовый генератор микроконтроллера выключен
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
- IM1
- Грызет канифоль
- Сообщения: 268
- Зарегистрирован: Вт фев 16, 2010 12:10:38
- Откуда: Воронеж, Россия
Re: Ошибка отладки в Atmel Studio 6
IM1 писал(а):Опять же писал, что такого ляпа нет в СТУДИИ 4 и на некоторых девайсах в СТУДИИ 6, например на ТИНИ 13.