Современная электроника №2/2022

ИНЖЕНЕРНЫЕ РЕШЕНИЯ 33 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 2 2022 дём битовую переменную, например, EC, которую приравняем порту P2.5 (в программе это выглядит так: EC = P2^5). Обозначим содержимое PCA- таймера как [PCA] и введём двухбайтную переменную N, которая будет опреде- лять количество импульсов, поступив- ших с Т4 на CLU3. Для расчёта N мож- но применить следующуюформулу: N= = 2 × [PCA]+EC. В этом случае при посту- плении чётного количества импульсов (например, 20) содержимое PCA будет равно 10 ([PCA] = 10), EC = 0, иN= 2 × 10+0= = 20. При поступлении 21 импульса [PCA] = 10, EC = 1, и N = 2 × 10+1 = 21, что и требуется. Вот таким способом и была снята вышеописанная неопределён- ность. Хотя вышеописанные рассужде- ния больше относятся к программным средствам, о которых речь впереди, на взгляд автора, для полного понимания здесь нелишне их привести. Если содержимое PCA-таймера стро- го равно количеству импульсов, посту- пивших на его вход ECI, поскольку начальное содержимое PCA-таймера нулевое и он просто работает в режи- ме счёта поступающих импульсов, то содержимое Т3 и Т4 отнюдь не равно количеству пришедших на их входы импульсов. Дело в том, что, помимо счё- та импульсов, Т3 и Т4 должны ещё обе- спечивать деление входной частотына определённый коэффициент деления. В частности, Т3 должен делить вход- ную частоту в 60 000 раз, чтобы выход- ная частота соответствовала 100 Гц (6 МГц = 6 000 000 Гц/60 000 = 100 Гц), а Т4 – в 5 раз (100 Гц/5 = 20 Гц). Для это- го они работают в режиме автопереза- грузки. Это означает, что, когда содер- жимое таймера равно максимальному значению (0xFFFF 16 = 6 553 5 10 ), с при- ходом следующего импульса (65 536-го) таймер переполнится, и в его содер- жимое из регистров перезагрузки перепишется число, равное разни- це между максимальным значением 65 536 и числом, равным коэффици- енту деления. Для Т3 это число равно 65 536 – 60 000 = 5536 (0x15A0), а для Т4 число перезагрузки равно 65 536 – 5= = 65 531 (0xFFFB). В этом случае, когда в Т3 придет 60 000 импульсов, а в Т4 – 5 импульсов, таймеры переполнятся, и произойдёт автоматическая загрузка чисел 5536 и 65 531 в Т3 и Т4 соответ- ственно. Поэтому для того, чтобы узнать количество импульсов, пришедших в таймеры (NT3 иNT4), необходимо из их содержимого вычесть число перезагруз- ки. Для Т3 NT3 = [T3]–5536, а для T4 NT4 = = [T4] – 65 531, где [T3] и [T4] – содержи- мое таймеров Т3 и Т4 соответственно. Для того чтобы определить время счё- та каждого таймера, необходимо коли- чество импульсов, пришедших в каждый таймер, умножить на период T следо- вания импульсов или, что то же самое, разделить на входнуючастоту F (так как Т = 1/F). Для Т3 время ТТ3[с] = NT3/FT3 = NT3/6000000Гц,дляТ4ТТ4[с]=NT4/FT4= = NT4/100 Гц, для PCA-таймера ТPCA[с] = = NPCA/FPCA = NPCA/20 Гц. Полное вре- мя Т будет равно сумме времён каждого из таймеров: T = ТТ3+ТТ4 +ТPCA. Но это ещё не всё. Дело в том, что вышеописан- ные рассуждения базировались на том основании, что частота внешнего так- тового генератора строго равна 72МГц. На самом деле, как следует из описания внешнего тактового генератора (в дан- ном случае это Si546CAA001075BBG – см. далее), частота этого генера- тора указана с погрешностью в ±20 мд, т.е. ±20/1 000 000 от заявлен- ного значения 72 МГц, что составляет ±72 000 000 Гц × 20/1 000 000 = ±1440 Гц. Другими словами, частота генератора находится в интервале от 71 988 560 Гц (72 000 000 Гц – 1440 Гц) до 72 001 440 Гц (72 000 000 Гц + 1440 Гц). Для того что- бы узнать, какую же реальную часто- ту F выдаёт внешний генератор, её (или её, делённую на какой-либо коэффициент К) можно просто изме- рить частотомером и внести необхо- димую поправку на время T. Об этом – см. далее. Здесь же вернёмся к функциональной схеме рис. 2. В нижней её части пока- зана антидребезговая схема на основе CLU1 и CLU2, устраняющая дребезг кон- тактов кнопки. Как видно из этой схемы, она представляет собой простейший RS-триггер, где A_IN CLU1 и A_IN CLU2 – его входы, выходы OUT CLU1 и OUT CLU2 – это выходы триггера Q и соот- ветственно, причём выход CLU1 сое- динён со входом B CLU2, а выход CLU2 соединён со входом B CLU1. Если запи- сать логическое выражение для каждо- го CLU как ~ (A&B), то функция каждо- го CLU будет представлять собой 2И-НЕ. Если сравнить этот RS-триггер с рис. 1, то получим почти полную идентич- ность. Разница лишь в том, что в этой схеме (рис. 2) отсутствуют резисторы R1 и R2 (рис. 1). Но если в портах P1.2 и P1.1 разрешить слаботоковые подтяж- ки к питанию (Weak PullUp), т.е. устано- вить опциюPull-ups Enabled (см. далее), то получим полную идентичность, а значит, эта схема будет подавлять дре- безг контактов кнопки так же, как это описано для схемы рис. 1. Рис. 3. Функциональная схема измерения частоты внешнего генератора T3 T4 OUT (~A) OUT (~A) Внешний генератор 72 МГц (SYS_CLK) P0.3 МК EFM8LB12 Частота А А Частотомер Ч3-57 P2.5 P2.2 A_IN CLU3ALTCLK (T4_Overflow) CLU2ALTCLK (T3_Overflow) EXTCLK 72 МГц 2 МГц SYSCLK/12 (6 МГц) 200 КГц 1 МГц 100 КГц CLU3 1:2 1:10 1:3 C D T Q Q CLU2 1:2 C D T Q Q

RkJQdWJsaXNoZXIy MTQ4NjUy