Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопросы по XMega
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Страницы: 1, 2
Xenia
Цитата(zombi @ Sep 17 2013, 22:03) *
В DS на конкретный чип раздел Electrical Characteristics , Internal Phase Locked Loop (PLL) characteristics
там мин/макс чего можно от PLL получить


PLL, согласно "электрическим характеристикам" можно аж до 128 МГц разогнать sm.gif, но не в этом же дело. Проблема в том, будут ли с такой частотой работать остальные элементы МК. Частота 32 МГц выбрана предельной не потому, что PLL не может сгенерировать больше, а, прежде всего, потому, что flash-память на такой частоте сглючит.

Но вот этот же момент меня и смущает, т.к. для работы таймера в счетном режиме никая поддержка CPU не нужна, т.к. этот процесс теоретически может происходить совершенно автономно, будучи ограниченным лишь скоростью дискретных элементов самого таймера. И никакие клочные частоты для этого не нужны. А эта скорость, очевидно, 32 МГц-ами не может быть ограничена. Тем более, если zombi не врет sm.gif, то у него получалось с частотой 64MHz даже ножкой дрыгать.
ArtemKAD
Цитата(Xenia @ Sep 17 2013, 20:18) *
Пока измеряла две вещи:

Первое: сигнал с выхода кварцевого генератора KXO-210 с частотами 4-6-8-10-12-16 МГц на предмет их термостабильности. Хорошо бы подняться до 60 МГц (выше у кварцев обычно не бывает). По всей видимости воспользуюсь делителем, но разговор о частотах у Xmega, превышающих 32 МГц, меня заинтриговал.

Второе: тестовый вариант измерения частоты, генерирумой той же XMega другим таймером. Коннект выхода со входом внешний, посредством джампера. Тут частота стоит, как влитая - даже младший разряд не шелохнется.

В обоих случаях велся счет импульсов за 1 секунду, отмеряемую третьим таймером той же XMega.


Посмотрите в сторону xMega E-серии . У них там блок программируемой логики и вроде там была возможность не протаскивать входной сигнал через синхронизаторы и составить 16 разрядный таймер с защелкой по событию.
Если есть возможность иметь опорный сигнал с частотой 32кГц можно более точно увидеть изменения. Считаете входной сигнал таймером без сброса и остановки, а защелку фиксируете по фронту опорника. Накапливаете статистику дэльт к примеру за секунду.... Так можно отловить в т.ч. величину фазовых шумов.

ЗЗЫ. Кроме того, там основной тактовый генератор обещают может до 140 с лишним МГц на предделители отправлять....
zombi
Цитата(Xenia @ Sep 17 2013, 21:22) *
Тем более, если zombi не врет sm.gif, то у него получалось с частотой 64MHz даже ножкой дрыгать.

Даа... не ожидал такого недоверия!
Всё, обиделся я тчк.

Цитата(Xenia @ Sep 17 2013, 21:22) *
PLL, согласно "электрическим характеристикам" можно аж до 128 МГц разогнать sm.gif, но не в этом же дело. Проблема в том, будут ли с такой частотой работать остальные элементы МК.

И нафига тогда, скажите пожалуйста, атмел это делает ?
Даёт частоту на которой не всё работает biggrin.gif biggrin.gif biggrin.gif

Всё, короче, обиделся ещё раз. crying.gif
HHIMERA
Цитата(_Pasha @ Sep 17 2013, 20:28) *
Такая фича, как считать испульсы частотой выше процессорной традиционно присутствует у продукции Микрочип

STM8 и STM32 тоже на такое способны...
_Pasha
Цитата(HHIMERA @ Sep 18 2013, 08:13) *
STM8 и STM32 тоже на такое способны...

Я говорил о том, что если свет клином сошелся на Xmega, то добавление корпуса SOT23-6 в качестве предделителя весьма ненапряжно.
Xenia
Цитата(_Pasha @ Sep 18 2013, 10:16) *
Я говорил о том, что если свет клином сошелся на Xmega, то добавление корпуса SOT23-6 в качестве предделителя весьма ненапряжно.


