Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ATXMEGA - запуск от внешнего таймера
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Slonofil
Товарищи!

Помогите запустить ATXMEGA128A1 от врешнего кварцевого генератора 25 МГц! Пишу под GCC в AVR Studio 4.19. В качестве результата хочется получить на PE7 clkPer (через event system).

Мой код, который не дал результата, таков:
Код
int main(void)
{
    cli();

    OSC_XOSCCTRL = OSC_FRQRANGE_12TO16_gc |
                   OSC_XOSCSEL_EXTCLK_gc;
    OSC_CTRL = OSC_XOSCEN_bm;
    while(!(OSC_STATUS & OSC_XOSCRDY_bm)) {; }

    CPU_CCP = CCP_IOREG_gc;
    CLK_CTRL = CLK_SCLKSEL_XOSC_gc;
    OSC_CTRL &= 0xFE;

    EVSYS_CH0MUX = EVSYS_CHMUX_PRESCALER_1_gc;      // ClkPER div by 2^0 is event source
    PORTCFG_CLKEVOUT = PORTCFG_EVOUT_PE7_gc;        // Event Channel 7 Output on Port E pin 7
                                                    //  PORTCFG_CLKOUT_PE7_gc = (0x03<<0)

    PORTA_DIR = 0b00000000;
    PORTB_DIR = 0b11111111;
    PORTC_DIR = 0b00000000;
    PORTD_DIR = 0b00000000;
    PORTE_DIR = 0b10000000;             // PE7 must be configured as output for the event to be available on the pin
    PORTF_DIR = 0b00000000;
    PORTH_DIR = 0b00000000;
    PORTJ_DIR = 0b00011000;
    PORTK_DIR = 0b00000000;
    PORTQ_DIR = 0b0000;

    while (1)
    {
        asm ("nop");
    }
}
zombi
Вы уверены что правильно разрешаете работу генератора?
В Си не силён, но в примерах встречал вот так : OSC.CTRL|=OSC_XOSCEN_bm;
Slonofil
Цитата(zombi @ Sep 11 2013, 18:42) *
Вы уверены что правильно разрешаете работу генератора?
В Си не силён, но в примерах встречал вот так : OSC.CTRL|=OSC_XOSCEN_bm;

Я не накладываю маску, а задаю явное значение. Может, в этом проблема - обнуление бита работы внутреннего 2МГц генератора может быть игнорируется, а может и игнорирует всю команду... попробую сделать с маской.

Но тут ещё другая проблема: не запускается каметь даже от внутреннего генератора...
zombi
Цитата(Slonofil @ Sep 11 2013, 19:19) *
Но тут ещё другая проблема: не запускается каметь даже от внутреннего генератора...

Что значит не запускается???
От внутр. RC2M дОлжОн запускаться обязятельно!
Сначала простое ногодрыганье от внутр. 2MHz! а уже потом всякие внешние генераторы, сис. событий и т.д.
Slonofil
Цитата(zombi @ Sep 11 2013, 19:41) *
Что значит не запускается???
От внутр. RC2M дОлжОн запускаться обязятельно!
Сначала простое ногодрыганье от внутр. 2MHz! а уже потом всякие внешние генераторы, сис. событий и т.д.

Во, я тоже так думал! А нифига, не дрыгаются ноги. Вот такая программа никак не идёт, хотя компилируется без ошибок (что ожидаемо), и штатно шьётся, судя по поведению AVR ISP mkII.

Код
#include <avr/io.h>
#include <stdint.h>
#include <stdlib.h>
#include <avr/interrupt.h>


int main(void)
{
    cli();

    PORTA_DIR = 0b00000000;
    PORTB_DIR = 0b11111111;
    PORTC_DIR = 0b00000000;
    PORTD_DIR = 0b00000000;
    PORTE_DIR = 0b10000000;                              // PE7 must be configured as output for the event to be available on the pin
    PORTF_DIR = 0b00000000;
    PORTH_DIR = 0b00000000;
    PORTJ_DIR = 0b00011000;
    PORTK_DIR = 0b00000000;
    PORTQ_DIR = 0b0000;

    while (1)
    {
        PORTB_OUT = 0x55;
        asm ("nop");
        PORTB_OUT = 0xAA;
    }
}
zombi
Ну тогда я пас.
Надо сишников подождать biggrin.gif
Или накропайте микро прогу на асме.
С фузами всё в порядке?
А что за плата?
Slonofil
Цитата(zombi @ Sep 11 2013, 19:51) *
Ну тогда я пас.
Надо сишников подождать biggrin.gif
Или накропайте микро прогу на асме.
С фузами всё в порядке?
А что за плата?

