Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/48: Рейтинг темы: голосов - 48, средняя оценка - 4.67
BuTbKo
0 / 0 / 0
Регистрация: 15.11.2010
Сообщений: 148
1

XMEGA и 32Mhz

02.03.2011, 05:01. Просмотров 8893. Ответов 5
Метки нет (Все метки)

Что-то не получается запустить XMEGA на 32Mhz
Подскажите где ошибка:
Код
void InitOSC (void){

OSC.CTRL = OSC_RC32MEN_bm; // Разрешаем использовать 32Мгц резонатор
while ((OSC.STATUS&OSC_RC32MRDY_bm) != OSC_RC32MRDY_bm); //Ждем пока резонатор не будет готов

CPU_CCP = 0xD8; // Снимаем режим защиты
CLK.CTRL = CLK_SCLKSEL_RC32M_gc; //Используем 32МГц резонатор для системной синхронизации

OSC.DFLLCTRL = 0x02; // Определяем источник калибровки как внешний часовой кварц
DFLLRC32M.CTRL = 0x01; //Включаем автоподстройку

}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2011, 05:01
Ответы с готовыми решениями:

XMega
Всем привет. Собрался было переходить на ARM после AVR... И тут вспомнил про XMiko, почитал и понял...

Прерывания xmega
У меня есть atxmego32a4, хочу понять как там пользоваться таймерами. Для Xmeg почти нигде никакой...

Xmega грабли
Так понимаю, мало кто в форуме xmega занимается, но вдруг кому полезно будет. Они, конечно, описаны...

SPI Xmega
Есть учебное задание соединить 2 МК Xmega 182A1 Возникла проблема, с ведомым. Ну как проблема,...

XMEGA VPORT
Здравствуйте. Возможно немного туповатый вопрос. Но никак не могу разобраться, в настройке...

5
BuTbKo
0 / 0 / 0
Регистрация: 15.11.2010
Сообщений: 148
02.03.2011, 05:49 2
Разобрался, AVR Studyo 5 по умолчанию не делает оптимизацию кода, в итоге строчка
Код
CPU_CCP = 0xD8; // Снимаем режим защиты
длилась 5 тактов, и включалась обратно защита от изменений регистра, до того как успевал поменять его значение.