Это чего еще за корпус? sm.gif Чего у него внутри? Номинал назвать можно?
Navovvol
Xenia, я кажется понял, что требуется.
Пусть Atxmega128A1 тактируется от внешнего кварца на 8МГц. И через PLL вытворяем такое: (код сгенерирован CV AVR)
CODE

// System Clocks initialization
void system_clocks_init(void)
{
unsigned char n,s;

// Optimize for speed
#pragma optsize-
// Save interrupts enabled/disabled state
s=SREG;
// Disable interrupts
#asm("cli")

// External 8000.000 kHz clock source on XTAL1 initialization
OSC.XOSCCTRL=OSC_XOSCSEL_EXTCLK_gc;
// Enable the external clock source
OSC.CTRL|=OSC_XOSCEN_bm;

// System Clock prescaler A division factor: 1
// System Clock prescalers B & C division factors: B:2, C:2
// ClkPer4: 128000.000 kHz
// ClkPer2: 64000.000 kHz
// ClkPer: 32000.000 kHz
// ClkCPU: 32000.000 kHz
n=(CLK.PSCTRL & (~(CLK_PSADIV_gm | CLK_PSBCDIV1_bm | CLK_PSBCDIV0_bm))) |
CLK_PSADIV_1_gc | CLK_PSBCDIV_2_2_gc;
CCP=CCP_IOREG_gc;
CLK.PSCTRL=n;

// PLL initialization
// PLL clock source: External Osc. or Clock
// PLL multiplication factor: 16
// PLL frequency: 128.000000 MHz
// Set the PLL clock source and multiplication factor
n=(OSC.PLLCTRL & (~(OSC_PLLSRC_gm | OSC_PLLFAC_gm))) |
OSC_PLLSRC_XOSC_gc | 16;
CCP=CCP_IOREG_gc;
OSC.PLLCTRL=n;
// Enable the PLL
OSC.CTRL|=OSC_PLLEN_bm;

// System Clock prescaler A division factor: 1
// System Clock prescalers B & C division factors: B:2, C:2
// ClkPer4: 128000.000 kHz
// ClkPer2: 64000.000 kHz
// ClkPer: 32000.000 kHz
// ClkCPU: 32000.000 kHz
n=(CLK.PSCTRL & (~(CLK_PSADIV_gm | CLK_PSBCDIV1_bm | CLK_PSBCDIV0_bm))) |
CLK_PSADIV_1_gc | CLK_PSBCDIV_2_2_gc;
CCP=CCP_IOREG_gc;
CLK.PSCTRL=n;

// Wait for the PLL to stabilize
while ((OSC.STATUS & OSC_PLLRDY_bm)==0);

// Select the system clock source: Phase Locked Loop
n=(CLK.CTRL & (~CLK_SCLKSEL_gm)) | CLK_SCLKSEL_PLL_gc;
CCP=CCP_IOREG_gc;
CLK.CTRL=n;

// Disable the unused oscillators: 2 MHz, 32 MHz, internal 32 kHz
OSC.CTRL&= ~(OSC_RC2MEN_bm | OSC_RC32MEN_bm | OSC_RC32KEN_bm);

// ClkPer output: Disabled bit 7
PORTCFG.CLKEVOUT=(PORTCFG.CLKEVOUT & (~PORTCFG_CLKOUT_gm)) | PORTCFG_CLKOUT_OFF_gc;

// Restore interrupts enabled/disabled state
SREG=s;
// Restore optimization for size if needed
#pragma optsize_default
}

Далее берем таймер и заставляем его работать в режиме "высокой точности" Hi-Res в этом режиме он тактируется от Clkper4, т.е. от 128MHz. А далее пин таймера ставим на Capture. Нее ? не подойдет ?
HHIMERA
Цитата(_Pasha @ Sep 18 2013, 09:16) *
Я говорил о том, что если свет клином сошелся на Xmega, то добавление корпуса SOT23-6 в качестве предделителя весьма ненапряжно.

