Перейти к содержанию
    

В хидерое среди определений PWM_PIN не нашла. Это константа?

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

 

Или место выдачи PWM в порту фиксировано?

 

Место выдачи шима фиксировано следующим образом:

Таймер типа 0 может выводить шим с канала А на пин 0 порта, с канала Б на пин 1 порта ... с канала D на пин 3.

Таймер типа 1 может выводить шим с канала А на пин 4 порта, с канала Б на пин 5.

 

Скажем, если мне нужен PWM на другой ножке, то какие измения в коде я должна провести

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

 

Так это, значит, ваши собственные определения?

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

 

А если я перепределю 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);

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дошло до меня - номер порта и пина нигде не задается, поскольку он намертво привязан к имени таймера. Т.е. таймер может выдать PWM только на одноименный с ним порт, и только на пин, определяемый буквой после CC. Например, выдать PWM на PORTF0 можно ТОЛЬКО через TCF0.CCA и никак не иначе. А если нужна соседняя нога PORTF1, то надо переходить на TCF0.CCB, и т.д.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Т.е. таймер может выдать PWM только на одноименный с ним порт, и только на пин, определяемый буквой после CC. Например, выдать PWM на PORTF0 можно ТОЛЬКО через TCF0.CCA и никак не иначе. А если нужна соседняя нога PORTF1, то надо переходить на TCF0.CCB, и т.д.

Всё так. Дошло.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

ПС если есть добрые люди готовые пересобрать бутлоадеры под:

ATxmega16A4U - PD4

ATxmega128A4U - PB1 - буду оч благодарен )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я вижу там только хидеры, ни файла проекта ни сишного файла с main я не ощущаю, ЧЯДНТ учитывая что я пишу обычно в студии и на АСМе?

Во всех бутлоадерах есть main() и находится он в файле:

\common\services\usb\class\dfu_flip\device\bootloader\xmega\main.c

 

ПС если есть добрые люди готовые пересобрать бутлоадеры под:

ATxmega16A4U - PD4

ATxmega128A4U - PB1 - буду оч благодарен )

Линии USB фиксированы, это PD6 (D-) и PD7 (D+). Переставить эти функции на другое место нельзя. Но если вам нужен загрузчик не по USB, а по USART, то пины PD4 и PB1 для этого тоже не годятся, т.к. RXD/TXD тоже выводятся на 6-й и 7-й пины портов C и D.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

Изменено пользователем Duhas

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Ксения, микроконтроллер это аппаратно-программное устройство, содержащее несколько конфигурируемых аппаратных узлов, которые могут сигнализировать о своем состоянии флагами или прерываниями программы. Прямая связь аппаратных узлов в нем не предусмотрена, только через программу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ксения, микроконтроллер это аппаратно-программное устройство, содержащее несколько конфигурируемых аппаратных узлов, которые могут сигнализировать о своем состоянии флагами или прерываниями программы. Прямая связь аппаратных узлов в нем не предусмотрена, только через программу.

 

Я тоже всегда так считала. Но вот увидела, как сделан у XMaga "Event System", и возбудилась :).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я тоже всегда так считала. Но вот увидела, как сделан у XMaga "Event System", и возбудилась :).

Равнодушнее, мадам, это всего лишь кусок кремния ))) Я ничего не знаю про "Event System", но есть какой-нибудь практический вопрос по конкретной хмеге и ножкам? Готов посмотреть дейташит на аппаратуру. Заодно новенькое узнаю ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я ничего не знаю про "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" идут в обе стороны! И меня интересует та возможность, которая соответствует стрелке вниз.

post-35237-1379263919_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

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

 

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

Ну не зря, мне интересное все новое. А вот наименования контроллера нет, поэтому я не могу прочесть дейташит, который есть у Вас. И в ссылке правая скобка мешает переходить на статью.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну не зря, мне интересное все новое. А вот наименования контроллера нет, поэтому я не могу прочесть дейташит, который есть у Вас. И в ссылке правая скобка мешает переходить на статью.

 

Данные возможности относятся ко всему семейству 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Глянул дейташит на 256А3. Там обещают в качестве Ивент Систем некий 8-канальный мультиплексор, который в обход контроллера прерываний передает сигналы из одного аппаратного блока в другой, но с задержкой до 2 МЦ. То есть мне смотреть возможность передачи сигналов между двумя ножками разных портов? Или есть другая, конкретная задача?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Глянул дейташит на 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, но что для этого надо сделать? Куда этот флаг пихать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...