Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Запуск таймера от RTC
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
data_stack
Нужно писать wav с настраиваемой частотой дискретизации. Беда в том, что это должно быть жестко привязано к RTC. Началась новая секунда - пошел новый отсчет таймера, а в прерывании таймера уже забираются данные. Хотелось бы чтобы RTC генерил триггер, который бы запускал таймер. Посмотрел апноты на RTC вроде ничего подходящего не нашел. Единственная идея соединить ноги RTC calibration out с какой нибудь ногой внешнего прерывания и внутри внешнего запускать свой таймер. Но прежде чем городить такой огород, хотелось бы понять, что другого выхода нет. Контроллер STM32L1.
jcxz
Цитата(data_stack @ Apr 15 2016, 20:30) *
Нужно писать wav с настраиваемой частотой дискретизации. Беда в том, что это должно быть жестко привязано к RTC. Началась новая секунда - пошел новый отсчет таймера, а в прерывании таймера уже забираются данные.

Вы чего собственно хотите? Умножить частоту RTC на N и с такой частотой получать прерывания?
Это можно сделать например запустив любой таймер общего назначения от кварца и реализовать периодическую подстройку его от прерываний RTC (ФАПЧ). Будет конечно некоторый джиттер. Делал такое.
data_stack
да именно это, просто не хочется изобретать велосипед. правильно ли я понимаю что это делается через прерывания alarm?
jcxz
Цитата(data_stack @ Apr 16 2016, 01:24) *
да именно это, просто не хочется изобретать велосипед. правильно ли я понимаю что это делается через прерывания alarm?

Наверное. У меня была внешняя микросхема RTC, выдающая секундные импульсы на пин МК. По ним делал ФАПЧ одного из таймеров МК.
Т.е. - таймер тикал с частотой 1МГц (шаг ==1мкс), в каждом прерывании от импульса RTC смотрел фазу таймера, усреднял по неск. периодам (для компенсации джиттера от задержек входа в ISR) и делал оценку разницы хода таймера и RTC.
Если секундное прерывание от внутреннего RTC - то же самое.
Мне надо было подстраивать таймер. А Вам надо умножить. Соответственно дальше: делите полученный период RTC (в тиках таймера между текущим прерыванием и предыдущим) на нужное число интервалов и генерите прерывания с этими интервалами. Так как поделится не нацело, то интервалы будут разные.
Всё.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.