Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LPC1768 и RTC
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
igork80
Помогите разобраться. При замене на плате процессора LPC2368 на pin-to-pin LPC1768 не удается запустить RTC.
Проявляется следующий эффект:
При выключенном питании часы идут (во время начаньной инициализации считываются показания и они увеличиваются на время отключения питания)
Далее показания часов не изменяется до выключения питания.
В PCONP питание RTC включено.
Инициализация часов эффекта не производит.
На команду LPC_RTC -> CCR |= 0x1; не реагирует

GetSmart
Вообще-то регистры RTC немного изменились. Библиотеку надо корректировать относительно 2368.
igork80
Проблема в том, что нет никакого эффекта в инициализации.
Просто при включении питания часы стоят!

NVIC_DisableIRQ(RTC_IRQn);
LPC_RTC -> CCR = 0x0; //Clear the clock control register
LPC_RTC -> CIIR = 0x00000001;
LPC_RTC -> ALSEC = 0x00000005;
LPC_RTC -> AMR = 0x000000FE;
LPC_RTC -> CCR |= 0x1; //Start the RTC
NVIC_SetPriority(RTC_IRQn,15);
NVIC_EnableIRQ(RTC_IRQn);
GetSmart
Дело может быть в регистре CALIBRATION.
Когда LPC_RTC -> CCR равен 0x01, то включена коррекция. Возможно CALIBRATION равен 0.
Нужно в конце инициализации присваивать LPC_RTC -> CCR = 0x11;

Ещё дело может быть в некорректных значениях некоторых регистров. Их нужно проверять и исправлять во время инициализации.
Mmatsnev
Почитайте Errata на данный кристалл.
RTC в LPC17xx по сути не работает! Исправить обещают в середине этого года!
igork80
LPC_RTC -> CCR = 0x11; не помогло
в регистре LPC_RTC -> RTC_AUX бит RTC_OSCF установлен в 1
При записи в этот бит 1, он кратковременно сбрасывается, затем устанавливается повторно.
Возможно дело в кварце... Как можно это проверить? На LPC2368 все работало.
prgjz
Работает на LPC1769 и LPC2387:
void rtc_init( void )
{
/// Enable power for RTC
PCONP_bit.PCRTC = 1;
// CTC reset and select RTC clock from 32 Khz.oscillator
#if __CORE__ < 7
if(LPC_RTC->CCR != 0x11)
LPC_RTC->CCR = 0x12;

#else
// If RTC is stopped, clear STOP bit.
if ( LPC_RTC->RTC_AUX & (0x1<<4) )
{
LPC_RTC->RTC_AUX |= (0x1<<4);
LPC_RTC->CCR = 0x12;
}
#endif
// Clear RTC interrupt register
LPC_RTC->ILR = 0xFF;
// Dasable all the alrams.
LPC_RTC->AMR = 0xFF;
// Enable only second count interrupt.
LPC_RTC->CIIR = 0x01;
// Disable all subsecond interrupts.
#if __CORE__ < 7
// Enable RTC
LPC_RTC->CCR = 0x11;
#else
LPC_RTC->CALIBRATION = 0;
LPC_RTC->CCR = 0x11;
#endif
rtc_read(0);
}
igork80
Дело было в кварце!
Заменили на другой и все заработало.
rezident
Цитата(igork80 @ Feb 28 2011, 18:17) *
Дело было в кварце!
Заменили на другой и все заработало.

Только что устранил проблему с RTC на LPC1765 аналогичным образом. Заменил кварц на другой такой же. Кварц KX-327NHT фирмы Geyer. Причем на выходе генератора что-то похожее на генерацию было, но модуль RTC не работал - часы не шли. Замена на LPC1768 ничего не дала, только замена кварца решила проблему. На второй плате RTC с точно таким же кварцем (из одной упаковки) заработал сразу.
Mmatsnev
Граждане! Аккуратно прочитайте Errata!
Дело в том, что в кристалле есть ошибка! Сейчас при текущем кварце и в текущих условиях часы будут работать, но НЕТ никакой гарантии, что при другой температуре или с другим кварцем это все "заведется".
igork80
Цитата(Mmatsnev @ Feb 28 2011, 16:57) *
Граждане! Аккуратно прочитайте Errata!
Дело в том, что в кристалле есть ошибка! Сейчас при текущем кварце и в текущих условиях часы будут работать, но НЕТ никакой гарантии, что при другой температуре или с другим кварцем это все "заведется".

Класс!
Axel
Цитата(igork80 @ Feb 28 2011, 18:52) *
Класс!


NXP из-за этого "класса" задерживают старшие версии этой серии. Но к июлю обещают все залатать...
pofikus
Цитата(Axel @ Feb 28 2011, 19:29) *
NXP из-за этого "класса" задерживают старшие версии этой серии. Но к июлю обещают все залатать...

а LPC1768 тоже обещали починить?
VslavX
Цитата(Mmatsnev @ Feb 28 2011, 15:57) *
Граждане! Аккуратно прочитайте Errata!
Дело в том, что в кристалле есть ошибка! Сейчас при текущем кварце и в текущих условиях часы будут работать, но НЕТ никакой гарантии, что при другой температуре или с другим кварцем это все "заведется".

В Errata написано что не работает в температурном диапазоне -40..+85. И все. А домыслить уже можно по-разному, мне деваться было некуда - поэтому домыслил в таком ключе что в коммерческом диапазоне оно таки работает sm.gif.
Дело в том, что в 17xxx очень экономичный и "низкоамплитудный" генератор. Конденсаторы на "часовой кварц" надо ставить обязательно. Емкость желательно побольше - от 33пФ, тогда (по моему опыту) генератор запускается достаточно стабильно даже на кварцах с высоким последовательным сопротивлением.
rezident
Цитата(VslavX @ Mar 2 2011, 10:32) *
Конденсаторы на "часовой кварц" надо ставить обязательно. Емкость желательно побольше - от 33пФ, тогда (по моему опыту) генератор запускается достаточно стабильно даже на кварцах с высоким последовательным сопротивлением.
А какая при этом получается погрешность частоты? Конденсаторы ведь не "от балды" ставятся, они выбираются в дополнение к емкостям выводов, монтажа, кварцедержателя так, чтобы суммарная емкость соответствовала нагрузочной емкости кварца (CL). Типовые значения CL для большинства часовых кварцев 12,5пФ и 6пФ. Я ставил 24пФ, но долговременной проверки точности хода RTC в LPC1768 и LPC1765 пока не проводил. У вас есть какой-то результат при использовании емкостей 33пФ?
VslavX
Цитата(rezident @ Mar 3 2011, 02:37) *
А какая при этом получается погрешность частоты? Конденсаторы ведь не "от балды" ставятся

У меня на LPC1768 была первая партия плат 10 штук, на всех генераторы стояли. Замена 22 пФ на 33 пФ помогла всем 10. Тут уже вопрос шел не о точности, а вообще о функционировании. Специально долговременно точность не проверял - так, вывел на CLKOUT, ткнул осциллографом и включил на нем измерение частоты. ЕМНИП, результаты не вышли за +/- 2мин/месяц. Надо будет тест повторить, кстати - делалось-то на 22пФ.
esaulenka
Цитата(Mmatsnev @ Feb 28 2011, 14:40) *
Почитайте Errata на данный кристалл.
RTC в LPC17xx по сути не работает! Исправить обещают в середине этого года!


Надеюсь, этот ответ можно публиковать...

Фраза
The RTC does not work reliably within the temperature specification
Означает, что RTC в первых ревизиях уходят более чем на 1с. за сутки на краях рабочих температур. Т.е. не обеспечивают заявленную стабильность хода часов при низких отрицательных и повышенных положительных температурах.
В настоящее время тестируется следующая ревизия кристаллов свободных от этого недостатка.
С уважением,
Рогозин Владимир
Инженер технической поддержки.
MT-SYSTEM

Апдейт:
http://forums.nxp.com/viewtopic.php?p=12794#12794
Надюсь, врут...


Цитата(VslavX @ Mar 2 2011, 08:32) *
Конденсаторы на "часовой кварц" надо ставить обязательно. Емкость желательно побольше - от 33пФ, тогда (по моему опыту) генератор запускается достаточно стабильно даже на кварцах с высоким последовательным сопротивлением.

Где бы что бы почитать? Всегда ставил в соответствии с Load Capacitance из даташита на соотв. кварц, и не заморачивался. Какие грабли ожидаются при превышении этого значения?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.