Espruino:Справочник по API/Класс E/setRTCPrescaler()

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Функция E.setRTCPrescaler()[1]

Синтаксис

E.setRTCPrescaler(prescaler)

Параметры

  • prescaler – количество тактов RTC-часов в секунду. Это 15-битное целое число (0-32767)

Возвращаемое значение

Описание

Задает максимальное значение для предварительного делителя частоты RTC-часов. Это счетчик, который отсчитывает такты низкоскоростного генератора. Когда делитель отсчитает значение, заданное в аргументе prescaler, это будет означать, что прошла секунда.

По умолчанию здесь задается средняя частота генератора, указанная в даташите, и обычно это нормально. Но на ранних Espruino Pico частота внутреннего генератора STM32F4 может отклоняться на 15% от значения в даташите. Впрочем, это значение можно подкорректировать, чтобы оно отражало реальную частоту RTC, а операции со временем, соответственно, стали более точными.

Чтобы поменять значение предварительного делителя частоты RTC на значение, рассчитанное на основе частоты высокоскоростного генератора, просто запустите команду ниже, но обязательно в пределах нескольких секунд после запуска платы:

E.setRTCPrescaler(E.getRTCPrescaler(true))

После изменения значения делителя RTC все счетчики, зависящие от RTC, будут сброшены. Пройдет секунда или две прежде, чем данные, возвращаемые getTime(), вновь стабилизируются.

Чтобы протестировать, все ли настроено правильно, вы можете задать входному контакту квадратную волну с известной частотой, а затем воспользоваться setWatch(). Если у вас нет под рукой частотного генератора, можно свериться с высокоскоростным генератором:

// подключите контакт B3 к B4
analogWrite(B3, 0.5, {freq:0.5});
setWatch(function(e) {
  print(e.time - e.lastTime);
}, B4, {repeat:true});

Примечание: Эта функция используется только на официальных платах Espruino, оснащенных микроконтроллером STM32. Другие платы (даже с STM32) не используют RTC, и поэтому на них эта функция никакого эффекта иметь не будет.

Примечание: Эта функция доступна только на платах Espruino Pico, Espruino WiFi и Espruino Original.

См.также

Внешние ссылки