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

 
 
> Автоподстройка 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
Ответов
zombi
сообщение Sep 1 2011, 17:42
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 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



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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 15:24
Рейтинг@Mail.ru


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