Плата готовая, требуется освоить. На асме на такой же плате мега по крайней мере запускалась, теперь стоит задача оживить пациента на С.

С фьюзами даже и не знаю, что делать, так что пока оставил всё как есть, по умолчанию. А надо с ними что-то делать?

Кстати, нужно ли подтягивать внешним резистором RESET к плюсу питания или нет? Вроде ж есть внутренний.
zombi
Цитата(Slonofil @ Sep 11 2013, 19:56) *
С фьюзами даже и не знаю, что делать, так что пока оставил всё как есть, по умолчанию. А надо с ними что-то делать?

Ну Вам виднее, но я бы не доверял умолчаниям. Хрен его знает кто и как их умолчал biggrin.gif

Цитата(Slonofil @ Sep 11 2013, 19:56) *
Кстати, нужно ли подтягивать внешним резистором RESET к плюсу питания или нет? Вроде ж есть внутренний.
Всегда ставлю 10кОм.
Slonofil
Цитата(zombi @ Sep 11 2013, 20:06) *
Ну Вам виднее, но я бы не доверял умолчаниям. Хрен его знает кто и как их умолчал biggrin.gif

Ну, наверное, да. Тогда что нужно там выставлять? Сейчас как на картинке.

Цитата(zombi @ Sep 11 2013, 20:06) *
Всегда ставлю 10кОм.

Щас ткнулся осциллографом в RESET - всё как положено при шитье через PDI - дрыги при программировании, "AVRISP mkII: : Done" в окошке среды, единица колом после программирования, и никаких больше движений.
Slonofil
Кстати, пока контроллер на плате мне не отвечает взаимностью, задумал купить отдельный кристалл и поиграться с ним на макетке (если сожгу - не жалко). Но есть макетка только под 64 и 80 пинов TQFP. Правильно ли я понимаю, но наиболее родственно-близким к ATXMEGA128A1 будет ATXMEGA128A3? И чем ATXMEGA128A3 отличается от ATXMEGA128A3U (который в половину дешевле)?
Xenia
Цитата(Slonofil @ Sep 12 2013, 13:13) *
Правильно ли я понимаю, но наиболее родственно-близким к ATXMEGA128A1 будет ATXMEGA128A3?

Я бы так не сказала. На мой взгляд, ближайшим родственником ATXMEGA128A1 будет ATXMEGA128A1U. И только потом всё остальное.

Цитата(Slonofil @ Sep 12 2013, 13:13) *
И чем ATXMEGA128A3 отличается от ATXMEGA128A3U (который в половину дешевле)?

Главным образом, наличием USB. Минорные отличия описаны здесь:
Migration from ATxmega256A3/192A3/128A3/64A3 to ATxmega256A3U/192A3U/128A3U/64A3U

Лишний USB не мешает, т.к. его пины можно использовать по старому назначению.
Берите с буквой U, они новые и в них errara исправлена. А старые стоят дороже, как антиквариат sm.gif, т.к. с производства сняты.
Slonofil
Цитата(Xenia @ Sep 12 2013, 12:50) *
Главным образом, наличием USB. Минорные отличия описаны здесь:
Migration from ATxmega256A3/192A3/128A3/64A3 to ATxmega256A3U/192A3U/128A3U/64A3U

Берите с буквой U, они новые и в них errara исправлена. А старые стоят дороже, как антиквариат sm.gif, т.к. с производства сняты.

Исключительно благодарен, уважаемая Xenia!

Цитата(Xenia @ Sep 12 2013, 12:50) *
Я бы так не сказала. На мой взгляд, ближайшим родственником ATXMEGA128A1 будет ATXMEGA128A1U. И только потом всё остальное.

