Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Программно определить частоту работы
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
athlon64
Существует некоторое устройство на Atmega328, работающее от кварца 8МГц, возникла необходимость увеличить частоту до 12 МГц. Поменяли кварц и коэффициенты таймеров, I2C, SPI. Под другой кварц приходится делать отдельную версию прошивки, а этого очень бы не хотелось.

Наверное многие сталкивались, возможно ли на атмеге при инициализации программно определить частоту, на которой она запустилась и соответствующим образом изменить коэффициенты
777777
Цитата(athlon64 @ Jul 14 2011, 09:36) *
Наверное многие сталкивались, возможно ли на атмеге при инициализации программно определить частоту, на которой она запустилась и соответствующим образом изменить коэффициенты

Только если у него есть доступ к некой эталонной частоте. Иначе никак.
swisst
добавить перемычку на плату и паять ее в случае с 12 МГц кварцем - процессором проверять состояние:
- замкнута - 12 МГц
- разомкнута - 8 МГц
haker_fox
QUOTE (athlon64 @ Jul 14 2011, 14:36) *
Наверное многие сталкивались, возможно ли на атмеге при инициализации программно определить частоту, на которой она запустилась и соответствующим образом изменить коэффициенты

Честно говоря, не сталкивался) Точные интервалы формировал таймерами. Их настраивал для конкретной аппаратной платформы...
Sergey_Aleksandrovi4
Эталонная частота есть, это WatchDog с собственным генератором.
1. При старте запускаете например ТС1.
2. Сразу же пускаете WatchDog. У него свой осциллятор. WatchDog настроить не на Reset, а на прерывание.
3. В прерывании по срабатыванию WatchDog прочитать счётный регистр TC1 и произвести вычисление.
4. Complete
Главное чтобы TC1 не успел переполнится за период срабатывания WatchDog.
athlon64
Цитата(Sergey_Aleksandrovi4 @ Jul 14 2011, 15:59) *
Эталонная частота есть, это WatchDog с собственным генератором.
1. При старте запускаете например ТС1.
2. Сразу же пускаете WatchDog. У него свой осциллятор. WatchDog настроить не на Reset, а на прерывание.
3. В прерывании по срабатыванию WatchDog прочитать счётный регистр TC1 и произвести вычисление.
4. Complete
Главное чтобы TC1 не успел переполнится за период срабатывания WatchDog.

Вот спасибо!
Попробовали, работает автоопределение
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.