Вот такие грабли :-)
0
SpySorp
0 / 0 / 0
Регистрация: 25.01.2010
Сообщений: 38
03.03.2011, 11:35 3
А я пользуюсь стандартным драйвером для настройки тактовой от Atmel/
http://narod.ru/disk/6784051001/dryvers.zip.html
подключаем хидер в свой проект и всё готово.
Вот например настройка на 32МГц от внутренней RC цепочки:
Код
void ConfigRC_32MHzClock(void)
{
CLKSYS_Enable( OSC_RC32MEN_bm );
CLKSYS_Pressotirs_Config( CLK_PSADIV_1_gc, CLK_PSBCDIV_1_1_gc );
do {} while ( CLKSYS_IsReady( OSC_RC32MRDY_bm ) == 0 );
CLKSYS_Main_ClockSource_Select( CLK_SCLKSEL_RC32M_gc );
}
И код для внешнего кварца на 16МГц и умножением частоты на 2:
Код
void ConfigXO_32MHzClock(void)
{
CLKSYS_XOSC_Config( OSC_FRQRANGE_12TO16_gc,false,OSC_XOSCSEL_XTAL_16KCLK_gc );
CLKSYS_Enable( OSC_XOSCEN_bm );
do {} while ( CLKSYS_IsReady( OSC_XOSCRDY_bm ) == 0 );
CLKSYS_PLL_Config( OSC_PLLSRC_XOSC_gc, 2 );
CLKSYS_Enable( OSC_PLLEN_bm );
do {} while ( CLKSYS_IsReady( OSC_PLLRDY_bm ) == 0 );
CLKSYS_Main_ClockSource_Select( CLK_SCLKSEL_PLL_gc );
CLKSYS_Dysable( OSC_RC2MEN_bm );
}
0
zumomoh
0 / 0 / 0
Регистрация: 27.06.2011
Сообщений: 2
30.06.2011, 11:36 4
Вообще в Хmega по сравнению с Atmega выбор источника тактирования задается не фьюзами, что с одной стороны удобно что случайно не запоришь процессор, а с другой стороны увеличивает время запуска процессора на примерно 6мс, что не всегда желательно. [url http://mpcontrol.ru/index.php?option=co ... &Itemid=36]Нормальная статья по выбору внешнего источника тактирования на Xmega[/url]. Странно не получается работать на частоте выше 48 МГц (при синхронизации от внешнего кварца 16МГц и умножении на 3). У кого нибудь получилось выше частоту дать?
0
zumomoh
0 / 0 / 0
Регистрация: 27.06.2011
Сообщений: 2
30.06.2011, 11:42 5
Цитата Сообщение от SpySorp
А я пользуюсь стандартным драйвером для настройки тактовой от Atmel/
http://narod.ru/disk/6784051001/dryvers.zip.html
подключаем хидер в свой проект и всё готово.
Вот например настройка на 32МГц от внутренней RC цепочки:
Код:
void ConfigRC_32MHzClock(void)
{
CLKSYS_Enable( OSC_RC32MEN_bm );
CLKSYS_Pressotirs_Config( CLK_PSADIV_1_gc, CLK_PSBCDIV_1_1_gc );
do {} while ( CLKSYS_IsReady( OSC_RC32MRDY_bm ) == 0 );
CLKSYS_Main_ClockSource_Select( CLK_SCLKSEL_RC32M_gc );
}
И код для внешнего кварца на 16МГц и умножением частоты на 2:
Код
void ConfigXO_32MHzClock(void)
{
CLKSYS_XOSC_Config( OSC_FRQRANGE_12TO16_gc,false,OSC_XOSCSEL_XTAL_16KCLK_gc );
CLKSYS_Enable( OSC_XOSCEN_bm );
do {} while ( CLKSYS_IsReady( OSC_XOSCRDY_bm ) == 0 );
CLKSYS_PLL_Config( OSC_PLLSRC_XOSC_gc, 2 );
CLKSYS_Enable( OSC_PLLEN_bm );
do {} while ( CLKSYS_IsReady( OSC_PLLRDY_bm ) == 0 );
CLKSYS_Main_ClockSource_Select( CLK_SCLKSEL_PLL_gc );
CLKSYS_Dysable( OSC_RC2MEN_bm );
}
Вообще в Хmega по сравнению с Atmega выбор источника тактирования задается не фьюзами, что с одной стороны удобно что случайно не запоришь процессор, а с другой стороны увеличивает время запуска процессора на примерно 6мс, что не всегда желательно. [url http://mpcontrol.ru/index.php?option=co ... &Itemid=36]Нормальная статья по выбору внешнего источника тактирования на Xmega[/url]. У меня не получилось работать на Хmega с частотой выше 48 МГц (при внешнем кварце 16 МГц с умножением на 3). У кого нибудь вышло?
0
miurofumk
0 / 0 / 0
Регистрация: 17.05.2012
Сообщений: 11
21.05.2012, 13:53 6
Вот работающий код на ASM (в прошлый раз все не правильно было):

Код
   ;32Мгц от внутреннего генератора
LDI r16,OSC_RC32MEN_bm
store OSC_CTRL,r16            ; инициализация генератора
chek:                         ; проверка готовности
tood r16,OSC_STATUS           ; загружаем в регистр значение OSC_STATUS
SBRS r16,1                    ; если бит 1 будет установлен, то идем дальше
rjmp chek                     ; если нет, то опять проверяем
LDI r16,0xD8                  ; отключаем
store CPU_CCP,r16             ; защиту
LDI r16,CLK_SCLKSEL_RC32M_gc  ; выбираем источник
store CLK_CTRL,r16            ; тактового сигнала от RC32MEN
всё работает при условии, что вы добавите макросы в проект от atmel: в гугле AVR001.zip
0
21.05.2012, 13:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2012, 13:53

UART в Xmega
Здравствуйте) Набросал не большой код: UART настраивал на скорость в 9600 , 8 бит данных, 1 стоп...

xmega AES криптоускоритель
Привет! Помогите найти пример кода реализации AES для xmega.

lcd для xmega
Скажите какой подойдет lcd из серии WH1602A для xmega128a1 ? Без использования преобразователя...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru