реклама на сайте
подробности

 
 
> Вопросы по XMega
Tim0xA
сообщение Jan 25 2013, 12:47
Сообщение #1





Группа: Участник
Сообщений: 14
Регистрация: 21-02-09
Пользователь №: 45 161



XMega-ми заинтересовался недавно. Имеется отладочная плата XMEGA-A3BU Xplained. Использую Atmel Studio 6 и ASF 3.5.0.

Появилось несколько вопросов. Может коллеги подскажут что-нибудь...

1. Во-первых, в ASF отсутствует функция для управления выходами аналогового компаратора AC. Хотя в драйверах для IAR она имеется. Я прописал установку битов AC1OUT ACOOUT записью в регистр CTRLA, но при отладке в дебаггере вижу, что реально биты не устанавливаются. Пытаюсь в окошке I/O View установить эти биты, тоже безрезультатно. Ни в симуляторе, ни в железе. Что я делаю не так?
На плате стоит чип ATxmega256A3BU.

2. Возможно ли одновременное использование одного аналогового входа компаратором и АЦП? Или в реальности вход будет отдан тому, кто проинициализировал его последним?

3. Хочу записать результаты АЦП в память через DMA. В ASF есть пример - ознакомился, настроил. Запуск АЦП происходит через систему событий циклически, DMA записывает данные в память, все ОК. Все это происходит в спящем режиме. Но мне нужно отловить некий уровень на входе АЦП и после этого выдать данные в USART. Я настраиваю компаратор на выходе АЦП, который генерирует прерывание, когда на входе АЦП значение первышает некий уровень. Как только разрешаю это прерывание - сразу перестает работать система событий после получения результата АЦП, соответственно не запускается новый цикл АЦП и запись DMA. Ок. Перевожу АЦП в режим freerun - компаратор отрабатывает как надо, прерывания генерятся, но теперь и события генерятся только вместе с прерываниями после срабатывания компаратора. Соответсвенно и DMA тоже работает только когда сработал компаратор. Как только компаратор выключается - пропадают прерывания и события. Почему?
Мне нужно чтобы события оставалсиь всегда, чтобы пока проц спит в фоне постоянно работал АЦП и велась запись в память через DMA. Проц должен просыпаться только если на входе компаратора есть требуемый уровень. А так работает или одно или другое. Т.е. либо тебе события без прерываний, либо события с прерываниями, но после срабатывание компаратора.

Пока вижу одно решение: Настроить два аналоговых входа, физически запараллелить их - один настроить на АЦП с событиями и DMA, второй отдать аналоговому компаратору, который будет генерить прерывание при превышении порога.

Отсюда вопрос 4.
Можно ли запараллелить два входа, позволяет ли это входное сопротивление или нужно сделать какую-то обвязку?
Go to the top of the page
 
+Quote Post
5 страниц V  < 1 2 3 4 5 >  
Start new topic
Ответов (30 - 44)
Tiro
сообщение Sep 15 2013, 17:56
Сообщение #31


Знающий
****

Группа: Свой
Сообщений: 781
Регистрация: 3-10-04
Из: Санкт-Петербург
Пользователь №: 768



Цитата(Xenia @ Sep 15 2013, 20:40) *
Задача интересует в самом общем виде. Но, видя вашу склонность к конкретизации sm.gif, предложу задачу моргания светодидом 1 раз в секунду (сигнализируя о работоспособности устройства) не прибегая к прерываниям! Очевидно, что "задержка до 2 МЦ" в этом деле несущественна.

Ну, а дальше-то что? Как мне теперь событие 7-го канала превратить во что-то реальное?
Есть у меня флаг
PORTCFG_EVOUT_PE7_gc, ///< Event Channel 7 Output on Port E pin 7
якобы способный вывести событие на пин PE7, но что для этого надо сделать? Куда этот флаг пихать?

Моя склонность к конкретизации вызвана только необходимостью сузить рамки материала для изучения ))
Судя по дейташиту, функциональность Ивент Систем весьма ограничена, на вывод (и обратно) можно отмапить только из Канала 0 Ивент Систем на ножку Порт 7. Раздел 15.1 предпоследняя строка.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Sep 15 2013, 18:12
Сообщение #32


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Tiro @ Sep 15 2013, 21:56) *
Моя склонность к конкретизации вызвана только необходимостью сузить рамки материала для изучения ))
Судя по дейташиту, функциональность Ивент Систем весьма ограничена, на вывод (и обратно) можно отмапить только из Канала 0 Ивент Систем на ножку Порт 7. Раздел 15.1 предпоследняя строка.


