У меня есть проект, который я думаю, будет лучше всего подходит для ATMega328P. Однако в каждом простом проекте, который я видел, люди всегда подключают внешний генератор на 16 МГц. Из того, что я вижу, он должен иметь внутренний генератор 8 МГц. Мой проект не требует большой вычислительной мощности, и при этом время не должно быть очень точным (кроме как для UART и I2C). У меня также есть программист, поэтому мне не нужно беспокоиться о загрузчиках.
Есть ли причина для меня использовать внешний генератор?
источник
Поскольку вы используете UART, рекомендуется использовать кварцевый генератор. Если бы не это, вы могли бы использовать внутренний генератор. Некоторые микроконтроллеры имеют встроенные на заводе внутренние генераторы, которые могут быть пригодны для работы UART.
источник
«Не чувствителен ко времени». UART очень чувствителен ко времени. Вы получите полный мусор, если он не синхронизирован должным образом.
Вариант 1. Используйте обычный кристалл. Измените часы, выберите предохранитель соответствующим образом. Выбор кристалла зависит от того, какую скорость передачи вы хотите использовать / как быстро вы хотите, чтобы эта вещь шла. Есть «магические кристаллы», которые дают вам 0% погрешности для стандартных ставок (если они изготовлены идеально). См. Таблицы в Разделе 20 [USART0] для получения дополнительной информации (вы прочитали таблицу ... правильно ???) :).
Вариант 2: Вы можете откалибровать внутренний генератор, используя кристалл 32 кГц, если вам нужна мощность. С 32 кГц вы можете получить токи uA в спящем режиме (я уменьшил их до ~ 2 мкА). Вы должны настроить процедуру калибровки, которая включает в себя запуск / останов таймеров и переключение таймера 2 в асинхронный режим.
Код 328P может отличаться ... эта функция в настоящее время работает на 48/88 (с соответствующими определениями F_CPU / бод. Это немного некрасиво / не полностью переработано, но я научился лучше, чем разбираться с вещами, которые работают, когда вы в срок. Найдите на форуме AVRFreaks "tune 32khz crystal" что-то в этом роде. Это всего лишь вкус к тому, что вы получите ... Не обязательно, что сработает.
источник
Следует также отметить, что запуск кристалла занимает много времени. Это на самом деле из-за его точности: он берет энергию только из очень узкой полосы частот. Это может быть обременительным для батарей, когда вы время от времени просыпаете mcu на очень короткое время: ожидание мс при полном энергопотреблении для запуска кристалла - это чистая потеря. Керамические резонаторы более точны, чем внутренний RC-генератор, но меньше, чем кристалл, и запускаются соответственно.
Конечно, atmega 16 МГц пьет намного больше сока и требует более высокого напряжения, чем 8 МГц, но доступны кристаллы 8 МГц (или ниже, вплоть до 32 кГц); этот простой выбор также может быть энергосберегающим.
источник
Если вам не нужно много или точное время, вам не нужен внешний генератор. Разбирая некоторые старые принтеры, я вижу много микросхем, но ни одного генератора на борту.
источник
Я думаю, вы уже видели это примечание к приложению: AVR053: Калибровка внутреннего RC генератора .
Я полагаю из этого, и из примечания к приложению из комментария @drxzcl выше, вы сможете теоретически решить, что правильно.
источник