Espruino:Справочник по API/Класс E/setRTCPrescaler(): различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
(Новая страница: «{{Espruino/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} =<ref>[ www.espruino.com - ]</ref>= ==Синтакс...»)
 
Нет описания правки
Строка 3: Строка 3:
{{Myagkij-редактор}}
{{Myagkij-редактор}}


=<ref>[ www.espruino.com - ]</ref>=
=Функция E.setRTCPrescaler()<ref>[https://www.espruino.com/Reference#t_l_E_setRTCPrescaler www.espruino.com - E.setRTCPrescaler]</ref>=


==Синтаксис==
==Синтаксис==


<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript" enclose="div">
 
E.setRTCPrescaler(prescaler)
</syntaxhighlight>
</syntaxhighlight>


==Параметры==
==Параметры==


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


==Возвращаемое значение==
==Возвращаемое значение==
Строка 21: Строка 21:
==Описание==
==Описание==


Задает максимальное значение для предварительного делителя частоты [[RTC-часов]]. Это счетчик, который отсчитывает такты низкоскоростного генератора. Когда делитель отсчитает значение, заданное в аргументе prescaler, это будет означать, что прошла секунда.
По умолчанию здесь задается средняя частота генератора, указанная в даташите, и обычно это нормально. Но на ранних Espruino Pico частота внутреннего генератора [[STM32F4]] может отклоняться на ''15%'' от значения в [[даташит]]е. Впрочем, это значение можно подкорректировать, чтобы оно отражало реальную частоту [[RTC]], а операции со временем, соответственно, стали более точными.
Чтобы поменять значение предварительного делителя частоты [[RTC]] на значение, рассчитанное на основе частоты высокоскоростного генератора, просто запустите команду ниже, но обязательно в пределах нескольких секунд после запуска платы:
<syntaxhighlight lang="javascript" enclose="div">
E.setRTCPrescaler(E.getRTCPrescaler(true))
</syntaxhighlight>
После изменения значения делителя [[RTC]] все счетчики, зависящие от [[RTC]], будут сброшены. Пройдет секунда или две прежде, чем данные, возвращаемые getTime(), вновь стабилизируются.
Чтобы протестировать, все ли настроено правильно, вы можете задать входному контакту квадратную волну с известной частотой, а затем воспользоваться [https://www.espruino.com/Reference#l__global_setWatch setWatch()]. Если у вас нет под рукой частотного генератора, можно свериться с высокоскоростным генератором:
<syntaxhighlight lang="javascript" enclose="div">
// подключите контакт B3 к B4
analogWrite(B3, 0.5, {freq:0.5});
setWatch(function(e) {
  print(e.time - e.lastTime);
}, B4, {repeat:true});
</syntaxhighlight>
'''Примечание:''' Эта функция используется только на официальных платах [[Espruino]], оснащенных микроконтроллером [[STM32]]. Другие платы (даже с [[STM32]]) не используют [[RTC]], и поэтому на них эта функция никакого эффекта иметь не будет.


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


=См.также=
=См.также=

Версия от 19:32, 6 декабря 2020

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Функция 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.

См.также

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