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

 
 
> Atxmega Внешний кварц
KIG
сообщение May 28 2011, 07:55
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 25-12-06
Пользователь №: 23 884



Добрый день!

Начал изучать Atxmega192A. Программирую в AVR Studio 4.18. Как я понял, необходимо в программе сначала определить какой будет использоваться кварц (у меня внешний). Для этого написал следующую функцию:

Код
void CLK_init()
{
CCP=0xD8;
CLK.CTRL=3;
CCP=0xD8;
OSC.XOSCCTRL=0x40;
CCP=0xD8;
OSC.CTRL=(1<<3);
}


Оптимизация кода включена O1. При отладке кода в AVR Studio вижу, что в ССP регистр записывается 1 вместо D8. СLK.CTRL вообще не обновляется. А при записи регистра OSC.CTRL в нем остается изначально установленный нулевой байт, разрешающий работу внутреного кварца. Подскажите, пожалуйста, что я делаю не так.

Сообщение отредактировал KIG - May 28 2011, 08:15
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
uzig
сообщение Aug 1 2011, 17:39
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 31-07-06
Из: Мытищи
Пользователь №: 19 220



Не проходит у меня снятие защиты в CCP:
Код
  CCP = 0xD8;        
  CLK.CTRL = 0x04;


в IOView видно что CLK.CTRL весь в нулях.

Скопипастил у rubic (спасибо ему ) его пример с замысловатым CCPWrite:
Код
void CCPWrite( volatile uint8_t * address, uint8_t value )
{
  volatile uint8_t * tmpAddr = address;
  asm volatile(
        "movw r30,  %0"          "\n\t"
        "ldi  r16,  %2"          "\n\t"
        "out   %3, r16"          "\n\t"
        "st     Z,  %1"       "\n\t"
        :
        : "r" (tmpAddr), "r" (value), "M" (CCP_IOREG_gc), "i" (&CCP)
        : "r16", "r30", "r31"
        );
}


и сразу же все заработало.

Неужели без ассемблерных вставок код не успевает за 4 цикла прописать CLK.CTRL ?
Компилячу в AVR Studio 5 его gcc.




Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- KIG   Atxmega Внешний кварц   May 28 2011, 07:55
- - V_G   Сначала надо разрешить кварцевый генератор, потом ...   May 28 2011, 12:26
- - asm_lock   Использовал ATxmega128A1....Подцепил внешний кваре...   Jun 22 2011, 09:42
- - Fusion   ATxmega32A4 с отключенной перефирией, внутренний г...   Jun 22 2011, 16:29
- - asm_lock   у меня тоже периферия отключена. Подключен внешний...   Jun 22 2011, 18:29
- - rubic   вот так я запускал кварц 7.372800 Код#include ...   Jun 24 2011, 19:56
- - Юрий_СВ   Кварц 4МГц + умножитель на 8 : (у меня работает бе...   Jun 25 2011, 11:38
|- - zumanah   Цитата(Юрий_СВ @ Jun 25 2011, 15:38) . В...   Jul 1 2011, 05:49
|- - Pavel_Bor   Возможно ли на xmege запустить 2 кварца? например ...   Jul 1 2011, 09:48
- - V_G   Там нет внутреннего кварца. А источники тактирован...   Jul 1 2011, 10:35
|- - Pavel_Bor   Цитата(V_G @ Jul 1 2011, 13:35) Там нет в...   Jul 1 2011, 10:45
- - ArtemKAD   Цитатаа internal(RC) это разве не внутренний? Внут...   Jul 1 2011, 11:26
- - zumanah   Цитата(Pavel_Bor @ Jul 1 2011, 14:45) а i...   Jul 3 2011, 08:11
- - V_G   Точность внутренних генераторов в xmege существенн...   Jul 3 2011, 11:10
|- - Юрий_СВ   Цитата(uzig @ Aug 1 2011, 20:39) Не прохо...   Aug 1 2011, 18:07
- - uzig   Юрий_СВ не проходит Ваш вариант   Aug 1 2011, 18:18
|- - Leonmezon   Вот мой код: Код// Функция установки тактирования ...   Aug 1 2011, 18:21
|- - uzig   Цитата(Leonmezon @ Aug 1 2011, 22:21) а б...   Aug 1 2011, 18:33
|- - Leonmezon   Цитата(uzig @ Aug 1 2011, 22:33) Но выше ...   Aug 1 2011, 18:54
- - GarikBaza   IAR 5.51.0, без оптимизации, все работает. Внешний...   Aug 1 2011, 21:08
|- - Leonmezon   Тогда надо смотреть что из себя представляет функц...   Aug 2 2011, 04:34
- - GarikBaza   CODE/*! \brief This function selects the ...   Aug 2 2011, 11:06


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

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 22:26
Рейтинг@Mail.ru


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