Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Таймер в режиме СТС
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
EugeNNe
Посредством Меги640 требуется сгенерить сигнал вполовину тактовой этой меги (Fclk = 14,7456 МГц). Для этого возможно использовать один из таймеров в режиме СТС. Имеется формула для расчёта частоты сигнала в данном режиме Fctc = Ftmr / (2*N*(1+OCR)). Что бы получить частоту в 2-а раза ниже тактовой, значение записанное в регистр OCR должно быть равно "0". Попробовал - работает, частота ровно 14,7456 МГц/ 2. Вопрос только насколько корректно так делать?
IgorKossak
Если на значения, записываемые в регистры, существуют ограничения, то производитель об этом явно пишет (обычно).
Если в документации ничего об этом не сказано, у Вас получилось и Вас это устраивает, то пользуйтесь.
Другое дело, что применение подобных граничных значений может не быть гарантировано при переходе на другой МК этого же семейства (не факт, но возможно и в истории развития AVR такое уже было) и поэтому смахивает на трюкачество.
SasaVitebsk
Цитата(BigBolt @ Apr 15 2008, 12:29) *
Вопрос только насколько корректно так делать?

Корректно.
EugeNNe
Я тоже думаю что вроде ничего не написано про какие то ограничения. Буду пользовать. Не хочется делители ещё городить, когда таймера свободные в МК есть.
VladimirYU
Цитата(BigBolt @ Apr 15 2008, 12:59) *
Я тоже думаю что вроде ничего не написано про какие то ограничения. Буду пользовать. Не хочется делители ещё городить, когда таймера свободные в МК есть.


Вполне корректно, только ИМХО контроллер полностью загружен только одной указанной задачей.
EugeNNe
Цитата(VladimirYU @ Apr 15 2008, 13:23) *
Вполне корректно, только ИМХО контроллер полностью загружен только одной указанной задачей.


Это почему? Как раз МК выполняет кучу задач: общается с компом, управляет железом, обслуживает датчики. А таймер запустили один раз в требуемом режиме, и пусть себе молотит, в СТС режиме не требуется никаких программных заморочек для генерации сигнала требуемой частоты. Так что Мега как раз избавляет от лишнего железа.
add
Цитата(BigBolt @ Apr 15 2008, 12:29) *
Посредством Меги640 требуется сгенерить сигнал вполовину тактовой этой меги (Fclk = 14,7456 МГц).

Если это не курсовик, а реальная задача.. то советую решить проблему установкой обычного делителя(который еще будет выполнять роль буфера) и частоту брать с кварца (с вывода XTAL2) .
EugeNNe
Цитата(add @ Apr 15 2008, 15:18) *
Если это не курсовик, а реальная задача.. то советую решить проблему установкой обычного делителя(который еще будет выполнять роль буфера) и частоту брать с кварца (с вывода XTAL2) .


Не курсовик...А чем плох непосредственно сигнал с МК? Нагрузочной способности порта МК для данного применения вполне хватит. Собственно Таймер МК и выступает в качестве делителя. К чему ещё корпуса в изделие закладывать, оно и так недешёвое получилось...
GDI
Вот как раз брать с кварца и не нужно - он на это не рассчитан - таймер самое правильное и корректное решение, а если уж надо буферизовать этот сигнал, тогда можно и буфер внешний поставить.
add
Цитата(GDI @ Apr 15 2008, 16:11) *
Вот как раз брать с кварца и не нужно - он на это не рассчитан - таймер самое правильное и корректное решение, а если уж надо буферизовать этот сигнал, тогда можно и буфер внешний поставить.

что значит не рассчитан? очень даже рассчитан... biggrin.gif
rx3apf
Цитата(add @ Apr 15 2008, 16:43) *
что значит не рассчитан? очень даже рассчитан... biggrin.gif

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

Присоединяюсь. А удорожание не будет значимым. D-триггер стоит копейки. Зато решение надежное и красивое.
SasaVitebsk
Цитата(smk @ Apr 16 2008, 00:15) *
Присоединяюсь. А удорожание не будет значимым. D-триггер стоит копейки. Зато решение надежное и красивое.

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

Вообще-то "вывод CLK наружу" применительно к AVR и означает подключение к кварцу (выход осциллятора), с включением соответствующей опции (CKOPT, там, где он есть). Так что если нужен внешний делитель - или так, или отдельный осциллятор и тактировать микроконтроллер им же (если нужна синхронность). В данном случае - смысла нет. Все сделано в согласии с даташитом. А вот была бы бага типа как в 90s2313 (в таймере) - не получилось бы...
EugeNNe
Цитата(smk @ Apr 16 2008, 00:15) *
Присоединяюсь. А удорожание не будет значимым. D-триггер стоит копейки. Зато решение надежное и красивое.


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