Если вы понимаете, что там написано, то ... напишите строку кода! sm.gif Мне уже совершенно наплевать, нулевой там номер или седьмой. Дайте хоть хоть одним глазком взглянуть на реализацию ЛЮБОГО варианта, где "Event System" дергает пином! И чтобы без всяких оговорок типа "знаю, как это делается, но вам не скажу, т.к. к вашему номеру пина это не подойдет".
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Sep 15 2013, 18:41
Сообщение #33


Профессионал
*****

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Xenia, найдите описание регистра CLKEVOUT . Думаю Вам это поможет... sm.gif
PS. A1 уже не флагман. Флагман A1U...
Go to the top of the page
 
+Quote Post
Xenia
сообщение Sep 15 2013, 19:28
Сообщение #34


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(ArtemKAD @ Sep 15 2013, 22:41) *
Xenia, найдите описание регистра CLKEVOUT . Думаю Вам это поможет... sm.gif

Это я видела, оно из другой оперы - к "Event System" отношения не имеет, а просто тактовую частоту (периферийную) на пин гонит. Это совершенно не то.

Цитата(ArtemKAD @ Sep 15 2013, 22:41) *
PS. A1 уже не флагман. Флагман A1U...

Флагманом я назвала его не потому, что он самый лучший, а потому, что самый первый, тогда как A1U - лишь его немного усовершенствованная копия.
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Sep 15 2013, 19:49
Сообщение #35


Профессионал
*****

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Еще раз посмотрите!
Цитата
13.15.4 CLKEVOUT - Clock and Event Out Register
• Bit 7:6 - Reserved
These bits are reserved and will always be read as one. For compatibility with future devices,
always write these bits to zero when this register is written.
• Bit 5:4 - EVOUT[1:0] - Event Output Port
These bits decide which port the Event Channel 0 from the Event System should be output to.
Pin 7 on the selected port is always used, and the CLKOUT bits must be set different from
EVOUT. The pin must be configured as an output pin for the Signaling Event to be available on
the pin.

Table 13-7 on page 145 shows the possible configurations.
• Bits 3:2 - Reserved
These bits are reserved and will always be read as one. For compatibility with future devices,
always write these bits to zero when this register is written.
• Bit 1:0 - CLKOUT[1:0] - Clock Output Port
These bits decide which port the Peripheral Clock should be output to. Pin 7 on the selected port
is always used. The Clock output setting, will override the Event output setting, thus if both are
enabled on the same port pin, the Peripheral Clock will be visible. The pin must be configured as
an output pin for the Clock to be available on the pin.


Это регистр отвечает и за вывод частоты и за событие.
Цитата
Table 13-7. Event Channel 0 output configurations
EVOUT[1:0] Group Configuration Description
00 OFF Event out disabled
01 PC7 Event Channel 0 output on Port C pin 7
10 PD7 Event Channel 0 output on Port D pin 7
11 PE7 Event Channel 0 output on Port E pin 7
Go to the top of the page
 
+Quote Post
Xenia
сообщение Sep 15 2013, 20:56
Сообщение #36


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



У моих портов нет регистра CLKEVOUT sm.gif. Этот регистр из категории виртуальных портов, которые я еще не освоила (и что-то не тянет). А у простых портов типа PORTA, PORTB, PORTC, PORTD, PORTE и PORTF такого расширения нет.

Скажем, такие бывают:
PORTB.OUT
PORTE.DIR
PORTE.INTCTRL
PORTE.INT1MASK
PORTE.INTFLAGS
PORTE.INT0MASK

А вот такого не бывает:
PORTE.CLKEVOUT

Error[Pe136]: struct "PORT_struct" has no field "CLKEVOUT"
Go to the top of the page
 
+Quote Post
Tiro
сообщение Sep 15 2013, 21:12
Сообщение #37


Знающий
****

Группа: Свой
Сообщений: 781
Регистрация: 3-10-04
Из: Санкт-Петербург
Пользователь №: 768



Цитата(Xenia @ Sep 15 2013, 23:56) *
А вот такого не бывает:
PORTE.CLKEVOUT

Error[Pe136]: struct "PORT_struct" has no field "CLKEVOUT"

Ксения, ну где-то есть этот CLKEVOUT. Нужно хидер прочитать, ты ж программист. И вообще, это уже становится частным вопросом, АртемКАД вот подключился. Может сперва сами порешаем, а потом решение сюда? А если кто из форумчан знает, сам отпишется.
А если у АртемКАД есть решение, то я попрошу его не говорить сразу.
Go to the top of the page
 
