реклама на сайте
подробности

 
 
 
Closed TopicStart new topic
> Изменение источника тактирования МК Atmega
mozg12342
сообщение Feb 22 2018, 09:38
Сообщение #1





Группа: Участник
Сообщений: 14
Регистрация: 22-02-18
Пользователь №: 101 921



Добрый день!
Цель: заставить работать МК Atmega 8 на частоте генерируемой цифровым синтезатором частоты(AD9833). Микросхема после запуска не выдает сигнала на выходе, её нужно запрограммировать.
Предполагаемый алгоритм:
1. подключить к МК генератору тактового сигнала (в идеале - это внутренняя RC цепочка)
2. Инициализировать МК и залить код управления в микросхему-синтезатор
3. Переключить МК на другой источник тактового сигнала - микросхему синтезатор.
Вопрос: Возможно ли изменить FUSE биты, отвечающие за источник тактового сигнала в процессе выполнения кода.
Go to the top of the page
 
+Quote Post
megajohn
сообщение Feb 22 2018, 09:52
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



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.


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
Smoky
сообщение Feb 22 2018, 10:01
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 401
Регистрация: 7-05-10
Из: Оренбург
Пользователь №: 57 135



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


В Си есть библиотека для работы с fuse битами, посмотрите её возможности.
Прикрепленные файлы
Прикрепленный файл  ____3.zip ( 2 мегабайт ) Кол-во скачиваний: 13
 


--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
Go to the top of the page
 
+Quote Post
mozg12342
сообщение Feb 22 2018, 10:14
Сообщение #4





Группа: Участник
Сообщений: 14
Регистрация: 22-02-18
Пользователь №: 101 921



Цитата(megajohn @ Feb 22 2018, 09:52) *
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) *
Доходчиво, ну может попробовать синхронизировать фазу синтезатора и внешнего пускового генератора, подключить их одновременно, а потом отключить внешний генератор.

Придумал! можно все сделать за два запуска МК: при первом запуске МК будет запускаться от пускового генератора такта и прошивать синтезатор, затем реализовать схемотехнически сброс МК и одновременное переключение на другой источник такта.
Вопрос остался за fuse битами - возможно их изменить самим МК или нет. Мне для общего развития.
Go to the top of the page
 
+Quote Post
Den64
сообщение Feb 22 2018, 10:32
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 584
Регистрация: 22-11-07
Из: Курская область
Пользователь №: 32 571



Цитата(mozg12342 @ Feb 22 2018, 13:14) *
Вопрос остался за fuse битами - возможно их изменить самим МК или нет. Мне для общего развития.

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

Могу посоветовать использовать например тини13 которая будет программировать синтезатор. На цене особо не скажется, и на потреблении.
Вопрос ещё что за изврат тактировать от синтезатора? В чём идея если не секрет?
Go to the top of the page
 
+Quote Post
mozg12342
сообщение Feb 22 2018, 12:09
Сообщение #6





Группа: Участник
Сообщений: 14
Регистрация: 22-02-18
Пользователь №: 101 921



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

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

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

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

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

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

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

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

А можно заставить МК не выполнять никаких действий пару десятков тактов, для предотвращения сбоя при изменении тактовой частоты МК
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 22 2018, 12:34
Сообщение #7


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



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


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Baser
сообщение Feb 22 2018, 12:45
Сообщение #8


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



ATmega8 довольно старый контроллер. Посмотрите на новые семейства любого производителя, они все позволяют на ходу менять тактирование: внешнее, внутреннее (резонаторы, программно подстраиваемые RC-генераторы), переключать встроенные делители, PLL-и и т.д.
Go to the top of the page
 
+Quote Post
mozg12342
сообщение Feb 22 2018, 14:22
Сообщение #9





Группа: Участник
Сообщений: 14
Регистрация: 22-02-18
Пользователь №: 101 921



Какие МК вы имеете ввиду? XMega?

Всем спасибо! за полученные знания. Решил остановиться на установке дополнительного MK Attiny13
Go to the top of the page
 
+Quote Post

Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 12th July 2025 - 06:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01433 секунд с 7
ELECTRONIX ©2004-2016