|
|
  |
Вопросы по XMega |
|
|
|
Jun 12 2013, 16:40
|
Гуру
     
Группа: Свой
Сообщений: 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_CC CEN_bm ); TC_SetCompare C( &TCF0, PWM_PERIOD>>1);
|
|
|
|
|
Aug 14 2013, 06:54
|
Местный
  
Группа: Участник
Сообщений: 227
Регистрация: 13-04-07
Пользователь №: 27 018

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

Гуру
     
Группа: Модератор 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.
|
|
|
|
|
Sep 15 2013, 14:53
|
Знающий
   
Группа: Свой
Сообщений: 781
Регистрация: 3-10-04
Из: Санкт-Петербург
Пользователь №: 768

|
Цитата(Xenia @ Sep 15 2013, 16:13)  У меня возник новый вопрос: а можно ли наоброт? Т.е. существует ли возможность превратить событие с "Event Channel" в дрыгание какой-либо ножки?
Про то, как превратить ножку в сенсор, вызывающий переключение "Event Channel", я поняла, и это у меня заработало. Но гложет вопрос про обратную возможность - превратить возникшее у "Event Channel" переключение состояния в подергивание какой-то ножки, но только другой. Т.е. интересует возможность использования "Event Channel", как средства сообщения между двумя ножками МК, чтобы одна его ножка повторяла (в той же фазе или противофазе) изменения уровня на другой. Ксения, микроконтроллер это аппаратно-программное устройство, содержащее несколько конфигурируемых аппаратных узлов, которые могут сигнализировать о своем состоянии флагами или прерываниями программы. Прямая связь аппаратных узлов в нем не предусмотрена, только через программу.
|
|
|
|
|
Sep 15 2013, 16:52
|

Гуру
     
Группа: Модератор 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" идут в обе стороны! И меня интересует та возможность, которая соответствует стрелке вниз.
Эскизы прикрепленных изображений
|
|
|
|
|
Sep 15 2013, 17:06
|

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

|
Цитата(Tiro @ Sep 15 2013, 20:57)  Ну не зря, мне интересное все новое. А вот наименования контроллера нет, поэтому я не могу прочесть дейташит, который есть у Вас. И в ссылке правая скобка мешает переходить на статью. Данные возможности относятся ко всему семейству XMega, т.к. контроллер "Event System" представляет особенность новой архитектуры. Да и журнальная статья, ссылку на которую я привела, относится к рекламе возможностей всей линейки XMega, а не какого-то отдельного экземпляра. Но лично у меня флагман  этой серии - 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
|
|
|
|
|
Sep 15 2013, 17:29
|
Знающий
   
Группа: Свой
Сообщений: 781
Регистрация: 3-10-04
Из: Санкт-Петербург
Пользователь №: 768

|
Цитата(Xenia @ Sep 15 2013, 20:06)  Данные возможности относятся ко всему семейству XMega, т.к. контроллер "Event System" представляет особенность новой архитектуры. Да и журнальная статья, ссылку на которую я привела, относится к рекламе возможностей всей линейки XMega, а не какого-то отдельного экземпляра. Но лично у меня флагман  этой серии - ATxmega128A1. Глянул дейташит на 256А3. Там обещают в качестве Ивент Систем некий 8-канальный мультиплексор, который в обход контроллера прерываний передает сигналы из одного аппаратного блока в другой, но с задержкой до 2 МЦ. То есть мне смотреть возможность передачи сигналов между двумя ножками разных портов? Или есть другая, конкретная задача?
|
|
|
|
|
Sep 15 2013, 17:40
|

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

|
Цитата(Tiro @ Sep 15 2013, 21:29)  Глянул дейташит на 256А3. Там обещают в качестве Ивент Систем некий 8-канальный мультиплексор, который в обход контроллера прерываний передает сигналы из одного аппаратного блока в другой, но с задержкой до 2 МЦ. То есть мне смотреть возможность передачи сигналов между двумя ножками разных портов? Или есть другая, конкретная задача? Задача интересует в самом общем виде. Но, видя вашу склонность к конкретизации  , предложу задачу моргания светодидом 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, но что для этого надо сделать? Куда этот флаг пихать?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|