Не... если "PIC и XMega - братья навек!"(С)... то я как бы и не против...
Только... такое решение попахивает удалением гланд нетрадиционным для медицины способом...
Тогда уж проще прилепить что-то из 74LVC... "И XMega сыта, и адепты целы."(С)...
Xenia
Цитата(Navovvol @ Sep 18 2013, 11:01) *
Далее берем таймер и заставляем его работать в режиме "высокой точности" Hi-Res в этом режиме он тактируется от Clkper4, т.е. от 128MHz. А далее пин таймера ставим на Capture. Нее ? не подойдет ?


Про режим "высокой точности" интересно, надо будет попробовать. Однако признаюсь, что отношусь к этой идее скептически, поскольку HiRes действует на частоту PWM, тогда как у меня не генерация частоты, а, наоборот, счет частоты, причем внешней. И тут уж каждый электрический импульс снаружи (фронт нужного направления) добавляет к счетчику таймера единичку. При этом само понятие "высокой точности" в данном контексте абсурдно, т.к. ничего другого, кроме той единички прибавиться не может.
Navovvol
Цитата(Xenia @ Sep 18 2013, 11:42) *
Про режим "высокой точности" интересно, надо будет попробовать. Однако признаюсь, что отношусь к этой идее скептически, поскольку HiRes действует на частоту PWM, тогда как у меня не генерация частоты, а, наоборот, счет частоты, причем внешней. И тут уж каждый электрический импульс снаружи (фронт нужного направления) добавляет к счетчику таймера единичку. При этом само понятие "высокой точности" в данном контексте абсурдно, т.к. ничего другого, кроме той единички прибавиться не может.

Ах да совсем забыл... в режиме HiRes нормальный режим таймера не доступен. А он нужен для захвата.
_Pasha
Цитата(HHIMERA @ Sep 18 2013, 10:05) *
"И XMega сыта, и адепты целы."(С)...

Типичное мышление, благодаря которому простое удаление гланд становится нетрадиционным [censored] .
74LVC, да в sot23-6, - содержит емнип адын flip-flop, который несомненно порадует очаровательную Ксению своей бесполезностью . sm.gif
HHIMERA
Цитата(_Pasha @ Sep 18 2013, 15:54) *
74LVC, да в sot23-6, - содержит емнип адын flip-flop, который несомненно порадует очаровательную Ксению своей бесполезностью . sm.gif

Та ну??? Серьёзно??? biggrin.gif
Один или два flip-flop... не суть...
Ты не спеши... в даташит загляни, почитай 6.0 TIMER0 MODULE AND TMR0 REGISTER...
Почитал??? Куда теперь твоя уверенность делась??? rolleyes.gif
_Pasha
Цитата(HHIMERA @ Sep 18 2013, 17:41) *
Та ну??? Серьёзно??? biggrin.gif
Один или два flip-flop... не суть...
Ты не спеши... в даташит загляни, почитай 6.0 TIMER0 MODULE AND TMR0 REGISTER...
Почитал??? Куда теперь твоя уверенность делась??? rolleyes.gif

Насколько я понимаю, на процесс подсчета количества импульсов, порождаемый оффтопом джиттер не влияет, по сему, никуда уверенность не девается laughing.gif
HHIMERA
Цитата(_Pasha @ Sep 18 2013, 18:30) *
Насколько я понимаю, на процесс подсчета количества импульсов, порождаемый оффтопом джиттер не влияет, по сему, никуда уверенность не девается laughing.gif

А зря!!! Должна была уже давно покинуть этот тленный мир... wink.gif
ArtemKAD
Цитата(ArtemKAD @ Sep 16 2013, 20:16) *
Сами-же виртуальные порты отдельно в VPORTх . Хотя я так пока и не вкурил зачем они вообще нужны...

Упс, таки уже вкурил. Как гавориться - а слона-то я и не заметил...

Кстати, есть тут и у меня вопросик. В процессе поисков в описании порта наткнулся на факт наличия на входе наряду с обычными event-ами еще и "Asynchronous Events". Вот только дальше найти куда они идут и как используются я так и не смог. Кому-то найти это удалось?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.