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

Изменение источника тактирования МК Atmega

Добрый день!
Цель: заставить работать МК Atmega 8 на частоте генерируемой цифровым синтезатором частоты(AD9833). Микросхема после запуска не выдает сигнала на выходе, её нужно запрограммировать.
Предполагаемый алгоритм:
1. подключить к МК генератору тактового сигнала (в идеале - это внутренняя RC цепочка)
2. Инициализировать МК и залить код управления в микросхему-синтезатор
3. Переключить МК на другой источник тактового сигнала - микросхему синтезатор.
Вопрос: Возможно ли изменить FUSE биты, отвечающие за источник тактового сигнала в процессе выполнения кода.

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


Ссылка на сообщение
Поделиться на другие сайты
When applying an external clock, it is required to avoid sudden changes in the applied clock fre-
quency to ensure stable operation of the MCU. A variation in frequency of more than 2% from
one clock cycle to the next can lead to unpredictable behavior. It is required to ensure that the
MCU is kept in Reset during such changes in the clock frequency.

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(mozg12342 @ Feb 22 2018, 15:38) <{POST_SNAPBACK}>
Вопрос: Возможно ли изменить FUSE биты, отвечающие за источник тактового сигнала в процессе выполнения кода.


В Си есть библиотека для работы с fuse битами, посмотрите её возможности.

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(megajohn @ Feb 22 2018, 09:52) <{POST_SNAPBACK}>
When applying an external clock, it is required to avoid sudden changes in the applied clock fre-
quency to ensure stable operation of the MCU. A variation in frequency of more than 2% from
one clock cycle to the next can lead to unpredictable behavior. It is required to ensure that the
MCU is kept in Reset during such changes in the clock frequency.

Доходчиво, ну может попробовать синхронизировать фазу синтезатора и внешнего пускового генератора, подключить их одновременно, а потом отключить внешний генератор.

Цитата(mozg12342 @ Feb 22 2018, 10:04) <{POST_SNAPBACK}>
Доходчиво, ну может попробовать синхронизировать фазу синтезатора и внешнего пускового генератора, подключить их одновременно, а потом отключить внешний генератор.

Придумал! можно все сделать за два запуска МК: при первом запуске МК будет запускаться от пускового генератора такта и прошивать синтезатор, затем реализовать схемотехнически сброс МК и одновременное переключение на другой источник такта.
Вопрос остался за fuse битами - возможно их изменить самим МК или нет. Мне для общего развития.

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(mozg12342 @ Feb 22 2018, 13:14) <{POST_SNAPBACK}>
Вопрос остался за fuse битами - возможно их изменить самим МК или нет. Мне для общего развития.

На сколько я знаю менять, источник тактового сигнала из программы, нельзя. Можно только программируемым делителем уменьшить её. Возможно какие то новые меги и умеют, но мега8 точно не умеет.

Могу посоветовать использовать например тини13 которая будет программировать синтезатор. На цене особо не скажется, и на потреблении.
Вопрос ещё что за изврат тактировать от синтезатора? В чём идея если не секрет?

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(Den64 @ Feb 22 2018, 10:32) <{POST_SNAPBACK}>
На сколько я знаю менять, источник тактового сигнала из программы, нельзя. Можно только программируемым делителем уменьшить её. Возможно какие то новые меги и умеют, но мега8 точно не умеет.

Могу посоветовать использовать например тини13 которая будет программировать синтезатор. На цене особо не скажется, и на потреблении.

Программируемый делитель - это fuse бит SCKDIV8 или предделитель таймера?
На счет тини13 приму во внимание, но хотелось реализовать на одном МК. Тут роль играет спортивный интерес.

Цитата(Den64 @ Feb 22 2018, 10:32) <{POST_SNAPBACK}>
На сколько я знаю менять, источник тактового сигнала из программы, нельзя. Можно только программируемым делителем уменьшить её. Возможно какие то новые меги и умеют, но мега8 точно не умеет.

Могу посоветовать использовать например тини13 которая будет программировать синтезатор. На цене особо не скажется, и на потреблении.
Вопрос ещё что за изврат тактировать от синтезатора? В чём идея если не секрет?

синтезатор может точно настроить частоту, но не может настроить скважность. МК поможет

Цитата(Smoky @ Feb 22 2018, 10:01) <{POST_SNAPBACK}>
В Си есть библиотека для работы с fuse битами, посмотрите её возможности.

Прочитал, я так понял, что в документе показано как заставить avrdude программировать fuse биты при прошивке МК.

А можно заставить МК не выполнять никаких действий пару десятков тактов, для предотвращения сбоя при изменении тактовой частоты МК

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


Ссылка на сообщение
Поделиться на другие сайты
QUOTE (Smoky @ Feb 22 2018, 12:01) <{POST_SNAPBACK}>
В Си есть библиотека для работы с fuse битами, посмотрите её возможности.
А потом посчитайте, через сколько включений ваше устройство вернется к вам на гарантийный ремонт из-за исчерпания количества перезаписей fuse-битов. И подумайте, готовы ли вы постоянно менять устройство по гарантии или все же лучше сразу заложить в устройство процессор, у которого переключение тактирования из программы - штатная, предусмотренная производителем операция.

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


Ссылка на сообщение
Поделиться на другие сайты
ATmega8 довольно старый контроллер. Посмотрите на новые семейства любого производителя, они все позволяют на ходу менять тактирование: внешнее, внутреннее (резонаторы, программно подстраиваемые RC-генераторы), переключать встроенные делители, PLL-и и т.д.

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


Ссылка на сообщение
Поделиться на другие сайты
Какие МК вы имеете ввиду? XMega?

Всем спасибо! за полученные знания. Решил остановиться на установке дополнительного MK Attiny13

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


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.
Авторизация