Перейти к содержанию
    

Посредством Меги640 требуется сгенерить сигнал вполовину тактовой этой меги (Fclk = 14,7456 МГц). Для этого возможно использовать один из таймеров в режиме СТС. Имеется формула для расчёта частоты сигнала в данном режиме Fctc = Ftmr / (2*N*(1+OCR)). Что бы получить частоту в 2-а раза ниже тактовой, значение записанное в регистр OCR должно быть равно "0". Попробовал - работает, частота ровно 14,7456 МГц/ 2. Вопрос только насколько корректно так делать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если на значения, записываемые в регистры, существуют ограничения, то производитель об этом явно пишет (обычно).

Если в документации ничего об этом не сказано, у Вас получилось и Вас это устраивает, то пользуйтесь.

Другое дело, что применение подобных граничных значений может не быть гарантировано при переходе на другой МК этого же семейства (не факт, но возможно и в истории развития AVR такое уже было) и поэтому смахивает на трюкачество.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос только насколько корректно так делать?

Корректно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я тоже думаю что вроде ничего не написано про какие то ограничения. Буду пользовать. Не хочется делители ещё городить, когда таймера свободные в МК есть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я тоже думаю что вроде ничего не написано про какие то ограничения. Буду пользовать. Не хочется делители ещё городить, когда таймера свободные в МК есть.

 

Вполне корректно, только ИМХО контроллер полностью загружен только одной указанной задачей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вполне корректно, только ИМХО контроллер полностью загружен только одной указанной задачей.

 

Это почему? Как раз МК выполняет кучу задач: общается с компом, управляет железом, обслуживает датчики. А таймер запустили один раз в требуемом режиме, и пусть себе молотит, в СТС режиме не требуется никаких программных заморочек для генерации сигнала требуемой частоты. Так что Мега как раз избавляет от лишнего железа.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посредством Меги640 требуется сгенерить сигнал вполовину тактовой этой меги (Fclk = 14,7456 МГц).

Если это не курсовик, а реальная задача.. то советую решить проблему установкой обычного делителя(который еще будет выполнять роль буфера) и частоту брать с кварца (с вывода XTAL2) .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если это не курсовик, а реальная задача.. то советую решить проблему установкой обычного делителя(который еще будет выполнять роль буфера) и частоту брать с кварца (с вывода XTAL2) .

 

Не курсовик...А чем плох непосредственно сигнал с МК? Нагрузочной способности порта МК для данного применения вполне хватит. Собственно Таймер МК и выступает в качестве делителя. К чему ещё корпуса в изделие закладывать, оно и так недешёвое получилось...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот как раз брать с кварца и не нужно - он на это не рассчитан - таймер самое правильное и корректное решение, а если уж надо буферизовать этот сигнал, тогда можно и буфер внешний поставить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот как раз брать с кварца и не нужно - он на это не рассчитан - таймер самое правильное и корректное решение, а если уж надо буферизовать этот сигнал, тогда можно и буфер внешний поставить.

что значит не рассчитан? очень даже рассчитан... :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

что значит не рассчитан? очень даже рассчитан... :biggrin:

При определенных условиях и не для всех кристаллов. Например, то, что можно было делать с at90s2313, при переходе на tiny2313 уже нельзя (размах сигнала на выходе генератора стал меньше, а фьюза CKOPT нет). С RC-генератором такое тоже не пройдет. Так что без крайней необходимости пользоваться выходом тактового генератора не стоит, а если аппаратный таймер позволяет сгенерировать нужный сигнал - этим и надо пользоваться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если это не курсовик, а реальная задача.. то советую решить проблему установкой обычного делителя(который еще будет выполнять роль буфера) и частоту брать с кварца (с вывода XTAL2) .

Присоединяюсь. А удорожание не будет значимым. D-триггер стоит копейки. Зато решение надежное и красивое.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяюсь. А удорожание не будет значимым. D-триггер стоит копейки. Зато решение надежное и красивое.

А чем хуже решение, предусмотренное описанием на микросхему? Чем оно хуже решения притянутого за уши? Контроллер не принимает участия в процессе, там внутри (для особо продвинутых и одарённых) установлен аппаратный делитель с переменным, программно задаваемым коэффициентом деления. Который, при этом, включен корректно! То есть тоже аппаратное решение, предусмотренное производителем! Так что тут тень на плетень наводить? Если уж ставить внешний делитель, то для этого также существует аппаратное решение. Необходимо вывести CLK наружу, как это предусмотрено согласно даташиту, и поделить эту частоту. Подключение к кварцу возможно, но снижает помехозащищённость и требует грамотной разводки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если уж ставить внешний делитель, то для этого также существует аппаратное решение. Необходимо вывести CLK наружу, как это предусмотрено согласно даташиту, и поделить эту частоту. Подключение к кварцу возможно, но снижает помехозащищённость и требует грамотной разводки.

Вообще-то "вывод CLK наружу" применительно к AVR и означает подключение к кварцу (выход осциллятора), с включением соответствующей опции (CKOPT, там, где он есть). Так что если нужен внешний делитель - или так, или отдельный осциллятор и тактировать микроконтроллер им же (если нужна синхронность). В данном случае - смысла нет. Все сделано в согласии с даташитом. А вот была бы бага типа как в 90s2313 (в таймере) - не получилось бы...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяюсь. А удорожание не будет значимым. D-триггер стоит копейки. Зато решение надежное и красивое.

 

Не вижу никакой красивости в приделыванию в XTAL какихто дополнительных цепей. По ЭМС наша девайсина при воздействии помех степени жёсткости 3 должна функционировать по классу А. Кучу времи на ЭМС потратили и введение каких то дополнительных цепей в узле тактирования МК может привести к тому, что заново придётся много чего делать (плату разводить заново и т.д. и т.п.). И ещё...мне надо управлять генерируемым сигналом F/2 - включать отключать когда надо. Если вешать дополнительные делители, то придётся вводить сигналы управляемые им. А таймер можно программно включать-отключать без проблем...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...