Как писАл постом выше, у меня нет макетки для 100-ногого TQFP, ищу на 64 ноги, но наиболее похожий по внутренностям.

Интересно, а А1/А3 действительно сняты с производства? Где можно взглянуть на их производственный статус? На странице Атмела не нашёл =(
Xenia
Цитата(Slonofil @ Sep 12 2013, 13:59) *
Интересно, а А1/А3 сняты с производства? Где можно взглянуть на их производственный статус? На странице Атмела не нашёл =(


Не признаются пока, видимо на складе старых еще полно. Но новые с буквой U клепают вовсю, да и цена у них низкая.

Тут ведь как еще произошло - семейство XMega началось с самой "крутой" A1, а прочие (A3, A4, B1, B3, C3, C4, D3, D4, E5) в той или иной степени представляют ее урезанные варианты, хотя и что-то из интерфейсов бывает добавлено. В этом смысле A1 не повезло, т.к. первый блин обычно бывает комом sm.gif. Из-за этого у нее самая длинная errata, причем во многих случаях неисправимая (не работает bootloader, DMA SPI в master-режиме и многое другое). Это-то и досадно. Но тут на счастье подоспела A1U, у которой многое удалось исправить. В этой ситации продолжать производить старые A1 уже не имеет никакого смысла. С A3 ситуация получше, т.к. в ее конструкции кое-что из огрехов A1 было исправлено с самого начала, но A3U, на мой взгляд, все равно предпочтительнее.

Однако надо понимать, что XMega - новая серия, имеющая очень много отличий от прошлых Mega. И к тому же пересыщенная периферией. Было бы невероятным, если бы флагман этой серии получился бы сразу без сучка и без задоринки.
Slonofil
Цитата(Xenia @ Sep 12 2013, 13:16) *
Не признаются пока, видимо на складе старых еще полно. Но новые с буквой U клепают вовсю, да и цена у них низкая.

Тут ведь как еще произошло - семейство XMega началось с самой "крутой" A1, а прочие (A3, A4, B1, B3, C3, C4, D3, D4, E5) в той или иной степени представляют ее урезанные варианты, хотя и что-то из интерфейсов бывает добавлено. В этом смысле A1 не повезло, т.к. первый блин обычно бывает комом sm.gif. Из-за этого у нее самая длинная errata, причем во многих случаях неисправимая (не работает bootloader, DMA SPI в master-режиме и многое другое). Это-то и досадно. Но тут на счастье подоспела A1U, у которой многое удалось исправить. В этой ситации продолжать производить старые A1 уже не имеет никакого смысла. С A3 ситуация получше, т.к. в ее конструкции кое-что из огрехов A1 было исправлено с самого начала, но A3U, на мой взгляд, все равно предпочтительнее.

Однако надо понимать, что XMega - новая серия, имеющая очень много отличий от прошлых Mega. И к тому же пересыщенная периферией. Было бы невероятным, если бы флагман этой серии получился бы сразу без сучка и без задоринки.

Видите ли, какое дело: я ни бум-бум ни в каких мегах, ни в старых, ни в новых, так что мне в принципе всё равно с чего начинать. Если Вы говорите, что лучше с A3U - так и сделаю. Главное, чтобы потом можно было знания применить на А1, которая уже заложена в плату, с которой хошь-не хошь, а надо работать.

И вот ещё хотел уточнить у Вас как у опытного пользователя данной серии: а что ещё у А1 из серьёзного не допилено кроме бутлодыря и DMA+MasterSPI? Чтобы мне на мину не нарваться при первом же подходе к снаряду...
Xenia
Цитата(Slonofil @ Sep 12 2013, 14:24) *
Видите ли, какое дело: я ни бум-бум ни в каких мегах, ни в старых, ни в новых, так что мне в принципе всё равно с чего начинать. Если Вы говорите, что лучше с A3U - так и сделаю. Главное, чтобы потом можно было знания применить на А1, которая уже заложена в плату, с которой хошь-не хошь, а надо работать.

Этого я не говорила, а сказала лишь, что с буквой U лучше, чем без этой буквы. Т.е. понимать сказанное надо так, что A1U предпочтительнее, чем A1, а A3U предпочтительнее, чем A3. Тогда как A1/A1U и A3/A3U между собой я не сравнивала.

Но на вашем месте, а бы заменила A1 на A1U, т.к. риска тут никакого нет, ввиду практически полного подобия (в том числе и в корпусах). А вот заменять A1 на A3/A3U поостереглась. Полагаю, что рисковать здесь стоило бы только в одном случае - если флеша нужно больше, чем 128К, т.к. у A1U предел 128К, а у A3U бывает до 256К.

Цитата(Slonofil @ Sep 12 2013, 14:24) *
И вот ещё хотел уточнить у Вас как у опытного пользователя данной серии: а что ещё у А1 из серьёзного не допилено кроме бутлодыря и DMA+MasterSPI? Чтобы мне на мину не нарваться при первом же подходе к снаряду...

К сожалению, по чаcти ATXmega я тоже новичок (только один проект сделала), а бутлодырь и DMA+MasterSPI - это как раз то, на что я сама нарвалась sm.gif.
Slonofil
Цитата(Xenia @ Sep 12 2013, 13:55) *
К сожалению, по чаcти ATXmega я тоже новичок (только один проект сделала), а бутлодырь и DMA+MasterSPI - это как раз то, на что я сама нарвалась sm.gif.

Спасибо!

Не могли бы Вы тогда проинспектировать мою логику запуска меги от внешнего таймера? Может, там чего-то не хватает? Или есть что-то лишнее?
Xenia
Цитата(Slonofil @ Sep 12 2013, 14:59) *
Не могли бы Вы тогда проинспектировать мою логику запуска меги от внешнего таймера? Может, там чего-то не хватает? Или есть что-то лишнее?


Я сразу, как вы тему начали, вашу проблему посмотрела, но что-то посоветовать не решилась, т.к. не знаю, как быть с кварцем на 25 Мгц.

Вот вы устанавливаете бит OSC_FRQRANGE_12TO16_gc, что указывает диапазон от 12 до 16 МГц, но ведь у вас-то 25 МГц! Выходит, что формально это ошибка. Но с другой строны я не могу найти среди иных возможностей такую, чтобы 25 МГц туда входила.

По всех же примерах, которые я встречала, кварц больше, чем 16 МГц не ставят, а используют внутреннее умножение частоты. Обычно 8МГц х 3 = 24МГц, 8МГц х 4 = 32МГц и 16МГц х 2 = 32МГц.

Сама бы я сделала так:
Код
// Clock Source Select
  CCP = CCP_IOREG_gc;                       // 0xD8 - protected IO register
  CLK.PSCTRL = 0x00;                        // Select prescaler A division ratio "1", no division

  OSC.XOSCCTRL = 0x4B;                      // FRQRANGE[1:0] set to (2 MHz - 9 MHz), XOSCSEL[3:0] set to (0.4 - 16 MHz XTAL, 16K CLK)
  OSC.CTRL = OSC_XOSCEN_bm;                 // 0x08 - external oscillator enable
  OSC.XOSCFAIL = OSC_XOSCFDIF_bm | OSC_XOSCFDEN_bm;  // 0x03 - failure detection interrupt flag and set XOSCFDEN: failure detection enable
  while( !(OSC.STATUS & OSC_XOSCRDY_bm));   // 0x08 - wait until external clock source is stable and then select it for PLL clock input

  CCP = CCP_IOREG_gc;                       // 0xD8 - protected IO register
  CLK.CTRL = CLK_SCLKSEL_XOSC_gc;           // 0x03 - XOSC - external oscillator or clock


Хотя на счет OSC.XOSCCTRL сильно не уверена, т.к. это у меня кварц на 8 МГц, а не у вас. Т.е. OSC.XOSCCTRL я бы для вашего случая подбирала вручную, испытывая разные варианты.

P.S. Советую ознакомиться с темой, прозвучавшей на нашем форуме ранее - "Xmega не запускается от кварцевого резонатора" - может быть, найдете там что-то для себя полезное.
Slonofil
Цитата(Xenia @ Sep 12 2013, 14:28) *
Я сразу, как вы тему начали, вашу проблему посмотрела, но что-то посоветовать не решилась, т.к. не знаю, как быть с кварцем на 25 Мгц.

Вот вы устанавливаете бит OSC_FRQRANGE_12TO16_gc, что указывает диапазон от 12 до 16 МГц, но ведь у вас-то 25 МГц! Выходит, что формально это ошибка. Но с другой строны я не могу найти среди иных возможностей такую, чтобы 25 МГц туда входила.

По всех же примерах, которые я встречала, кварц больше, чем 16 МГц не ставят, а используют внутреннее умножение частоты. Обычно 8МГц х 3 = 24МГц, 8МГц х 4 = 32МГц и 16МГц х 2 = 32МГц.

Да, этот вопрос меня тоже волновал, но из всех документов, что я прочитал на эту тему (ДШ на группу, на конкретный 128А1, AVR1003 Using the XMEGA™ Clock System), следует, что 16 МГц максимум касается только кварцевого резонатора, (и для него же имеют смысл конденсаторы). Что же касается внешнего тактового источника (любого, в т.ч. генератора), то тут - до 32 МГц при питании свыше 2,7В. Ну, и практика говорит за то же - у товарища, который пишет на асме, плата работает.
Xenia
Slonofil, мой предыдущий пост дописан. Прочтите его снова.

Цитата(Slonofil @ Sep 12 2013, 15:36) *
...16 МГц максимум касается только кварцевого резонатора, (и для него же имеют смысл конденсаторы). Что же касается внешнего тактового источника (любого, в т.ч. генератора), то тут - до 32 МГц при питании свыше 2,7В. Ну, и практика говорит за то же - у товарища, который пишет на асме, плата работает.


Ну так и спросите же скорее у своего товарища, что он пихает в OSC.XOSCCTRL ! sm.gif
Slonofil
Цитата(Xenia @ Sep 12 2013, 14:39) *
Slonofil, мой предыдущий пост дописан. Прочтите его снова.

Да, логика мне ясна. И с резонатором всё понятно, но в моём случае именно генератор. Жаль, что никто не пишет, пытался ли использовать внешнюю тактовую, неважно с какой частотой. Просто чтобы свериться с настройками. Ну, а дальше - конечно, только практика.

К слову, к такому подходу, по которому сделана плата, вообще много вопросов. Но я тут подневольный, "партия сказала "НАДО!", комсомол ответил "ЕСТЬ!".
zombi
У меня проект с A4/A4U отлично работает от внешнего генератора 32MHz, думаю A1U тоже будет работать.

Тут проблема в чём-то другом!!! У TC проц не работает даже от внутр. RC2M
Xenia
Цитата(zombi @ Sep 12 2013, 15:44) *
У меня проект с A4/A4U отлично работает от внешнего генератора 32MHz, думаю A1U тоже будет работать.

Тогда признавайтесь, что в OSC.XOSCCTRL писали! sm.gif

Цитата(Slonofil @ Sep 12 2013, 15:43) *
И с резонатором всё понятно, но в моём случае именно генератор.

В таком случае у меня впечатление, что вам в OSC.XOSCSEL надо писать ... нуль! sm.gif
Slonofil
Цитата(Xenia @ Sep 12 2013, 14:53) *
В таком случае у меня впечатление, что вам в OSC.XOSCSEL надо писать ... нуль! sm.gif

В общем, да. Потому что логично было бы предположить, что биты FRQRANGE учитываются только во том случае, если в качестве источника в XOSCSEL выбран XTAL, а если EXTCLK - то блок осциллятора просто отключается за ненадобностью (что логично - он же тоже жрёт чего-то). Хотя кто их поймёт, этих чип-трэйсеров Атмела wacko.gif
zombi
Точно ноль!

Вся подпрограмма:
Код
CLK_init:
    ldi    RTMPA,OSC_XOSCSEL_EXTCLK_gc
    sts    (OSC_XOSCCTRL),RTMPA

    lds    RTMPA,(OSC_CTRL)
    ori    RTMPA,OSC_XOSCEN_bm
    sts    (OSC_CTRL),RTMPA

    lds    RTMPA,(OSC_STATUS)
    sbrs    RTMPA,OSC_XOSCRDY_bp
    rjmp    PC-3

    ldi    RTMPA,CCP_IOREG_gc
    sts    (CPU_CCP),RTMPA
    ldi    RTMPA,CLK_SCLKSEL_XOSC_gc
    sts    (CLK_CTRL),RTMPA

    ret


2 Slonofil. Я так понимаю что от внутр. RC проц заработал???
Slonofil
Цитата(zombi @ Sep 12 2013, 15:06) *
2 Slonofil. Я так понимаю что от внутр. RC проц заработал???

Неть crying.gif

Хорошо, думаю, как только запущу мегу от внутреннего RC2M, сумею и от внешнего. Правильно ли я делаю, пытаясь вывести clkPER на ногу РЕ7 через EVSYS. И что логичнее применять для этой цели: EVSYS или CLKOUT? От чего это зависит?
zombi
Не понимаю зачем для получения на пине только clkPER напрягать ещё и систему событий???
Slonofil
Цитата(zombi @ Sep 12 2013, 15:26) *
Не понимаю зачем для получения на пине только clkPER напрягать ещё и систему событий???

Ну, встретил такой пример - и подумал, что так и надо. Стало быть, можно обойтись строчкой PORTCFG_CLKEVOUT = PORTCFG_CLKOUT_PE7_gc; ?
zombi
Цитата(Slonofil @ Sep 12 2013, 15:29) *
Ну, встретил такой пример - и подумал, что так и надо. Стало быть, можно обойтись строчкой PORTCFG_CLKEVOUT = PORTCFG_CLKOUT_PE7_gc; ?

Конечно.
Slonofil
Цитата(zombi @ Sep 12 2013, 15:31) *
Конечно.

Спасибо!
Slonofil
Товарищи!

В общем, выяснилось, почему не дышал кристалл... оказалось, что в настройках проекта путь к hex'y был из старого проекта с ATTINY24A wacko.gif После выбора правильного пути всё в норме и с работой от RC2M, и с внешним генератором. Собственно, работающий у меня код (настройка OSC + CLK) и вывод в PE7 системной частоты - вдруг кому пригодится.

Код
int main (void)
{
    cli ();

    PORTA_DIR = 0b00000000;
    PORTB_DIR = 0b11111111;                                 // PORTB to OUTPUT
    PORTC_DIR = 0b00000000;
    PORTD_DIR = 0b00000000;
    PORTE_DIR = 0b10000000;                                 // PE7 must be configured as output for the event to be available on the pin
    PORTF_DIR = 0b00000000;
    PORTH_DIR = 0b00000000;
    PORTJ_DIR = 0b00011000;
    PORTK_DIR = 0b00000000;
    PORTQ_DIR = 0b0000;

    CPU_CCP = CCP_IOREG_gc;                                 // Enable change of the protected I/O registers
    CLK_PSCTRL = CLK_PSADIV_1_gc | CLK_PSBCDIV_1_1_gc;      // Select prescaler A, B & C division ratio "1", no division

    OSC_XOSCCTRL = OSC_FRQRANGE_04TO2_gc |
                   OSC_XOSCSEL_EXTCLK_gc;                   // External Clock with 6 CLK Start-up Time
    OSC_CTRL |= OSC_XOSCEN_bm;                              // External Oscillator Enable
    while (!(OSC_STATUS & OSC_XOSCRDY_bm)) {; }             // Waiting for external clock source stable

    CPU_CCP = CCP_IOREG_gc;                                 // Enable change of the protected I/O registers
    CLK_CTRL = CLK_SCLKSEL_XOSC_gc;                         // Switch to external oscillator or clock
    OSC_CTRL &= ~OSC_RC2MEN_bm;                             // Disable RC2M

    PORTCFG_CLKEVOUT = PORTCFG_CLKOUT_PE7_gc;               // ClkPER Output on Port E pin 7

    while (1)
    {
        PORTB_OUTTGL = 0xFF;                                // PORTB test meander
    }
}


Большое спасибо всем неравнодушным beer.gif !
Slonofil
Товарищи, не сочтите за труд, посоветуйте, как быть!

Штудирую таймер-счётчик TCC0, конкретно Single-slope PWM. И возник такой вопрос: выводы OC0х в моей XMEGA распиханы по 3 портам параллельно. Настраиваю PC0 на выход, TC0_CCAEN в единицу - и на РС0 имею ШИМ. А как получить этот же ШИМ на PD0? И настраивал его на выход, и РС0 на вход ставил - нет в порту D ШИМа. Что не так делаю? По какому принципу вообще распихиваются сигналы по портам?

Сейчас в РС0 вывожу так:

Код
    PORTC_DIR = 0b00000001;

    TCC0_CTRLA    = TC_CLKSEL_DIV1_gc;                      // DIV1, Prescaler: Clk
    TCC0_CTRLB    = TC0_CCAEN_bm | TC_WGMODE_SS_gc;         // CCAEN = 1, Single-slope PWM operation
    TCC0_CTRLD    = TC_EVACT_OFF_gc | TC_EVSEL_OFF_gc;      // No Event Action, No Event Source
    TCC0_CTRLE    = 0;                                      // NORMAL, TCC0 is set to normal mode (timer/counter type 0)
    TCC0_PER      = 0xC34E;                                 // TOP = 0xFFFF
    TCC0_CCA      = 0x61A7;                                 // Non-buffering method
    TCC0_INTCTRLA = TC_ERRINTLVL_OFF_gc |
                    TC_OVFINTLVL_OFF_gc;                    // Error Interrupt Disabled, Overflow Interrupt Disabled
    TCC0_INTCTRLB = TC_CCDINTLVL_OFF_gc |                   // Compare or Capture D...A Interrupts Disabled
                    TC_CCCINTLVL_OFF_gc |
                    TC_CCBINTLVL_OFF_gc |
                    TC_CCAINTLVL_OFF_gc;
bob1
Цитата(Slonofil @ Sep 26 2013, 20:33) *
А как получить этот же ШИМ на PD0? И настраивал его на выход, и РС0 на вход ставил - нет в порту D ШИМа. Что не так делаю? По какому принципу вообще распихиваются сигналы по портам?
на PD0 можно вывести только с счетчиков TCD*. На порт E с счетчиков TCE* и т.д
Slonofil
Цитата(bob1 @ Sep 26 2013, 19:24) *
на PD0 можно вывести только с счетчиков TCD*. На порт E с счетчиков TCE* и т.д

Усё, вкурил, спасибо!!
ESN
Цитата
"Помогите запустить ATXMEGA128A1 от врешнего кварцевого генератора 25 МГц!"
И все же, тактирование Xmegi от внешнего генератора 25 МГц это штатный режим работы или он из области overclocking?
Slonofil
Цитата(ESN @ Nov 15 2013, 12:41) *
И все же, тактирование Xmegi от внешнего генератора 25 МГц это штатный режим работы или он из области overclocking?

Из того, что понял я, ограничения в 16 МГц касаются кварцевого резонатора - более быстрый XTAL генератор меги просто не запустит (ну, в смысле надёжно чтобы). Внешний же тактовый сигнал, откуда он ни берётся, должен быть до 32 МГц.
ESN
Спасибо. Глядя на Figure 10-1. The clock system,clock sourse, and clock distribution. в Manual Xmega интуитивно соглашаюсь с Вами. Как-то этот случай , запуск от внешнего генератора на частотах > 16 Мгц, неявно описан в руководстве. Уважаемый модератор, может стоит изменить в названии темы слово "таймера" на "генератора"?
zombi
Цитата(ESN @ Nov 15 2013, 13:41) *
И все же, тактирование Xmegi от внешнего генератора 25 МГц это штатный режим работы или он из области overclocking?

У меня ATxmega32A4U тактируется внешним генератором 32MHz.
Проблем не замечал.
Slonofil
Цитата(zombi @ Nov 15 2013, 17:58) *
внешним генератором

Или резонатором? Если генератором, то и у меня нет проблем с 25 МГц.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.