EugeNNe 0 15 апреля, 2008 Опубликовано 15 апреля, 2008 · Жалоба Посредством Меги640 требуется сгенерить сигнал вполовину тактовой этой меги (Fclk = 14,7456 МГц). Для этого возможно использовать один из таймеров в режиме СТС. Имеется формула для расчёта частоты сигнала в данном режиме Fctc = Ftmr / (2*N*(1+OCR)). Что бы получить частоту в 2-а раза ниже тактовой, значение записанное в регистр OCR должно быть равно "0". Попробовал - работает, частота ровно 14,7456 МГц/ 2. Вопрос только насколько корректно так делать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 15 апреля, 2008 Опубликовано 15 апреля, 2008 · Жалоба Если на значения, записываемые в регистры, существуют ограничения, то производитель об этом явно пишет (обычно). Если в документации ничего об этом не сказано, у Вас получилось и Вас это устраивает, то пользуйтесь. Другое дело, что применение подобных граничных значений может не быть гарантировано при переходе на другой МК этого же семейства (не факт, но возможно и в истории развития AVR такое уже было) и поэтому смахивает на трюкачество. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SapegoAL 0 15 апреля, 2008 Опубликовано 15 апреля, 2008 · Жалоба Вопрос только насколько корректно так делать? Корректно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EugeNNe 0 15 апреля, 2008 Опубликовано 15 апреля, 2008 · Жалоба Я тоже думаю что вроде ничего не написано про какие то ограничения. Буду пользовать. Не хочется делители ещё городить, когда таймера свободные в МК есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirYU 0 15 апреля, 2008 Опубликовано 15 апреля, 2008 · Жалоба Я тоже думаю что вроде ничего не написано про какие то ограничения. Буду пользовать. Не хочется делители ещё городить, когда таймера свободные в МК есть. Вполне корректно, только ИМХО контроллер полностью загружен только одной указанной задачей. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EugeNNe 0 15 апреля, 2008 Опубликовано 15 апреля, 2008 · Жалоба Вполне корректно, только ИМХО контроллер полностью загружен только одной указанной задачей. Это почему? Как раз МК выполняет кучу задач: общается с компом, управляет железом, обслуживает датчики. А таймер запустили один раз в требуемом режиме, и пусть себе молотит, в СТС режиме не требуется никаких программных заморочек для генерации сигнала требуемой частоты. Так что Мега как раз избавляет от лишнего железа. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
add 0 15 апреля, 2008 Опубликовано 15 апреля, 2008 · Жалоба Посредством Меги640 требуется сгенерить сигнал вполовину тактовой этой меги (Fclk = 14,7456 МГц). Если это не курсовик, а реальная задача.. то советую решить проблему установкой обычного делителя(который еще будет выполнять роль буфера) и частоту брать с кварца (с вывода XTAL2) . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EugeNNe 0 15 апреля, 2008 Опубликовано 15 апреля, 2008 · Жалоба Если это не курсовик, а реальная задача.. то советую решить проблему установкой обычного делителя(который еще будет выполнять роль буфера) и частоту брать с кварца (с вывода XTAL2) . Не курсовик...А чем плох непосредственно сигнал с МК? Нагрузочной способности порта МК для данного применения вполне хватит. Собственно Таймер МК и выступает в качестве делителя. К чему ещё корпуса в изделие закладывать, оно и так недешёвое получилось... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GDI 0 15 апреля, 2008 Опубликовано 15 апреля, 2008 · Жалоба Вот как раз брать с кварца и не нужно - он на это не рассчитан - таймер самое правильное и корректное решение, а если уж надо буферизовать этот сигнал, тогда можно и буфер внешний поставить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
add 0 15 апреля, 2008 Опубликовано 15 апреля, 2008 · Жалоба Вот как раз брать с кварца и не нужно - он на это не рассчитан - таймер самое правильное и корректное решение, а если уж надо буферизовать этот сигнал, тогда можно и буфер внешний поставить. что значит не рассчитан? очень даже рассчитан... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rx3apf 0 15 апреля, 2008 Опубликовано 15 апреля, 2008 · Жалоба что значит не рассчитан? очень даже рассчитан... При определенных условиях и не для всех кристаллов. Например, то, что можно было делать с at90s2313, при переходе на tiny2313 уже нельзя (размах сигнала на выходе генератора стал меньше, а фьюза CKOPT нет). С RC-генератором такое тоже не пройдет. Так что без крайней необходимости пользоваться выходом тактового генератора не стоит, а если аппаратный таймер позволяет сгенерировать нужный сигнал - этим и надо пользоваться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 15 апреля, 2008 Опубликовано 15 апреля, 2008 · Жалоба Если это не курсовик, а реальная задача.. то советую решить проблему установкой обычного делителя(который еще будет выполнять роль буфера) и частоту брать с кварца (с вывода XTAL2) . Присоединяюсь. А удорожание не будет значимым. D-триггер стоит копейки. Зато решение надежное и красивое. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SapegoAL 0 15 апреля, 2008 Опубликовано 15 апреля, 2008 · Жалоба Присоединяюсь. А удорожание не будет значимым. D-триггер стоит копейки. Зато решение надежное и красивое. А чем хуже решение, предусмотренное описанием на микросхему? Чем оно хуже решения притянутого за уши? Контроллер не принимает участия в процессе, там внутри (для особо продвинутых и одарённых) установлен аппаратный делитель с переменным, программно задаваемым коэффициентом деления. Который, при этом, включен корректно! То есть тоже аппаратное решение, предусмотренное производителем! Так что тут тень на плетень наводить? Если уж ставить внешний делитель, то для этого также существует аппаратное решение. Необходимо вывести CLK наружу, как это предусмотрено согласно даташиту, и поделить эту частоту. Подключение к кварцу возможно, но снижает помехозащищённость и требует грамотной разводки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rx3apf 0 15 апреля, 2008 Опубликовано 15 апреля, 2008 · Жалоба Если уж ставить внешний делитель, то для этого также существует аппаратное решение. Необходимо вывести CLK наружу, как это предусмотрено согласно даташиту, и поделить эту частоту. Подключение к кварцу возможно, но снижает помехозащищённость и требует грамотной разводки. Вообще-то "вывод CLK наружу" применительно к AVR и означает подключение к кварцу (выход осциллятора), с включением соответствующей опции (CKOPT, там, где он есть). Так что если нужен внешний делитель - или так, или отдельный осциллятор и тактировать микроконтроллер им же (если нужна синхронность). В данном случае - смысла нет. Все сделано в согласии с даташитом. А вот была бы бага типа как в 90s2313 (в таймере) - не получилось бы... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EugeNNe 0 16 апреля, 2008 Опубликовано 16 апреля, 2008 · Жалоба Присоединяюсь. А удорожание не будет значимым. D-триггер стоит копейки. Зато решение надежное и красивое. Не вижу никакой красивости в приделыванию в XTAL какихто дополнительных цепей. По ЭМС наша девайсина при воздействии помех степени жёсткости 3 должна функционировать по классу А. Кучу времи на ЭМС потратили и введение каких то дополнительных цепей в узле тактирования МК может привести к тому, что заново придётся много чего делать (плату разводить заново и т.д. и т.п.). И ещё...мне надо управлять генерируемым сигналом F/2 - включать отключать когда надо. Если вешать дополнительные делители, то придётся вводить сигналы управляемые им. А таймер можно программно включать-отключать без проблем... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться