Меню

Атмега от внутреннего генератора

Про Ардуино и не только

воскресенье, 30 декабря 2018 г.

Тактирование Ардуино от внутреннего RC-генератора

Содержание

Что нужно знать о тактировании AVR микроконтроллеров

AVR микроконтроллеры способны работать с различными источниками тактового сигнала. Это может быть внешний резонатор, RC-цепочка (внутренняя или внешняя), а так же внешний сигнал синхронизации. Источник тактирования выбирается исходя из требований к устройству. Так для построения точных микроконтроллерных систем следует использовать внешние кварцевые или керамические резонаторы, так как они обладают высокой стабильностью и не чувствительны к изменениям температуры. В этом плане им уступают генераторы на основе времязадающей RC-цепочки: они менее стабильны и чувствительны к изменениям температуры и напряжения. С другой стороны внутренний RC-генератор присутствует практически во всех AVR микроконтроллерах и его использование будет наиболее простым и экономичным решением в системах, не предъявляющих высоких требований к стабильности тактового сигнала.

Настройка микроконтроллера на работу с тем или иным источником тактового сигнала осуществляется установкой конфигурационных битов (фьюзов) при помощи программатора. Применительно к нашей ситуации установка фьюзов происходит при выполнении команды «Записать загрузчик» из меню IDE Ардуино, значения фьюзов берутся из файла boards.txt. Он же отвечает за добавление новых пунктов в меню Инструменты. Поэтому доработка IDE Ардуино для добавления в нее меню выбора частоты начинается с редактирования файла boards.txt

Редактирование файла boards.txt

Перейдите в каталог Arduino_dir\hardware\arduino\avr\, где Arduino_dir — это каталог, в который установлена среда разработки Ардуино. У меня этот путь выглядит так: d:\Arduino\arduino-1.6.12\hardware\arduino\avr\. Перед внесением изменений в файл boards.txt я рекомендую сделать его резервную копию. Теперь открываем файл boards.txt в текстовом редакторе (подойдет notepad++ или другой, поддерживающий кодировку UTF-8, чтобы не было проблем с отображением русских букв в IDE Ардуино) и добавляем в него строку menu.clock=Тактирование

Затем находим секцию для Ардуино Уно (я опишу порядок действий применительно к Ардуино Уно, но таким же образом можно скорректировать секции других плат с поправкой на микроконтроллер):

Здесь нужно добавить наше подменю для выбора источника тактирования и частоты. Для этого сперва удалим строки, определяющие:

  1. скорость загрузки — uno.upload.speed;
  2. значения фьюзов — uno.bootloader.low_fuses, .high_fuses, .extended_fuses;
  3. имя файла загрузчика — uno.bootloader.file;
  4. частоту микроконтроллера — uno.build.f_cpu.

Эти параметры мы перенесем в подменю, в основной же секции останутся только общие параметры. Ниже приведен фрагмент, добавляющий подменю выбора источника тактирования, вставьте его в свой файл.

uno.menu.clock.external16=Внешний резонатор 16МГц
uno.menu.clock.external16.upload.speed=115200
uno.menu.clock.external16.bootloader.low_fuses=0xFF
uno.menu.clock.external16.bootloader.high_fuses=0xDE
uno.menu.clock.external16.bootloader.extended_fuses=0xFF
uno.menu.clock.external16.bootloader.file=optiboot/optiboot_atmega328.hex
uno.menu.clock.external16.build.f_cpu=16000000L

uno.menu.clock.internal8=Внутренний RC-генератор 8МГц
uno.menu.clock.internal8.upload.speed=57600
uno.menu.clock.internal8.bootloader.low_fuses=0xE2
uno.menu.clock.internal8.bootloader.high_fuses=0xDE
uno.menu.clock.internal8.bootloader.extended_fuses=0xFF
uno.menu.clock.internal8.bootloader.file=optiboot/optiboot_atmega328_8.hex
uno.menu.clock.internal8.build.f_cpu=8000000L

uno.menu.clock.internal1=Внутренний RC-генератор 1МГц
uno.menu.clock.internal1.upload.speed=4800
uno.menu.clock.internal1.bootloader.low_fuses=0x62
uno.menu.clock.internal1.bootloader.high_fuses=0xDE
uno.menu.clock.internal1.bootloader.extended_fuses=0xFF
uno.menu.clock.internal1.bootloader.file=optiboot/optiboot_atmega328_1.hex
uno.menu.clock.internal1.build.f_cpu=1000000L

Для наглядности я приведу скриншот моего файла boards.txt, каким он был и каким стал после выполнения описанных изменений:

Таким образом мы описали меню из трех пунктов, для каждого из них указали скорость загрузки скетчей, значения фьюзов, имя файла загрузчика (об этом чуть позже) и частоту микроконтроллера. При помощи онлайн калькулятора вы можете расшифровать приведенные значения фьюзов и увидеть, как происходит выбор источника тактирования. И что для получения тактовой частоты 1МГц при работе от внутреннего RC-генератора используется деление частоты на 8 (фьюз CKDIV8).

Читайте также:  Масло для инверторного генератора хонда

Сохраните файл в кодировке UTF-8 без BOM и запустите IDE. Если все сделано правильно, то при выборе платы Arduino Uno вам станет доступно меню Инструменты->Тактирование. Но этих изменений пока еще мало. Если сейчас выбрать в меню, например, Внутренний RC-генератор 8МГц и выполнить запись загрузчика, то новые значения фьюзов, конечно, запишутся в микроконтроллер и он начнет работать с внутренним RC-генератором. Но мы потеряем возможность загружать в Ардуино новые скетчи, потому что записанный в нее загрузчик рассчитан на частоту 16МГц. Выход — скомпилировать загрузчик для работы на частотах 8МГц и 1МГц. Если у вас нет желания заморачиваться с компиляцией загрузчика, то можете скачать уже скомпилированные файлы отсюда, поместить их в каталог Arduino_dir\hardware\arduino\avr\bootloaders\optiboot\ и перейти к пункту Изменение частоты и источника тактирования Ардуино. А кому интересно могут скомпилировать их самостоятельно. О том как это сделать описано далее.

Что такое Optiboot

Optiboot — это загрузчик для AVR микроконтроллеров, созданный Питером Найтом (Peter Knight). В его основу легли труды нескольких разработчиков и групп (Jason P. Kyle, Arduino group, Spiff , AVR-Libc group, Ladyada), впоследствии он значительно развился. Загрузчик получился настолько удачным, что компания-разработчик Ардуино стала использовать его в своей плате Ардуино Уно. С недавнего времени Optiboot является официальным загрузчиком и для других плат на базе ATmega328p (Нано, Мини). По сравнению с использовавшимся в них старым загрузчиком Optiboot обладает рядом преимуществ:

  • занимает всего 512 байт, освобождая 1,5кб для программ пользователя;
  • значительно быстрее выполняет загрузку скетчей;
  • поддерживает альтернативные серийные порты, скорости загрузки и частоты микроконтроллера.

С 2011 года поддержкой Optiboot занимается Билл Вестфилд (Bill Westfield). Это самостоятельный проект, не финансируемый какими-либо организациями.

Источник

Атмега от внутреннего генератора

в мегу 168 ошибочно вшиты фьюзы SUT0 и SKSEL1, таким образом имеем Ext. Crystal Osc., Frequency 3.0-8.0 MHz .
по этому источнику.. http://www.engbedded.com/fusecalc/

на выходах Xtal висит кварц на 7,3728 МГц.

Вычитал что можно с внешнего кварцевого генератора подать тактовый сигнал.
вопросы:
1. куда подавать сигнал? на XTAL1 или на XTAL2 или и туду и туда?
2. какой генератор покупать? (никогда с ними дела не имел).
3. частота генератора настраиваемая, т.е. к ниму нужно будет делать обвеску?
4. Кварцевый резонатор при пождключении генератора нужно полностью отключать вместе с конденсаторами (22пФ)?
.

