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

 
 
> Xmega не запускается от кварцевого резонатора., Те же "гости" в ту же хату
misyachniy
сообщение Aug 6 2013, 15:36
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454



Собрал первую плату на Xmega.
Программирование и переключение на внутренний 32 МГц генератор работает.
Переключение на кварцевый генератор никак.

В начале проверил/перепроверил аппаратуру.
Прозвонил все выводы XTAL, специально приобрел конденсаторы 15пФ.
Перепробовал три разных кварца из разных партий.
Все равно генерации нет, на одном выводе логический ноль (~0,1В), на втором единица(~3,3В)

Перечитал документацию, нашел особенность, защиты тактирования.
Взял примеры с этого сайта и с других.
Не менее 6 разных вариантов.
CODE
/* От RC генератора работает

CLKSYS_Enable( OSC_RC32MEN_bm );
CLKSYS_Prescalers_Config( CLK_PSADIV_1_gc, CLK_PSBCDIV_1_2_gc );
do {} while ( CLKSYS_IsReady( OSC_RC32MRDY_bm ) == 0 );
CLKSYS_Main_ClockSource_Select( CLK_SCLKSEL_RC32M_gc );

*/

/*
// симулятор останавливается на третьем операторе - тактирования нет

CLKSYS_XOSC_Config( OSC_FRQRANGE_9TO12_gc, false, OSC_XOSCSEL_XTAL_16KCLK_gc );
CLKSYS_Enable( OSC_XOSCEN_bm );
while( CLKSYS_IsReady( OSC_XOSCRDY_bm ) == 0 );

CLKSYS_Main_ClockSource_Select( CLK_SCLKSEL_XOSC_gc );
*/


// симулятор останавливается на третьем операторе - тактирования нет
/*
OSC.XOSCCTRL = 0xCB; // выбор внешнего генератора с временем запуска 16 тыс. CLK и частотой 12-16 МГц
OSC.CTRL = 0x08; // разрешение работы внешнего генератора
while((OSC.STATUS & 0x08) == 0 ); // ожидание появления в регистре статуса бита включения синхронизации от внешнего генератора

OSC.PLLCTRL = 0xC3; // настройка блока PLL на синхронизацию от внешнего источника и 3-х кратоное умножение
OSC.CTRL = OSC.CTRL | 0x10; // разрешение работы блока PLL
while((OSC.STATUS & 0x10) == 0 ); // ожидание появления в регистре статуса бита включения блока PLL
CCP = 0xD8; // включение защиты от изменения регистров ввода-вывода на время изменения синхронизации
CLK.CTRL = 0x04; // настройка системной синхронизации от блока PLL
OSC.CTRL = OSC.CTRL & 0xFE; // отключение системной синхронизации от внутреннего RC-генератора частотой 2 МГц
*/

/*
// симулятор останавливается на четвертом операторе - тактирования нет
CCP = 0xD8;
OSC.XOSCCTRL = 0xCB;
OSC.PLLCTRL = 0xC3;
OSC.CTRL = 0x08;
while((OSC.STATUS & 0x08) == 0);
OSC.CTRL = OSC.CTRL | 0x10;
while((OSC.STATUS & 0x10) == 0 );
CLK.CTRL=0x04;
OSC.CTRL = OSC.CTRL & 0xFE;
*/

// симулятор останавливается на третьем операторе - тактирования нет
/*
OSC.XOSCCTRL=0xCB; // 16MHz, start time 16000 clk
OSC.CTRL= 0x08; // enable external clock
while((OSC.STATUS & 0x08) == 0 ); // ожидание появления в регистре статуса бита включения синхронизации от внешнего генератора
OSC.PLLCTRL = 0xC2; // настройка блока PLL на синхронизацию от внешнего источника и 2-х кратоное умножение
OSC.CTRL = OSC.CTRL | 0x10; // разрешение работы блока PLL
while((OSC.STATUS & 0x10) == 0 ); // ожидание появления в регистре статуса бита включения блока PLL
CCP=0xD8; // load protect IO
CLK.CTRL = 0x04; // настройка системной синхронизации от блока PLL
OSC.CTRL = OSC.CTRL & 0xFE; // отключение системной синхронизации от внутреннего RC-генератора частотой 2 МГц
*/

/*

// симулятор останавливается на третьем операторе - тактирования нет
OSC.XOSCCTRL =0x4b;
OSC.CTRL = 0x08;
while (!(OSC.STATUS &OSC_XOSCRDY_bm));
CCPWrite(&CLK.CTRL,0x03);
OSC.CTRL = 0x08;
*/

/*
// симулятор останавливается на третьем операторе - тактирования нет

CLKSYS_XOSC_Config( OSC_FRQRANGE_2TO9_gc, false, OSC_XOSCSEL_XTAL_16KCLK_gc );
CLKSYS_Enable( OSC_XOSCEN_bm );
do {} while ( CLKSYS_IsReady( OSC_FRQRANGE_9TO12_gc ) == 0 );
CLKSYS_Main_ClockSource_Select( CLK_SCLKSEL_XOSC_gc );
CLKSYS_Disable( OSC_RC2MEN_bm );
CLKSYS_PLL_Config ( OSC_PLLSRC_XOSC_gc, 4);
CLKSYS_Enable( OSC_PLLEN_bm );
CLKSYS_Prescalers_Config( CLK_PSADIV_1_gc, CLK_PSBCDIV_1_1_gc );
do {} while ( CLKSYS_IsReady( OSC_PLLRDY_bm ) == 0 );
CLKSYS_Main_ClockSource_Select( CLK_SCLKSEL_PLL_gc );
*/

Пробовал менять оптимизацию по скорости и размеру (IAR 6.10) толку никакого.
Наверное не там копаю.

Сообщение отредактировал IgorKossak - Aug 6 2013, 16:53
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 22:49
Рейтинг@Mail.ru


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