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

 
 
> Вопросы по 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 > »   
Start new topic
Ответов (15 - 29)
_Артём_
сообщение Jun 12 2013, 16:40
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Xenia @ Jun 12 2013, 19:23) *
В хидерое среди определений PWM_PIN не нашла. Это константа?

Да - константа. На плате у меня там шим должен быть.

Цитата(Xenia @ Jun 12 2013, 19:23) *
Или место выдачи PWM в порту фиксировано?


Место выдачи шима фиксировано следующим образом:
Таймер типа 0 может выводить шим с канала А на пин 0 порта, с канала Б на пин 1 порта ... с канала D на пин 3.
Таймер типа 1 может выводить шим с канала А на пин 4 порта, с канала Б на пин 5.

Цитата(Xenia @ Jun 12 2013, 19:23) *
Скажем, если мне нужен PWM на другой ножке, то какие измения в коде я должна провести

Нужно разрешить соответствующий канал таймера, ну и пин на выход.

Цитата(Xenia @ Jun 12 2013, 19:37) *
Так это, значит, ваши собственные определения?

Естественно.

Цитата(Xenia @ Jun 12 2013, 19:37) *
А если я перепределю PWM_PIN на другое число, скажем на 2 вместо 1, то PWM начет выводиться на соседнюю ножку?

Нужно ещё канал разрешить и соответствующий регистр сравнения инициализировать (для пина 2 - канал С и set new compare value for compare channel C):

TC0_EnableCCChannels( &TCF0, TC0_CCCEN_bm );
TC_SetCompareC( &TCF0, PWM_PERIOD>>1);
Go to the top of the page
 
+Quote Post
Xenia
сообщение Jun 12 2013, 16:50
Сообщение #17


Гуру
******

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



Дошло до меня - номер порта и пина нигде не задается, поскольку он намертво привязан к имени таймера. Т.е. таймер может выдать PWM только на одноименный с ним порт, и только на пин, определяемый буквой после CC. Например, выдать PWM на PORTF0 можно ТОЛЬКО через TCF0.CCA и никак не иначе. А если нужна соседняя нога PORTF1, то надо переходить на TCF0.CCB, и т.д.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Jun 12 2013, 17:46
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Xenia @ Jun 12 2013, 19:50) *
Т.е. таймер может выдать PWM только на одноименный с ним порт, и только на пин, определяемый буквой после CC. Например, выдать PWM на PORTF0 можно ТОЛЬКО через TCF0.CCA и никак не иначе. А если нужна соседняя нога PORTF1, то надо переходить на TCF0.CCB, и т.д.

Всё так. Дошло.
Go to the top of the page
 
+Quote Post
Duhas
сообщение Aug 14 2013, 06:54
Сообщение #19


Местный
***

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



Дабы не плодить тем спрошу здесь. Понадобилось мне переделать DFU bootloader для XMEGAxxA4 на свою ножку. это стало для меня трудной задачей ) для студии в ASF я готовых примеров не нашел, что делать с исходниками из архива http://www.atmel.com/Images/AVR1916.zip мне не понятно( т.к. я вижу там только хидеры, ни файла проекта ни сишного файла с main я не ощущаю, ЧЯДНТ учитывая что я пишу обычно в студии и на АСМе? )

ПС если есть добрые люди готовые пересобрать бутлоадеры под:
ATxmega16A4U - PD4
ATxmega128A4U - PB1 - буду оч благодарен )
Go to the top of the page
 
+Quote Post
Xenia
сообщение Aug 14 2013, 07:43
Сообщение #20


Гуру
******

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



Цитата(Duhas @ Aug 14 2013, 10:54) *
я вижу там только хидеры, ни файла проекта ни сишного файла с main я не ощущаю, ЧЯДНТ учитывая что я пишу обычно в студии и на АСМе?

Во всех бутлоадерах есть main() и находится он в файле:
\common\services\usb\class\dfu_flip\device\bootloader\xmega\main.c

Цитата(Duhas @ Aug 14 2013, 10:54) *
ПС если есть добрые люди готовые пересобрать бутлоадеры под:
ATxmega16A4U - PD4
ATxmega128A4U - PB1 - буду оч благодарен )

Линии USB фиксированы, это PD6 (D-) и PD7 (D+). Переставить эти функции на другое место нельзя. Но если вам нужен загрузчик не по USB, а по USART, то пины PD4 и PB1 для этого тоже не годятся, т.к. RXD/TXD тоже выводятся на 6-й и 7-й пины портов C и D.
Go to the top of the page
 
+Quote Post
Duhas
сообщение Aug 16 2013, 03:15
Сообщение #21


