|
|
|
|
Всё таки таймер... А почему прерывание должно идти с удвоенной частотой и какой, максимально требуемой (333,33Гц)? Отсчитывать время выдержки в основном цикле программы имеете ввиду? |
|
|
Digital: Всё таки таймер... А почему прерывание должно Тут уже разумно говорить в приложении к конкретной структуре выбранного контроллера... |
|
|
Vlad_Petr: ИЛИ (если это основное занятие для контроллера), можно просто число тактов (команд) в циклической программе задать, для получения необходимого периода. Имеется ввиду программирование на ассемблере? |
|
|
Vlad_Petr: Тут уже разумно говорить в приложении к конкретной структуре выбранного контроллера... Без более-менее ясного алгоритма не могу конкретно выбрать тип МК (хотя МК широкого применения сейчас очень сходны по начинке, просто разный объём памяти и кол-во портов). Ну получается что разные специалисты в принципе сошлись на сходном решении - значит так общепринято на практике, буду получать частоты коэффициентами. |
|
|
Digital: Имеется ввиду программирование на ассемблере? Разумеется..и это так естественно.. |
|
|
Digital: ип МК наверное не принципиален, т Digital: Без более-менее ясного алгоритма не могу конкретно выбрать тип МК Значит выбирайте микроконтроллер со встроенным ШИМ генератором, и не ломайте голову.
|
|
|
Да не надо никакого таймера! Tadas же всё сказал - Tadas: Вам же не числа надо делить, а частоту. Я вон почти не работал с МК, и то знаю, что по сути тут надо имитировать счётчик-делитель. Т.е. нужно определять наличие импульса, и пропускать на выход каждый 3-й, 8-й, 15-й и т.д. Это возможно без таймеров, и даже с некварцованной рабочей частотой МК, лишь бы она была много больше считаемой... А чтобы на выходе был меандр, то выпускать вдвое бОльшую частоту, деля её потом триггером, или, опять же по совету Tadasa - Tadas: Надо организовать прерывание от таймера, чтобы оно шло с удвоенной частотой, С таким алгоритмом справится почти любой МК, лишь бы у него был достаточный запас по быстродействию. |
|
|
Digital: А почему прерывание должно идти с удвоенной частотой и какой, Да потому, что выход надо инвертировать дважды за период. Все делается чисто на прерывании таймера, никаких циклов считать не надо, таймер сам сосчитает, ассемблер или С - никакой разницы. Ведь речь идет об очень низких частотах - десятки - сотни герц. Вот если бы речь шла о сотнях кГц - тогда дело другое, тут уж пришлось бы показать искусство - см напр. тему про DDS генератор. Там GM как раз показал виртуозный пример того, что в пределе может дешевенький МК. |
|
|
Tadas: Все делается чисто на прерывании таймера, никаких циклов считать не надо, Tadas, или я Вас неправильно понял, или Вы меня... Вот я предлагаю - считать импульсы программно. Что такое, допустим, поделить на 159? Это значит - отсчитать 158 входных импульсов, ничего с ними не делая, а 159-й передать со входа на выход. Всё, на выходе получается последовательность тех же импульсов, но в 159 раз реже! Зачем здесь нужен таймер? Я же говорю, здесь даже не нужна кварцованная тактовая частота МК - главное, чтобы по ней был большой запас. Для нынешних МК это не проблема даже для входа порядка 1 мгц. |
|
|
Спец: Вот я предлагаю - считать импульсы программно. Что такое, допустим, поделить на 159? Это значит - отсчитать 158 входных импульсов, ничего с ними не делая, а 159-й передать со входа на выход. Это от задачи зависит. Если не требуется привязка фазы выходного сигнала к опорной частоте, тогда можно и так.
|
|
|
|
|