Управление PLL
Система фазовой автоподстройки частоты (PLL) - модуль устройства, преобразующий тактовый сигнал встроенного кварцевого резонатора в более высокую частоту (в устройствах Tibbo - в 8 раз выше базовой). Когда PLL включена, устройство работает на частоте, в восемь раз превышающей базовую; когда PLL выключена - на «родной» частоте кварца. Естественно, при включённой PLL устройство работает в восемь раз быстрее (и потребляет почти во столько же раз больше энергии).
PLL есть не во всех устройствах Tibbo - есть ли она в вашем, см. в документации на платформу (например, для EM1000 она здесь).
Если платформа поддерживает PLL, у неё есть свойство sys.currentpll (только чтение) и метод sys.newpll для управления PLL. Из-за особенностей работы PLL включать и выключать её во время выполнения прошивки процессором невозможно. PLL нужно время, чтобы «стабилизировать» выходную частоту, а допускать это при работающем процессоре небезопасно. Поэтому PLL переключается, когда процессор находится в состоянии сброса.
Чтобы изменить режим PLL, запросите новое состояние методом sys.newpll, а затем выполните программный сброс устройства методом sys.reboot. После перезагрузки устройство выходит из сброса с новым состоянием PLL (и уже стабилизированной частотой PLL).
Пример кода, гарантирующий, что ваше устройство работает с выключенной PLL:
sub on_sys_init
if sys.currentpll=YES then
sys.newpll(OFF)
sys.reboot
end if
end sub
Внешние сбросы - включение питания и сброс по выводу RST (кнопкой сброса) - устанавливают PLL в состояние по умолчанию (обычно ON). На некоторых устройствах есть аппаратная перемычка, определяющая состояние PLL после внешнего сброса.
Учтите, что режим PLL влияет и на другие объекты - например, на скорость (бод) последовательных портов (поэтому и существует свойство ser.div9600) и на частоту, генерируемую объектом beep..