Местный
***

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



спасибо за указание на мэйн.

пины я писал те, что должны запускать бутлоадер при старте, чтоб управление не передалось приложению, то что ЮСБ линии фиксированы - понятное дело )

еще раз спасибо. пересобрал под нужные пины. может заодно подскажете в чем идея прятать так глубоко основные файлы проекта?

Сообщение отредактировал Duhas - Aug 16 2013, 06:30
Go to the top of the page
 
+Quote Post
Xenia
сообщение Sep 15 2013, 13:13
Сообщение #22


Гуру
******

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



У меня возник новый вопрос: а можно ли наоброт? Т.е. существует ли возможность превратить событие с "Event Channel" в дрыгание какой-либо ножки?

Про то, как превратить ножку в сенсор, вызывающий переключение "Event Channel", я поняла, и это у меня заработало. Но гложет вопрос про обратную возможность - превратить возникшее у "Event Channel" переключение состояния в подергивание какой-то ножки, но только другой. Т.е. интересует возможность использования "Event Channel", как средства сообщения между двумя ножками МК, чтобы одна его ножка повторяла (в той же фазе или противофазе) изменения уровня на другой.
Go to the top of the page
 
+Quote Post
Tiro
сообщение Sep 15 2013, 14:53
Сообщение #23


Знающий
****

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



Цитата(Xenia @ Sep 15 2013, 16:13) *
У меня возник новый вопрос: а можно ли наоброт? Т.е. существует ли возможность превратить событие с "Event Channel" в дрыгание какой-либо ножки?

Про то, как превратить ножку в сенсор, вызывающий переключение "Event Channel", я поняла, и это у меня заработало. Но гложет вопрос про обратную возможность - превратить возникшее у "Event Channel" переключение состояния в подергивание какой-то ножки, но только другой. Т.е. интересует возможность использования "Event Channel", как средства сообщения между двумя ножками МК, чтобы одна его ножка повторяла (в той же фазе или противофазе) изменения уровня на другой.

Ксения, микроконтроллер это аппаратно-программное устройство, содержащее несколько конфигурируемых аппаратных узлов, которые могут сигнализировать о своем состоянии флагами или прерываниями программы. Прямая связь аппаратных узлов в нем не предусмотрена, только через программу.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Sep 15 2013, 15:08
Сообщение #24


Гуру
******

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



Цитата(Tiro @ Sep 15 2013, 18:53) *
Ксения, микроконтроллер это аппаратно-программное устройство, содержащее несколько конфигурируемых аппаратных узлов, которые могут сигнализировать о своем состоянии флагами или прерываниями программы. Прямая связь аппаратных узлов в нем не предусмотрена, только через программу.


Я тоже всегда так считала. Но вот увидела, как сделан у XMaga "Event System", и возбудилась sm.gif.
Go to the top of the page
 
+Quote Post
Tiro
сообщение Sep 15 2013, 16:09
Сообщение #25


Знающий
****

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



Цитата(Xenia @ Sep 15 2013, 18:08) *
Я тоже всегда так считала. Но вот увидела, как сделан у XMaga "Event System", и возбудилась sm.gif.

Равнодушнее, мадам, это всего лишь кусок кремния ))) Я ничего не знаю про "Event System", но есть какой-нибудь практический вопрос по конкретной хмеге и ножкам? Готов посмотреть дейташит на аппаратуру. Заодно новенькое узнаю ))
Go to the top of the page
 
+Quote Post
Xenia
сообщение Sep 15 2013, 16:52
Сообщение #26


Гуру
******

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



Цитата(Tiro @ Sep 15 2013, 20:09) *
Я ничего не знаю про "Event System", но есть какой-нибудь практический вопрос по конкретной хмеге и ножкам? Готов посмотреть дейташит на аппаратуру. Заодно новенькое узнаю ))

Вы зря беретесь отвечать на вопросы, связанные с тем, о чем вы ничего не знаете.

Речь идет о возможностях "Event System Controller", упоминаемого в даташите. Там сказано:
Цитата
 Events can be generated by
Timer/Counters (TCxn)
Real Time Counter (RTC)
Analog to Digital Converters (ADCx)
Analog Comparators (ACx)
Ports (PORTx)
System Clock (ClkSYS)
Software (CPU)

 Events can be used by
Timer/Counters (TCxn)
Analog to Digital Converters (ADCx)
Digital to Analog Converters (DACx)
Ports (PORTx)
DMA Controller (DMAC)
IR Communication Module (IRCOM)

Меня интересует вторая часть этих возможностей - не генерация событий (с ней все ясно), а их использование. И в частности для управления пинами порта (соответствующий пункт в цитате я выделила и подчеркнула).

