Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AVR Studio 4.18 xmega32A4 проблема при симуляции UART
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
TriD
Приветствую всех!

При симуляции проекта на базе ATmega32A4 в AVR Studio 4.18 build 692 (на данный момент последняя доступная версия) не могу выставить флаг RXCIF в соответствующем регистре управления, кликая по нему мышкой, для имитации приема байта по СОМ-порту. Это мой первый проект, в котором используется симулятор версии 2. В симуляторе первой версии такой проблемы не было.
Проект написан на Си в самой студии, компилятор WinAvr.

ПС: Заранее хочу извиниться, если ответ на подобный вопрос уже где-то был. Поиском не нашел.
TriD
Неужели все пользуются эмуляторами и никто с такой проблемой не сталкивался? Или проблема только у меня?
GDI
А вы выполнение программы останавливаете, когда пытаетесь значение бита поменять?
TriD
Останавливаю, конечно. smile.gif
Для получения этого эффекта не нужно писать ничего сложного, просто можно создать проект на ассемблере на базе xmega с одним бесконечным циклом. Запустить в пошаговом исполнении и попробовать выставить флаг RXCIF (кстати, проблема не только с этим флагом, а, как я понял, и с любым другим, который по жизни считается "только для чтения"). Для хмеги128 флаг это выставить можно, но он автоматически сбрасывается на следующем шаге, для хмеги32 этот флаг выставить просто нельзя (ну, или он сразу же сбрасывается).
Вроде как вышла уже новая версия студии (или очередной сервиспак), вот только на сайте ее еще нет.
WHALE
Есть здесь , но в Release notes ничего о багофиксах симуляции хмег нет...
TriD
Ерраты все излазил, тоже ничего не нашел. Возможно, что периферию надо теперь симулировать как-то по другому? Еще пробовал через создание симуляционного файла (в хелпе есть пример для АЦП), тоже ничего не получилось.
Может быть может кто-нибудь сымитировать это у себя?
SysRq
Цитата(TriD @ Feb 27 2010, 14:37) *
Может быть может кто-нибудь сымитировать это у себя?
Флаг поставить не выходит: если программа выполняется, флаги даже не отображаются; если программа на паузе, то флаг не ставится (ставлю, и тут же он сбрасывается без эффекта).
Наверное, и правда стоит попробовать stimuli-файл, сгенерив правильный сигнал для RXD, и подав его на ногу RXD unsure.gif Тоже попробую, пригодится..
SasaVitebsk
У меня возникает проблема с симуляцией WDT на at90can128.
Правда разбираться не стал. Я симулятором практически не пользуюсь. Так иногда когда совсем пустяк какой.
TriD
Судя по всему это косяк самой студии.... что-то программисты там перемудрили (на форуме http://www.avrfreaks.net ничего внятного тоже не сказали). Проблему, конечно, можно обойти в процессе отладки используя, например, какое-нибудь прерывание от таймера. Буду ждать 5-у версию, может, там поправят.
V_G
Симуляция флага RXCIF идет корректно, ведь он же Read-Only!
Другое дело, в симуляторе должны быть средства моделирования прихода данных на последовательный интерфейс. Ведь и UDR не выставишь, на запись он работает на передатчик!
Zlumd
Все так и должно быть. При записи во флаг нуля он не меняется. При записи единицы он сбрасывается. Так что выставить его никак нельзя. Его может установить только модуль UART.
TriD
Для V_G и Zlumd
Ребят, вы хотя бы студию хоть раз запускали?
Для проектов, в которых используется симулятор версии 1, все флаги прекрасно симулируются. Проблема только в симуляторе версии 2.
GDI
Цитата(V_G @ Mar 2 2010, 03:01) *
Ведь и UDR не выставишь, на запись он работает на передатчик!
А зачем его симулировать? Можно просто записать якобы принятые данные в переменную, в которую вы этот регистр читаете в вашей программе. Или сделать такую переменную, если в коде вы прямо сравниваете значение UDR с константой.
V_G
Цитата(TriD @ Mar 3 2010, 00:41) *
Для V_G и Zlumd
Ребят, вы хотя бы студию хоть раз запускали?
Для проектов, в которых используется симулятор версии 1, все флаги прекрасно симулируются. Проблема только в симуляторе версии 2.

Я студию запускаю почти каждый день последние лет 10, а вот симулятор - раз в 2 месяца, бо Эмулятора более чем достаточно.
Речь об идеологии симулятора. Лично я считаю более корректной идеологию версии 2. Если флаг Read-Only, нефиг в него лазить. Некорректное дергание флагов, написание специального кода именно для эмулятора (касается UDR) - несерьезно.
Просто, повторюсь, надо бы в Студии кнопочку завести, по нажатию на которую уйдет заданный байт (или файл) в компорт эмулируемого проца. Это было бы корректнее всего.
TriD
Цитата(V_G @ Mar 3 2010, 03:42) *
Я студию запускаю почти каждый день последние лет 10, а вот симулятор - раз в 2 месяца, бо Эмулятора более чем достаточно.
Речь об идеологии симулятора. Лично я считаю более корректной идеологию версии 2. Если флаг Read-Only, нефиг в него лазить. Некорректное дергание флагов, написание специального кода именно для эмулятора (касается UDR) - несерьезно.
Просто, повторюсь, надо бы в Студии кнопочку завести, по нажатию на которую уйдет заданный байт (или файл) в компорт эмулируемого проца. Это было бы корректнее всего.


Ваша точка зрения обусловлена тем, что симулятором вы не пользуетесь.
ИМХО, в симуляторе должна быть возможность симулировать любое состояние любой доступной периферии (собственно, такая возможность и остается до сих пор в версии 1). Отдельные кнопочки для симуляции какой-то конкретной периферии это лишне - все можно симулировать установкой/сбросом соответствующих флагов и записью значений в переменные.
Столь не приятное ограничение в версии 2 либо баг, либо Атмел решел, что они маловато продают эмуляторов.... В этом году выйдет пятая студия, посмотрим, что будет там.
Я несколько удивлен, что так мало народу пользуется симулятором при отладке программы... или используют старый симулятор. Хотя, новый симулятор, в общем то, реально нужен только при разработке проектов на базе новых чипов, таких как xmega.
V_G
Цитата(TriD @ Mar 3 2010, 22:56) *
Хотя, новый симулятор, в общем то, реально нужен только при разработке проектов на базе новых чипов, таких как xmega.

А вот в xмеге-то как раз кнопочка отправки файла и не помешала бы! Я в ней стараюсь по максимуму использовать DMA для последовательных портов (что не проблема, когда известна длина посылки). А дергать прерывания при этом замучаешься.
Любителям симуляторов стоит написать в техподдержку Студии по этому поводу, т.к. моделировать DMA с внешними устройствами без аналога stimuli файла (сейчас он вроде как просто на изменение состояния параллельных портов) весьма затруднительно.
TriD
Атмеловцы признали свой косяк и обещали исправить в будущих версиях.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.