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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> ATXMEGA - запуск от внешнего таймера, ATXMEGA128A1
Slonofil
сообщение Sep 12 2013, 10:59
Сообщение #16


Местный
***

Группа: Участник
Сообщений: 327
Регистрация: 6-10-09
Из: РФ :: Ленинград
Пользователь №: 52 781



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

Спасибо!

Не могли бы Вы тогда проинспектировать мою логику запуска меги от внешнего таймера? Может, там чего-то не хватает? Или есть что-то лишнее?
Go to the top of the page
 
+Quote Post
Xenia
сообщение Sep 12 2013, 11:28
Сообщение #17


Гуру
******

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



Цитата(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 не запускается от кварцевого резонатора" - может быть, найдете там что-то для себя полезное.
Go to the top of the page
 
+Quote Post
Slonofil
сообщение Sep 12 2013, 11:36
Сообщение #18


Местный
***

Группа: Участник
Сообщений: 327
Регистрация: 6-10-09
Из: РФ :: Ленинград
Пользователь №: 52 781



Цитата(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В. Ну, и практика говорит за то же - у товарища, который пишет на асме, плата работает.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Sep 12 2013, 11:43
Сообщение #19


Гуру
******

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



Slonofil, мой предыдущий пост дописан. Прочтите его снова.

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


Ну так и спросите же скорее у своего товарища, что он пихает в OSC.XOSCCTRL ! sm.gif
Go to the top of the page
 
+Quote Post
Slonofil
сообщение Sep 12 2013, 11:43
Сообщение #20


Местный
***

Группа: Участник
Сообщений: 327
Регистрация: 6-10-09
Из: РФ :: Ленинград
Пользователь №: 52 781



Цитата(Xenia @ Sep 12 2013, 14:39) *
Slonofil, мой предыдущий пост дописан. Прочтите его снова.

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

К слову, к такому подходу, по которому сделана плата, вообще много вопросов. Но я тут подневольный, "партия сказала "НАДО!", комсомол ответил "ЕСТЬ!".
Go to the top of the page
 
+Quote Post
zombi
сообщение Sep 12 2013, 11:44
Сообщение #21


Гуру
******

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



У меня проект с A4/A4U отлично работает от внешнего генератора 32MHz, думаю A1U тоже будет работать.

Тут проблема в чём-то другом!!! У TC проц не работает даже от внутр. RC2M
Go to the top of the page
 
+Quote Post
Xenia
сообщение Sep 12 2013, 11:53
Сообщение #22


Гуру
******

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



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

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

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

В таком случае у меня впечатление, что вам в OSC.XOSCSEL надо писать ... нуль! sm.gif
Go to the top of the page
 
+Quote Post
Slonofil
сообщение Sep 12 2013, 12:01
Сообщение #23


Местный
***

Группа: Участник
Сообщений: 327
Регистрация: 6-10-09
Из: РФ :: Ленинград
Пользователь №: 52 781



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

В общем, да. Потому что логично было бы предположить, что биты FRQRANGE учитываются только во том случае, если в качестве источника в XOSCSEL выбран XTAL, а если EXTCLK - то блок осциллятора просто отключается за ненадобностью (что логично - он же тоже жрёт чего-то). Хотя кто их поймёт, этих чип-трэйсеров Атмела wacko.gif
Go to the top of the page
 
+Quote Post
zombi
сообщение Sep 12 2013, 12:06
Сообщение #24


Гуру
******

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



Точно ноль!

Вся подпрограмма:
Код
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 проц заработал???
Go to the top of the page
 
+Quote Post
Slonofil
сообщение Sep 12 2013, 12:17
Сообщение #25


Местный
***

Группа: Участник
Сообщений: 327
Регистрация: 6-10-09
Из: РФ :: Ленинград
Пользователь №: 52 781



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

Неть crying.gif

Хорошо, думаю, как только запущу мегу от внутреннего RC2M, сумею и от внешнего. Правильно ли я делаю, пытаясь вывести clkPER на ногу РЕ7 через EVSYS. И что логичнее применять для этой цели: EVSYS или CLKOUT? От чего это зависит?

Сообщение отредактировал Slonofil - Sep 12 2013, 12:19
Go to the top of the page
 
+Quote Post
zombi
сообщение Sep 12 2013, 12:26
Сообщение #26


Гуру
******

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



Не понимаю зачем для получения на пине только clkPER напрягать ещё и систему событий???
Go to the top of the page
 
+Quote Post
Slonofil
сообщение Sep 12 2013, 12:29
Сообщение #27


Местный
***

Группа: Участник
Сообщений: 327
Регистрация: 6-10-09
Из: РФ :: Ленинград
Пользователь №: 52 781



Цитата(zombi @ Sep 12 2013, 15:26) *
Не понимаю зачем для получения на пине только clkPER напрягать ещё и систему событий???

Ну, встретил такой пример - и подумал, что так и надо. Стало быть, можно обойтись строчкой PORTCFG_CLKEVOUT = PORTCFG_CLKOUT_PE7_gc; ?
Go to the top of the page
 
+Quote Post
zombi
сообщение Sep 12 2013, 12:31
Сообщение #28


Гуру
******

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



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

Конечно.
Go to the top of the page
 
+Quote Post
Slonofil
сообщение Sep 12 2013, 12:31
Сообщение #29


Местный
***

Группа: Участник
Сообщений: 327
Регистрация: 6-10-09
Из: РФ :: Ленинград
Пользователь №: 52 781



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

Спасибо!
Go to the top of the page
 
+Quote Post
Slonofil
сообщение Sep 13 2013, 17:04
Сообщение #30


Местный
***

Группа: Участник
Сообщений: 327
Регистрация: 6-10-09
Из: РФ :: Ленинград
Пользователь №: 52 781



Товарищи!

В общем, выяснилось, почему не дышал кристалл... оказалось, что в настройках проекта путь к 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 !
Go to the top of the page
 
+Quote Post

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

 


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


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