Друг Кота

Карма: 7
Рейтинг сообщений: 91
Зарегистрирован: Пн июл 13, 2009 14:37:39
Сообщений: 3952
Откуда: Московская область, наукоград.
Рейтинг сообщения: 0

_________________
Загружая на вход компьютера «мусор», на выходе получим «мусор^32».
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap. не спрашивайте даже

JLCPCB, всего $2 за прототип печатной платы! Цвет — любой!

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/cwc

т.е. просто вибратор?
на логике вибратор 3-8МГЦ норм давать будет?
я про не555 посмотрел — там граница 1МГц гдето,
а как я понимаю, если фьюзы установлены на 3,0-8,0 — то нужно чтото среднее, т.е. не меньше 3 и не больше 8МГц. ?

так он уже стоит.
сорри, не понял. значит кварцевый резонатор на 7,3728МГц не трогать, а внешним генератором подключиться к Кстал1 и всё??

прост платка маленькая под TQPF32 корпус, дорожки мелкие, ковірять сложно. ((

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Читайте также:  Генератор идей для ютуб канала
Прорезались зубы

Зарегистрирован: Вт ноя 10, 2009 22:37:24
Сообщений: 249
Откуда: Латвия, Рига
Рейтинг сообщения: 0

_________________
Если не трудно, то отвечайте мне названиями буржуйских схем.

Вебинар пройдет 16/09/2021 и будет посвящен особенностям работы высокопроизводительных микроконтроллеров из линеек STM32H7. На вебинаре разберем ключевые особенности линеек STM32H72/3 и проведем практическую работу с оценкой производительности с использованием ускорителей и кэш-буфера при чтении инструкций из внутренней и из зашифрованной внешней памяти. Для отображения результатов будет использоваться программная среда STM32CubeMonitor.

Друг Кота

Карма: 7
Рейтинг сообщений: 91
Зарегистрирован: Пн июл 13, 2009 14:37:39
Сообщений: 3952
Откуда: Московская область, наукоград.
Рейтинг сообщения: 0

_________________
Загружая на вход компьютера «мусор», на выходе получим «мусор^32».
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap. не спрашивайте даже

TE Connectivity представила обновленную линейку соединителей серии Power Versa-Lock – надежное и герметичное решение, рассчитанное на ток до 15 А, в компактном корпусе. Корпус и аксессуары соединительной системы Power Versa-Lock выполнены из материала, соответствующего стандарту UL94-V0.

Потрогал лапой паяльник

Зарегистрирован: Вт сен 11, 2007 10:27:08
Сообщений: 335
Откуда: Киев
Рейтинг сообщения: 0

Еще проще — найди девайс с кварцем, с любой ноги которого (кварца) пусти на XTAL1 твоего МК.

есть тинька 2313, и кварц 4мгц, если к ней прицепить кварц и прошить на внешний резонатор, програма естественно может не работать, а в целом, получится?

кстати, разъясните пожалуйста по фьюзам:
допустим на тини2313 есть такие варианты
Ext. Clock.
Int. RC Osc. .
Ext. Crystal Osc. .

первое — это внешний РЕЗОНАТОР?
второе — внутренний рц генератор
третье — внешний ГЕНЕРАТОР?

в случае с атмегой 168 варианты такие:
Ext. Clock.
Int. RC Osc. .
Ext. Low-Freq. Crystal .
Ext. Full-swing Crystal .
Ext. Crystal Osc. .

Что здесь что? для внешнего кварцевого РЕЗОНАТОРА что нужно выбирать??

Потрогал лапой паяльник

Зарегистрирован: Вт сен 11, 2007 10:27:08
Сообщений: 335
Откуда: Киев
Рейтинг сообщения: 0

Получится. У Вас дома нет ничего работающего от кварца? Да полюбому есть. Любой девайс с подходящей частотой кварца.

кстати, разъясните пожалуйста по фьюзам:
допустим на тини2313 есть такие варианты
Ext. Clock.
Int. RC Osc. .
Ext. Crystal Osc. .

первое — это внешний РЕЗОНАТОР?
второе — внутренний рц генератор
третье — внешний ГЕНЕРАТОР?

первое с третьим местами поменять.

в случае с атмегой 168 варианты такие:
Ext. Clock.
Int. RC Osc. .
Ext. Low-Freq. Crystal .
Ext. Full-swing Crystal .
Ext. Crystal Osc. .

Что здесь что? для внешнего кварцевого РЕЗОНАТОРА что нужно выбирать??

Последние три, в зависимости от резонатора (керамика там или кварц) в зависимости от частоты и стартового времени размаха амплитуды. (по даташитам).

__Alexander
вы меня поставили в тупик!
если «Ext. Crystal Osc. » это внешний РЕЗОНАТОР, тогда почему мк потерялось? ведь на ксталах висит именно внешний кварцевый резонатор? (читать первый пост).
((

всеже, Осцилятор — это по русски генератор?

Читайте также:  Генератор серийных номеров для неро
Потрогал лапой паяльник

Зарегистрирован: Вт сен 11, 2007 10:27:08
Сообщений: 335
Откуда: Киев
Рейтинг сообщения: 0

Потерялось, возможно потому, что вшив SUT0 и CKSEL1 вы не обратили внимание на остальные биты этих регистров. И есть еще одна распространенная ошибка, галка стоит — значит 0, галка снята — 1.

осцилятор по русски осцилятор, а генератор по русски генератор.

эх, да..
почитал даташит (как всегда после того как..)

ну и, судя по всему я правильно галки поставил. это что касается частоты и типа резонатора

теперь вопрос в следующем: перед прошивкой я снял галку с CKDIV8.
это делитель системной частоты
т.е., учитывая что

то, например, для выполнения программы частота может быть слишком большой, но влияет ли это на возможность програмирования??

и поможет ли внешний генератор? или что делать?

sbi PORTB,0
cbi PORTB,0
rjmp PC-2

Спасибо всем за поддержку!
С внешним тактированием обязательно попробую!

Вот утром пока ехал на работу, всё думал, и изучение даташита — всётаки это не бесполезная трата времени! )))

Я вспомнил, что по схеме, емкость конденсаторов была указана как «22nФ», что естественно понялось как 22 НАНО Фарада, . вот .

В даташите же,

Frequency Range____________Recommended Range for
(MHz)_____ C1 and C2 (pF)

3.0 — 8.0_________________________12 — 22

т.е., у меня емкость кондеров в ТЫСЧУ раз больше.
кроме того, скелами/сутами установлена конфигурация с нулевой задержкой на генерацию.

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

Нашел транзистор. Понюхал.

Зарегистрирован: Пн мар 02, 2009 12:23:37
Сообщений: 169
Рейтинг сообщения: 0

_________________

а разницы нет, что мк ожидает тактовую именно 3-8МГц ?? ведь фьюзами выставлено именно столько..
Или это будет влиять только на выполнение программы?

Потрогал лапой паяльник

Зарегистрирован: Вт сен 11, 2007 10:27:08
Сообщений: 335
Откуда: Киев
Рейтинг сообщения: 0

Влияет на максимальную скорость прошивки. Минимальная хоть импульс в час.

Уррраааа. ))) Заработало. )))

Купил сегодня конденсаторы 22pF, перепаял, и сразу всё работает красиво!

Извините что морочил голову с внешним тактовым.
Но зато узнал много нового!
Всем спасибо.

Прорезались зубы

Зарегистрирован: Вт ноя 10, 2009 22:37:24
Сообщений: 249
Откуда: Латвия, Рига
Рейтинг сообщения: 0

20КГц. Они не подружились. Почему?

_________________
Если не трудно, то отвечайте мне названиями буржуйских схем.

Страница 1 из 2 [ Сообщений: 23 ] На страницу 1 , 2 След.

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Источник

Adblock
detector