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

 
 
> Автоподстройка RC-генератора от часового кварца
_Артём_
сообщение Aug 29 2011, 15:22
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Добрый день.

Пытаюсь использовать часовой кварц подключённый к ногам Xmeg-и.
Используется внутренний 2 MHz RC генератор.
DFLL включается/отключается по 1/0 на входе PF0.
На выход PE3 выводится шим частотой 125 кГц.

CODE
#include "avr_compiler.h"
#include "clksys_driver.h"
#include "pmic_driver.h"
#include "TC_driver.h"
#include "rtc_driver.h"
#include <ioavr.h>
#include <inavr.h>

int main() {
CLKSYS_XOSC_Config(OSC_FRQRANGE_2TO9_gc, false, OSC_XOSCSEL_32KHz_gc);
// настройка выхода PE3 и таймера на вывод шим: 125 кГц
//Enable output on PE3.
PORTE.DIR = 0x08;
//Set the TC period.
TC_SetPeriod(&TCE0, 0x0F);
//Configure the TC for single slope mode.
TC0_ConfigWGM(&TCE0, TC_WGMODE_SS_gc);
//Enable Compare channel A.
TC0_EnableCCChannels(&TCE0, TC0_CCDEN_bm);
//Start timer by selecting a clock source.
TC0_ConfigClockSource(&TCE0, TC_CLKSEL_DIV1_gc);
//Output new compare value.
TC_SetCompareD(&TCE0, 8);

// настройка RTC от часового кварца
volatile uint8_t * p;
p = &CLK.RTCCTRL;
*p = CLK_RTCSRC_TOSC32_gc | CLK_RTCEN_bm;
// RTC var 0
//Configure RTC period to 1 second.
//CLKSYS_RTC_ClockSource_Enable(CLK_RTCSRC_TOSC32_gc);
RTC_Initialize(1023, 0x0000, 0x0000, RTC_PRESCALER_DIV1_gc);
RTC_Initialize(RTC_CYCLES_1S - 1, 0x0000, 0x0000, RTC_PRESCALER_DIV1_gc);
RTC_SetIntLevels(RTC_OVFINTLVL_MED_gc, RTC_COMPINTLVL_OFF_gc);
PMIC.CTRL |= PMIC_MEDLVLEN_bm;
sei();

}

unsigned char CorrentEnableState=0;
#pragma vector = RTC_OVF_vect
__interrupt void RTCOverflowISR()
{
if (CorrentEnableState) {
if ((PORTF.IN&1)==0) {// выключение коррекции по 0 на входе PF0
CorrentEnableState=0;
CLKSYS_AutoCalibration_Disable(DFLLRC2M);
}
}
else {
if (PORTF.IN&1) {// включение коррекции по 1 на входе PF0
CorrentEnableState=1;
CLKSYS_AutoCalibration_Enable(OSC_RC2MCREF_bm, true);
}
}
}


подача 0/1 не влияет на выходную частоту шима (получалась 126,2 кГц), т.е. подстройка не работает. В чём может быть дело?
Спасибо.

Сообщение отредактировал IgorKossak - Aug 29 2011, 19:30
Причина редактирования: [codebox]
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 7)
bob1
сообщение Aug 30 2011, 13:15
Сообщение #2


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

Группа: Свой
Сообщений: 82
Регистрация: 17-09-06
Пользователь №: 20 471



Добрый. В ошибках некоторых хмег: Чтобы выполнялась автоматическая калибровка внутреннего генератора частоты 2МГц или 32МГц, необходимо включить в работу оба этих генератора и обе схемы ФАПЧ.
Попробуйте включить второй генератор и схему Фапч....
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Aug 30 2011, 14:32
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(bob1 @ Aug 30 2011, 16:15) *
Добрый. В ошибках некоторых хмег: Чтобы выполнялась автоматическая калибровка внутреннего генератора частоты 2МГц или 32МГц, необходимо включить в работу оба этих генератора и обе схемы ФАПЧ.
Попробуйте включить второй генератор и схему Фапч....


Спасибо. попробую включить оба.
Не подскажете, как выбрать в качестве опоры блока DFLL часовой кварц?
Go to the top of the page
 
+Quote Post
bob1
сообщение Aug 30 2011, 15:12
Сообщение #4


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

Группа: Свой
Сообщений: 82
Регистрация: 17-09-06
Пользователь №: 20 471



Цитата(_Артём_ @ Aug 30 2011, 20:32) *
Не подскажете, как выбрать в качестве опоры блока DFLL часовой кварц?

OSC.DFLLCTRL=OSC_RC32MCREF_bm|OSC_RC2MCREF_bm.

Go to the top of the page
 
+Quote Post
_Артём_
сообщение Aug 30 2011, 15:20
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(bob1 @ Aug 30 2011, 18:12) *
OSC.DFLLCTRL=OSC_RC32MCREF_bm|OSC_RC2MCREF_bm.

Спасибо ещё раз, совсем атмел запутал своими глюками.
Go to the top of the page
 
+Quote Post
zombi
сообщение Sep 1 2011, 17:42
Сообщение #6


Гуру
******

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



Сорри что вклиниваюсь, просто не хочу плодить темы.
У меня вопрос насколько точен и стабилен у ATxмег "32 kHz Ultra Low Power Internal Oscillator" ?
Go to the top of the page
 
+Quote Post
Юрий_СВ
сообщение Sep 2 2011, 12:35
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 73
Регистрация: 4-05-08
Пользователь №: 37 272



Цитата(zombi @ Sep 1 2011, 20:42) *
Сорри что вклиниваюсь, просто не хочу плодить темы.
У меня вопрос насколько точен и стабилен у ATxмег "32 kHz Ultra Low Power Internal Oscillator" ?


Цитата
The Ultra Low-power 32 kHz internal RC oscillator (ULP32K) is mainly used for
system purposes, such as startup delays, the Watchdog Timer and various internal
timings. It can be used for the Real-time Clock module, but is not available as a
system clock source. With a frequency accuracy of 30%, it is not intended as such
either.
Go to the top of the page
 
+Quote Post
zombi
сообщение Sep 2 2011, 17:27
Сообщение #8


Гуру
******

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



Цитата
frequency accuracy of 30%

Т.е. для нормальных часов врядли сгодится crying.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 28th June 2025 - 13:17
Рейтинг@Mail.ru


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