Ну вот щас вопрос наиболее полно изложен.. про ЭМС, про управление... smile.gif На счет красивости.. это вопрос спорный.. И вообще вопрос про корректность.. Если нормально устойчиво работает, используйте на здоровье. biggrin.gif
SasaVitebsk
Цитата(rx3apf @ Apr 16 2008, 02:26) *
Вообще-то "вывод CLK наружу" применительно к AVR и означает подключение к кварцу (выход осциллятора), с включением соответствующей опции (CKOPT, там, где он есть). Так что если нужен внешний делитель - или так, или отдельный осциллятор и тактировать микроконтроллер им же (если нужна синхронность). В данном случае - смысла нет. Все сделано в согласии с даташитом. А вот была бы бага типа как в 90s2313 (в таймере) - не получилось бы...

Уважаемый, если вы заглянете в первый пост, то увидите, что речь идёт о mega640. Если вы потрудитесь заглянуть в даташит на данную микросхему, то там в разделе про fuse bits (у меня, к примеру, стр. 328, таб. 152) есть fuse с именем CKOUT. Ниже, в примечании написано для чего он нужен, хотя это понятно по названию. Так что необходимости подключаться к кварцу для микросхемы имеющей 11 портов наружу - я не вижу. Хотя это и возможно.
rx3apf
Цитата(SasaVitebsk @ Apr 17 2008, 23:04) *
Уважаемый, если вы заглянете в первый пост, то увидите, что речь идёт о mega640. Если вы потрудитесь заглянуть в даташит на данную микросхему,

Скачал актуальную версию даташита (2549F). Потрудился в него заглянуть. Фьюза CKOPT не наблюдается. Зато наблюдается раздел "10.5 Full Swing Crystal Oscillator". Где сказано, как, что и зачем. И где получить сигнал. В других кристаллах для этих целей служит CKOPT. Здесь - CKSEL=011x.
Цитата
то там в разделе про fuse bits (у меня, к примеру, стр. 328, таб. 152) есть fuse с именем CKOUT.

Можно поинтересоваться номером документа ?
Цитата
Ниже, в примечании написано для чего он нужен, хотя это понятно по названию.

В самом деле ? Мне вот - непонятно. "Clock option" в общем случае может означать все, что угодно.
Цитата
Так что необходимости подключаться к кварцу для микросхемы имеющей 11 портов наружу - я не вижу.

В самом деле ? А что, наличие 11 (да хоть бы и 111) портов автоматически подразумевает какие-то особенные режимы работы осциллятора ? Напомню - первоначальный вопрос (ответ на который был дан) плавно превратился в вопрос о том, можно ли к выводу XTAL2 подключать дополнительные нагрузки... Можно указать пальцем в конкретную страницу, где описан способ _снятия_ тактовой с вывода, отличного от XTAL2 ?
aaarrr
Цитата(rx3apf @ Apr 19 2008, 23:18) *
Скачал актуальную версию даташита (2549F). Потрудился в него заглянуть. Фьюза CKOPT не наблюдается.

Актуальная версия даташита - 2549L. Если Вы посмотрите на стр. 48, то увидите описание CLKO пина, который включается фьюзом CKOUT.
sKWO
Народ, да нечего тут спорить, если есть возможность использовать выход таймера на допустимую нагрузку то так и делать, тем более что затраты в режиме СТС есть программные, ну и незначительное дополнительное потребление тока, проинициализировал и бери тактовую.
Всегда так делаю.
Городил ФАПЧ на плиске, нужно было засинхронизировать частоту 2,4КГц, подавал опорную 230400КГц(в 96раз больше), так эту опору формировал Тини2313 , первым таймером в режиме СТС
ну и кварц 22,1184МГц. Стабильность не рассчитывал, но скажу - супер. И опору подавал непосредственно с самого МК.
Правда потом сделал генератор на самой плиске и она сама формировала опору, но это уже не сюда
rx3apf
Цитата(aaarrr @ Apr 19 2008, 23:44) *
Актуальная версия даташита - 2549L.

В самом деле, его я и скачал. Все ж по ночам надо спать...
Цитата
Если Вы посмотрите на стр. 48, то увидите описание CLKO пина, который включается фьюзом CKOUT.

Действительно, был невнимателен. Все правильно, был упомянут фьюз CKOUT, который подключает выход тактовой на отдельный выход. Однако при всем при этом опция "full output swing" (там, где она есть) предназначена именно для тактирования внешних потребителей с выхода XTAL2. И наличествует даже у m640.
SasaVitebsk
Я и не возражаю. И написал "возможно". Но дело в том, что сам кристалл достаточно большой с одной стороны, что в дополнение к уже отмеченному, а также учитывая колличество ног (100) приведёт к увеличению длины соединяющей дорожки, а это, как следствие к дополнительной помехонеустойчивости. Учитывая такое число свободных ног, потеря одной не такая существенная как у м8, к примеру. Я уже не говорю о применении внешнего счётчика, который в любые времена считался элементом не желательным для применения там, где его можно не ставить.
=GM=
Цитата(BigBolt @ Apr 15 2008, 07:29) *
Что бы получить частоту в 2-а раза ниже тактовой, значение записанное в регистр OCR должно быть равно "0". Попробовал - работает, частота ровно 14,7456 МГц/ 2. Вопрос только насколько корректно так делать?


Не поздно ещё (:-)? Абсолютно корректно для данного МК. The waveform generated will have a maximum frequency of Focna = Fclk/2 when OCRnA is set to zero (0x0000) (док. 2549L, с 150).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.