+Quote Post
Duhas
сообщение Sep 16 2013, 07:11
Сообщение #38


Местный
***

Группа: Участник
Сообщений: 227
Регистрация: 13-04-07
Пользователь №: 27 018



хоть он и сидит рядом с виртуальными портами, но отношения к ним прямого не имеет, просто состоит вместе с ними в одной группе PORTCFG ...
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Sep 16 2013, 17:16
Сообщение #39


Профессионал
*****

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Цитата
хоть он и сидит рядом с виртуальными портами, но отношения к ним прямого не имеет, просто состоит вместе с ними в одной группе PORTCFG ...

Не совсем вместе с ними. Просто в PORTCFG засунули в т.ч. и настройку виртуальных портов. Эдакая общая группа портов для того, что в специализированные группы не влезло, но к портам относится. Сами-же виртуальные порты отдельно в VPORTх . Хотя я так пока и не вкурил зачем они вообще нужны...
В общем PORTCFG.CLKEVOUT в помощь...
Go to the top of the page
 
+Quote Post
zombi
сообщение Sep 17 2013, 07:49
Сообщение #40


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(ArtemKAD @ Sep 16 2013, 20:16) *
В общем PORTCFG.CLKEVOUT в помощь...

100%

И у меня вопрос (дабы не плодить тем).
Почему на xmega128A1U не выводится на пин clkPER4?
Т.е. clkPER и clkPER2 выводится а clkPER4 нет.
Пробывал при clkPER4=128MHz, clkPER2=64MHz, clkPER=32MHz.
Go to the top of the page
 
+Quote Post
Duhas
сообщение Sep 17 2013, 08:49
Сообщение #41


Местный
***

Группа: Участник
Сообщений: 227
Регистрация: 13-04-07
Пользователь №: 27 018



т.е. при выводе просто тишина? ради эксперимента попробуйте в целом уменьшить все частоты и попробовать так.
Go to the top of the page
 
+Quote Post
zombi
сообщение Sep 17 2013, 09:35
Сообщение #42


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(Duhas @ Sep 17 2013, 11:49) *
т.е. при выводе просто тишина?

Да, ноль.

Цитата(Duhas @ Sep 17 2013, 11:49) *
ради эксперимента попробуйте в целом уменьшить все частоты и попробовать так.

Необходимо было имеено 128MHz на пине получить.
Экспериментировать сейчас некогда, да и не актуально уже.
Просто думал сталкивался ли кто с этим
Go to the top of the page
 
+Quote Post
Xenia
сообщение Sep 17 2013, 12:11
Сообщение #43


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(zombi @ Sep 17 2013, 11:49) *
Пробывал при clkPER4=128MHz, clkPER2=64MHz, clkPER=32MHz.


А что, разве на Xmega можно частоты выше, чем 32 МГц получать? Не знала... Точнее, видела, что множитель позволяет умножать аж до 31 раз, но думала, что это для медленных кварцев сделано, а верхнюю границу в 32 МГц нарушать нельзя. Или все-таки можно? И если да, то как? И какие возможности это дает? Таймеры быстрее заработают?
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Sep 17 2013, 12:59
Сообщение #44


Профессионал
*****

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



К примеру clkPER4 можно использовать для увеличения точности PWM.

32МГц это верх для ядра. А к примеру на USB надо подать 48МГц.
Go to the top of the page
 
+Quote Post
Navovvol
сообщение Sep 17 2013, 13:31
Сообщение #45


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 9-09-11
Пользователь №: 67 080



Цитата(Xenia @ Sep 17 2013, 16:11) *
А что, разве на Xmega можно частоты выше, чем 32 МГц получать? Не знала... Точнее, видела, что множитель позволяет умножать аж до 31 раз, но думала, что это для медленных кварцев сделано, а верхнюю границу в 32 МГц нарушать нельзя. Или все-таки можно? И если да, то как? И какие возможности это дает? Таймеры быстрее заработают?

Можно нарушать, только неизвестно, как долго проработает. У меня один опытный образец уже полтора года на 48МГц работает и полностью исправен. Работает от внешнего кварца на 8 МГц и PLL на 6. Выше поднимать удавалось, уже не помню до скольки, но потом засомневался и прекратил эксперименты, оставив на 48МГц. Нагреваний МК-ра замечено не было. Ну, а таймеры могут тактироваться вместе с CPU или через делитель, так что - да, таймеры заработают быстрее.
Go to the top of the page
 
+Quote Post

5 страниц V  < 1 2 3 4 5 >
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 13:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.01528 секунд с 7
ELECTRONIX ©2004-2016