В русском варианте есть такая информация:
Цитата
К линии порта также можно программно подключить канал 7 системы событий (Event Channel 7). Если в этом канале генерируется событие, то соответствующий этому событию сигнал будет отображаться на выводе микроконтроллера в течение одного периода периферийного тактового сигнала.
(цитировано из http://kit-e.ru/articles/micro/2008_4_95.php )

И вот это интересует меня в самом буквальном смысле: "отобразить событие на выводе микроконтроллера".

На рисунке, приведенном в даташите, стрелочки от "Port pins" идут в обе стороны! И меня интересует та возможность, которая соответствует стрелке вниз.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Tiro
сообщение Sep 15 2013, 16:57
Сообщение #27


Знающий
****

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



Цитата(Xenia @ Sep 15 2013, 19:52) *
Вы зря беретесь отвечать на вопросы, связанные с тем, о чем вы ничего не знаете.

Речь идет о возможностях "Event System Controler", упоминаемой в даташите. Там сказано:

Меня интересует вторая часть этих возможностей - не генерация событий (с ней все ясно), а их использование. И в частсности для упралением пинамм порта (соотвествующий пункт в цитате я выделила и подчеркнула).

В русском варианте есть такая информация:

И вот это интересует меня в самом буквальном смысле: "отобразить событие на выводе микроконтроллера".

Ну не зря, мне интересное все новое. А вот наименования контроллера нет, поэтому я не могу прочесть дейташит, который есть у Вас. И в ссылке правая скобка мешает переходить на статью.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Sep 15 2013, 17:06
Сообщение #28


Гуру
******

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



Цитата(Tiro @ Sep 15 2013, 20:57) *
Ну не зря, мне интересное все новое. А вот наименования контроллера нет, поэтому я не могу прочесть дейташит, который есть у Вас. И в ссылке правая скобка мешает переходить на статью.


Данные возможности относятся ко всему семейству XMega, т.к. контроллер "Event System" представляет особенность новой архитектуры. Да и журнальная статья, ссылку на которую я привела, относится к рекламе возможностей всей линейки XMega, а не какого-то отдельного экземпляра.

Но лично у меня флагман sm.gif этой серии - ATxmega128A1.

P.S. Более конкретно меня интересует всё, что связано с флагами:
Код
    PORTCFG_EVOUT_PC7_gc,    ///< Event Channel 7 Output on Port C pin 7
    PORTCFG_EVOUT_PD7_gc,    ///< Event Channel 7 Output on Port D pin 7
    PORTCFG_EVOUT_PE7_gc,    ///< Event Channel 7 Output on Port E pin 7
Go to the top of the page
 
+Quote Post
Tiro
сообщение Sep 15 2013, 17:29
Сообщение #29


Знающий
****

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



Цитата(Xenia @ Sep 15 2013, 20:06) *
Данные возможности относятся ко всему семейству XMega, т.к. контроллер "Event System" представляет особенность новой архитектуры. Да и журнальная статья, ссылку на которую я привела, относится к рекламе возможностей всей линейки XMega, а не какого-то отдельного экземпляра.

Но лично у меня флагман sm.gif этой серии - ATxmega128A1.

Глянул дейташит на 256А3. Там обещают в качестве Ивент Систем некий 8-канальный мультиплексор, который в обход контроллера прерываний передает сигналы из одного аппаратного блока в другой, но с задержкой до 2 МЦ. То есть мне смотреть возможность передачи сигналов между двумя ножками разных портов? Или есть другая, конкретная задача?
Go to the top of the page
 
+Quote Post
Xenia
сообщение Sep 15 2013, 17:40
Сообщение #30


Гуру
******

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



Цитата(Tiro @ Sep 15 2013, 21:29) *
Глянул дейташит на 256А3. Там обещают в качестве Ивент Систем некий 8-канальный мультиплексор, который в обход контроллера прерываний передает сигналы из одного аппаратного блока в другой, но с задержкой до 2 МЦ. То есть мне смотреть возможность передачи сигналов между двумя ножками разных портов? Или есть другая, конкретная задача?


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

Например, при тактовой частоте 32 МГц запускаем таймер :
TCC0.PER = 15625; // 32000000 Hz / 1024 / 2 = 15625 (без остатка!) = 1 Гц ровно
TCC0.CTRLA = TC_CLKSEL_DIV1024_gc;

Теперь отправим признак переполнения в 7-ой канал "Event System Controller":
EVSYS.CH7MUX = EVSYS_CHMUX_TCC0_OVF_gc; // channel 7 <- Overflow от таймера ТСС0

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

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

 


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


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