Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
238 Часть 111. Практическое программирование микроконтроллеров АVR ведь требуется еще и выполнять какие-то действия, а их нужно успеть совершить в промежутке между прерываниями (поэтому и увеличение тактовой частоты не поможет). Есть также довольно-таки сложный способ подгонки значений времени путем до бавления рассчитанных по величинам фактического убегания часов программных задержек в определенное время (ежесуточно, например). Но все такие «костыли» сложны в реализации, отвлекают от главного и, главное, с легкостью при необхо димости могут быть заменены аппаратными усовершенствованиями. Для этого достаточно завести контроллер от внешнего точного генератора. Фирма Epson выпускает такие генераторы с точностью от ± 25 ррм (миллионных долей) в диапазоне температур -20 + 70 °С. Продукция китайских производителей не сколько похуже, но тоже подтягивается к этим величинам1 • Генераторы эти не смертельно дороги, так что в критичных случаях их можно использовать вместо обычного кварца в тактировании контроллера. Эго равно касается и обсуждаемых часовых функций, и применения МК в качестве периодомера и частотомера (см. далее), и просто как генератора частоты или импульсов заданной длительно сти. Точности атомных часов вы, разумеется, таким способом не достигнете (и МК для подобного уровня решений вообще мало приспособлены), но огромное боль шинство задач даже из области научного эксперимента вполне решаются. А что касается внешних RTC, то вопросы их погрешности мы обсудим в главе 13 . Частотомер и периодомер Частота может измеряться, как известно, двумя способами: либо подсчетом числа импульсов измеряемой частоты за определенный промежуток времени, либо, на оборот, подсчетом числа импульсов известной частоты за период (или несколько периодов) измеряемого сигнала. В первом случае мы получаем именно значение частоты (если промежуток времени равен 1 с, то сразу в герцах), а во втором - об ратную величину, значение периода. Первый способ удобнее для измерения высо ких частот, второй - низких. Заметим, что в Arduino операции, аналогичные функциям частотомера и периодо мера, отсутствуют, имеется только измерение длительности импульса в виде функ ции pul sern ( ) . Если вам любопытно узнать, как к задачам измерения периодов и частот можно пристроить Arduino, то можете ознакомиться со статьей автора [ 1 5] . С помощью контроллеров МК частоту можно измерять несколькими путями. И сначала мы займемся методом прямого измерения (по способу частотомера) дос таточно высокой частоты, причем с подстройкой измерительного интервала для получения более точного результата прямо в физических величинах - герцах. 1 Поистине безбрежный выбор таких генераторов разных фирм имеется в интернет-магазине «Electronic component» (electronic-component.org ), а также в магазине «Кварц» (quartzl .com).
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==