Теперь рассмотрим более реалистичный случай, когда частота pclk равна 10 МГц. Тогда:
PREINT = int х (pclk/32768) - 1 = 304; PREFRAC = pclk - ((PREINT + 1) x 32768) = 5760.
В этом случае, на выходе предделителя в секунду будут 5760 периодов длительностью в 306 периода частоты pclk, а остальные периоды будут иметь длительность 305 периодов частоты pclk.
Подобным образом любое значение частоты pclk большее чем 65.536 кГц, и содержащее четное число импульсов в секунду (Гц), может быть преобразовано в установки предделителя, чтобы получить тактовую частоту 32.768 кГц для синхронизации модуля RTC. Единственная проблема заключается в том, что, если содержимое регистра PREFRAC ненулевое, то не все выходные «секундные» последовательности из 32768 импульсов будут иметь одинаковую длительность, равную одной секунде. Некоторые из них будут длиться на один период pclk больше, чем другие. Возникающая в результате этого обстоятельства флуктуация может создать некоторые сложности при применении модуля RTC в приложениях, которые используют непосредственное содержимое регистра СТС.
Блок-схема предделителя модуля RTC изображена на Рис. 18.2.
18.4.2. Операции предделителя RTC
Блок из состава предделителя RTC, обозначенный на схеме (Рис. 18.2) как «Комбинаторная логика», определяет, когда цикл счета на убывание 13-битного счетчика PREINT должен быть удлинен на один период pclk. Чтобы корректно устанавливать номера удлиненных циклов и распределять их равномерно среди остальных циклов, комбинаторная логика связывает каждый бит в PREFRAC с комбинацией в 15-битном счетчике дробной части. Эта связь поясняется Табл. 18.17.
Например, если в PREFRAC установлен бит 14 (представляющий долю 1/2), то половина циклов, подсчитанных 13-битным счетчиком целой части, будет удлинена комбинаторной логикой. Как видно из таблицы, всякий раз, когда значение LSB счетчика дробной части равно логической 1, комбинаторная логика производит удлинение цикла счета на один период pclk, равномерно при этом распределяя удлиненные циклы.
Если в PREFRAC установлен бит 13 (представляющий долю 1/4), то комбинаторная логика производит удлинение каждого четвертого цикла счета 13-битного счетчика целой части на один период pclk (всякий раз, когда значение двух младших битов счетчика дробной части равно 10Ь).
Таблица 18.17. Случаи, при которых удлиняется цикл счета счетчика целой части предделителя
Состояние счетчика дробной части |
Биты PREFRAC |
||||||||||||||
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
б |
5 |
4 |
3 |
2 |
1 |
0 |
|
XXX ХХХХ ХХХХ XXX1 |
1 |
||||||||||||||
XXX ХХХХ ХХХХ XX10 |
- |
1 |
|||||||||||||
XXX ХХХХ хххх хЮО |
1 |
||||||||||||||
ххх хххх хххх 1000 |
1 |
||||||||||||||
ххх хххх ххх1 0000 |
1 |
||||||||||||||
ххх хххх хх10 0000 |
1 |
||||||||||||||
ххх хххх хЮО 0000 |
1 |
||||||||||||||
ххх хххх 1000 0000 |
1 |
||||||||||||||
ххх xxxl 0000 0000 |
1 |
||||||||||||||
ххх ххЮ 0000 0000 |
1 |
||||||||||||||
ххх хЮО 0000 0000 |
1 |
||||||||||||||
ххх 1000 0000 0000 |
1 |
||||||||||||||
xxl 0000 0000 0000 |
1 |
||||||||||||||
хЮ 0000 0000 0000 |
1 |
- |
|||||||||||||
100 0000 0000 0000 |
1 |
ГЛАВА 1 9
НА ГЛАВНУЮ | | ЧТО ТАКОЕ PIC ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |