Здравствуйте.
Atmel Studio (6.2 vers 1502 sp1).
Столкнулся с крайне неприятной проблемой при работе с ATtiny2313, симулятор не видит порты при чтении. А именно: при отладке выставляем мышкой нужные разряды на ПИНах порта, а по команде IN они не читаются.
При замене девайса на ATtiny13 все ОК. Команду IN видим естественно в дизасемблере.
Кто-нибудь сталкивался с такой проблемой? Есть ли пути решения?
Для удобства прикладываю крохотный тестовый проект по этому вопросу.
Странно... Неужели никто не работал с ATtiny2313?
Уточняю (см. снимок) в этом месте: 00000023 IN R24,0x16
ATtiny2313 не читает ПИНы порта, а ATtiny13 читает на ура.
Может я что-то делаю не так, тогда пожалуйста подскажите.
У вас включена оптимизация, компилятор выкинул присваивание, так как переменная prov более не используется.
Если переменная будет использоваться в прерывании используйте volatile
codenamehawk писал(а):У вас включена оптимизация, компилятор выкинул присваивание, так как переменная prov более не используется.
Если переменная будет использоваться в прерывании используйте volatile
IM1 писал(а):Столкнулся с крайне неприятной проблемой при работе с ATtiny2313, симулятор не видит порты при чтении. А именно: при отладке выставляем мышкой нужные разряды на ПИНах порта, а по команде IN они не читаются.
Это верно, только отчасти.
Добавив чтение порта в основной цикл,
отладка начинает работать, но удалось заметить задержку между установкой PINB и считыванием этого значения из порта
- пишу на ассемблере и у меня постоянно эта задержка при отладке. Уже привык и внимания этому не придаю.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
codenamehawk писал(а):В протеусе ваша программа работает нормально, так что скорее всего проблема в 6 студии.
Ну Вы прям "Капитан Очевидность". Суть вопроса в этом и была, причем ни на миг не сомневаюсь, что в протеусе все будет ОК. Очень хотелось, чтобы кто-то попробовал у себя, вдруг чего-то я недопонимаю. Дело то минутное, и программу приложил. А в ответ - голая теория.
dr.doc писал(а):пишу на ассемблере и у меня постоянно эта задержка при отладке. Уже привык и внимания этому не придаю.
Опять же вопрос у меня был про студио 6.2 и именно о симуляции на С.
Как ассемблерист ассемблеристу скажу, что если у Вас в программе написана вот такая фигня:
и Вы стоите на брейкпойнте именно на этой команде, затем мышкой устанавливаете на PINB допустим 0х1а, затем (сделав достаточную паузу ) делаете 1 шаг в симуляторе, то в регистре R24 у Вас по любому должно появиться 0х1а, а не 0х00 как у меня. Уфф, уже писал, что дефект проявляется только на ATtiny2313 и все нормально на ATtiny13, на других девайсах не проверял. В студии 4 тоже все нормально, но я уже привык к замечательному редактору из 6-й, переходить обратно в 4-ю моветон.
Такая вот беда, достались несколько 2313 в подарок... очень жаль. В английском не настолько силен, чтобы писать производителю программы.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
dr.doc писал(а):Поставьте для отладки nop перед данной командой.
СПАСИБО!
Попробовал - оно, только 2 nop-а требуются, но это уже детали.
А то я вчера затосковал, когда увидел, что на ATmega8 тоже самое. Теперь буду обходить этот затык, а потом нопы выбрасывать, немного не элегантно, но терпимо.
П.С.
А на ТИНИ 13 работает и в студии 4 тоже и без нопов.
Хорошо что помогло. Есть вещи, в которые даже при отладке nop не вопрешь - все развалится...
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
У меня была подобная ситуация, но с точностью до "наоборот", т.е. в симуляторе работает, а в железе нет. Без "нопов" в железе кнопки не опрашивались, при частоте 4МГц контроллер не видел нажатия кнопок, если читать их сразу после переключения пинов на вход, пришлось добавить пару "нопов" для выдержки.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Не понял, а при чем тут антидребезг? Говорю же, при переключении на вход уровень сигнала на пине устанавливается не мгновенно, в зависимости от частоты.
Так это нормально. Там же цепочка триггеров, они и вносят задержку.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
dr.doc писал(а):Так это нормально. Там же цепочка триггеров, они и вносят задержку.
Позвольте напомнить уважаемым котам, что речь идет всего лишь о СИМУЛЯЦИИ, а не о реальном устройстве. Уровни на портах ставятся МЫШКОЙ на экране симулятора и до команды ШАГ с точки зрения микроконтроллера проходит вечность, и всякие триггеры-миггеры здесь не причем.
Налицо ошибка симулятора СТУДИИ 6, разработчики решили (почему-то), что на брейкпойнте тактовый генератор микроконтроллера выключен. Опять же писал, что такого ляпа нет в СТУДИИ 4 и на некоторых девайсах в СТУДИИ 6, например на ТИНИ 13.
С уважением.
разработчики решили (почему-то), что на брейкпойнте тактовый генератор микроконтроллера выключен
- А как, по Вашему, происходит отладка дебаггером? На мой взгляд она пропускает тактовые импульсы генератора лишь в разрешенные моменты, что эквивалентно остановке генератора.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.