RSS блога
Подписка
Внешний кварц на 20 МГц - HC-49S - для Ардуино: как разогнать...
- Цена: $1.29
- Перейти в магазин
Как известно, максимальная заявленная частота работы микроконтроллера Atmega — 20 МГц, однако, готовые платы Ардуино с такими кварцами не попадались — и я решил попробовать заменить на одной плате имеющийся внешний кварцевый резонатор 16МГц на другой, рассчитанный на 20
Начну пафосно, с азов!
Говоря о цифровой технике, первое, что приходит на ум — это биты: 0 и 1, физически им соответствуют уровни напряжений, например напряжение ниже 1 вольт — это логический ноль, а больше — логическая единица.
Элементы, составляющие микроконтроллер (процессор) выполняют свои операции при изменении состояния тактирующего сигнала (по фронту или по спаду). То есть, чтобы счётчик, на вход которого подали значение «5» сформировал на выходе значение «6», нужно на его специальном контакте «CLK» изменить напряжение со значения, большего, чем 1В на значение меньшее (или наоборот). Его вход можно соединить с выходом, и, если изначально на него мы подавали значение «5», значение «7» на выходе получится только после двух изменений сигнала контакта «CLK». Эти изменения называются «синхроимпульсами», чем чаще они приходят — тем быстрее работает всё устройство.
Поэтому иногда полезно увеличить частоту генератора синхроимпульсов — кварца, в данном случае; но всякая микросхема имеет свой предел частоты и чем выше частота от заявленной — тем больше вероятность получить сбой.
20МГц — это не предел, разгоняют и до 32. Тема, конечно, интересная, но рисковать и покупать что-то для аппаратного апгрейда я не решался, пока мне не предложили кварц бесплатно «за обзор».
За одним, разберемся, как программировать микроконтроллер ISP-программатором (или SPI?). Зачем? А просто так! В ряде случаев, при замене внешнего кварца, можно обойтись без ISP-программатора! Это если устройство полностью готово и оно не будет работать с величинами, так или иначе связанными со временем.
Заявлено:
проглатывает короче, позволяет перепрограммировать память программы контроллера.
Мелкие микросхемы (типа attiny) с ограниченными ресурсами не используют загрузчик — и серьёзные дядьки шьют их по SPI-интерфейсу: у него уже для пиёма и передачи используется 5 проводков, но огромное преимущество — ведущее устройство тактирует ведомое, таким образом, не нужно согласовывать синхроимпульсы… Стоп! А что что такое здесь синхроимпульсы… Те же самые импульсы!
Так вот, привязка частоты микроконтроллера ко времени происходит полностью программно. Когда мы заливаем скетч, выбираем название контроллера и его частоту, например: Atmega328 (3.3V 8MHz) — и Среда Разработки, компилирует код так, чтобы при вызове функции delay() проходило количество тактов, которое на выбранной частоте соответствует заданному количеству секунд; затем, прошивает через UART, тактируя его так, чтобы на другой стороне кабеля загрузчик, работающий на частоте 8МГц, успевал прнимать данные, передающиеся со стандартным бодрейтом. Бодрейт же связан со временем, поэтому если Среда не будет знать частоту, то не сможет сформировать корректный бодрейт для загрузчика.
Нельзя сохранить в какую-то ячейку памяти контроллера её величину — и получить ту же программу, что была раньше. При замене кварца, если Вы работаете со временем, нужно перекомпилировать программу с учётом частоты нового кварца — и только после этого она будет работать синхронно с часами.
Беда!
Прошить по UART после замены кварца не получится.
При работе с другими устройствами по UART будет погрешность, не заметная на низких скоростях.
Функции delay(), millis(), micros() будут работать неправильно ;(
Получится только работать с пассивной периферией и, да, скорость работы возрастёт! Термретр и флешка будут шустрее, но датчик расстояния будет врать.
Как быть?
Если нет ISP-программатора, контроллер не работает со временем и пошить всё-таик хочется, прежде, чем менять кварц, нужно хорошо оттестировать — и только потом прошивать.
Если есть ISP-программатор, — прошить по нему и. В случае последующей необходимости шить по UART, нужно пересобрать и перезалить загрузчик. Это вполне реальная процедура — homes-smart.ru/index.php/oborudovanie/arduino/avr-zagruzchik
Ардуино-программатор прошиваем скетчем из примера:
Затем соединяем выводы с той, которую мы будем программировать по SPI следующим образом
Качаем программу Avrdude — это консольная утилита и она входит в дистрибутив Среды Ардуино, лежит в папке hardware\tools\avr\bin но там нет файлика avrdude.conf, в котором содержится информация для работы с платами.
Открываем командную строку в папке с avrdude.exe и выполняем:
atmega168 — программируемый контроллер;
COM5 — нормер порта, обычно другой;
19200 — бодрейт взаимодействия с программатором, также меняется в коде программатора, который мы заливали выше;
lfuse, hfuse, efuse — названия флагов конфигурации контроллера, отвечающих за его поведение;
:r: — признак того, что мы читаем (еще можно записывать и выполнять);
*.hex — имена файликов;
:h — формат, в котором будут записаны фьюзы в файлики!
После, в папке появятся файлы, открываем их и «Калькулятор фьюзов AVR». Можно было поискать GUI-программку, которая через COM-порт, но лично у меня ни одна не заработала.
Калькулятор мне понравился этот или этот. Выбираем микроконтроллер, копируем значения фьюз из файликов, они там в 16-ричном виде, поэтому в команде было :h, хотя для удобства ручной работы, было бы удобно писать :b — получать двоичные данные и побитово их анализировать.
Смотрим — в калькуляторе, по мере ввода значений фьюз слева, изменяются значения полей. У меня получилось так:
В открывающимся списке видим, что кроме нашей частоты — частоты внешнего кварца, можно выбрать многое другое:
Например, этот вариант освобождает от потребности во внешнем источнике синхроимпульсов, используя внутренний на 8МГц. При изменении полей калькулятора, значения фьюзов слева изменяются, — у меня LOW стал E2.
Если выполнить команду
то запишется lfuse, в результате чего контроллер начнет работать на частоте 8МГц — и, при программировании его через UART, нужно будет выбирать такую частоту.
меня нае кварц соответствует заявленным двадцати мегагерцам, я залил скетч Blink из примеров в контроллер, пока тот был настроен на 16 Мгц и записал несколько видеороликов с частотой 30 кадров в секунду:
1) изменяя фьюзы на 8МГц;
2) используя стандартный кварц на 16МГц;
3) перепаяв его на новый МГц.
После синхронизации начала зажигания светодиода в каждом видеоряде, наложил их:
на глаз видно, что раз в секунду мигает светодиод только в среднем примере. Для более точного определения первого включения светодиода, соответствующего одной секунде, можно рассмотреть тайминги видеорядов:
С новым кварцем мигает чаще!
Почему под спойлером? — Потому что не обязательно.
Скачиваем по ссылке файлик, смотрим на команду Прошивка через Arduino… Фьюзы лично я не перезаписывал:
А то вдруг запорятся… Ковай! Вот и всё: можно перепаивать внешений кварц!
Загрузчик мы прошили, теперь нужно настроить Среду Ардуино для корректной компиляции времени зависимых функций. Для этого, нужно скопировать Блок файла boards.txt для Arduino IDE в файлик, но! Атата! Новая Среда работает не так, как старая, и с ней не получется! Нужно качать «былую», 1.0.5 вполне подходит, файл находится в папке hardware\arduino, копируем туда строки, запускаем среду, выбираем тотже пример Blink, открываем меню — и видем там — Ура! — наш контроллер на 20 мегагерц!!!
Прошивается обычным программатором успешно, работает синхронно со временем, и корректно по UART-интерфейсу!
Спокойной ночи и точных Вам синхроимпульсов!
Хорошая статья на эту тему, чтобы не путаться в понятиях.
п.с. А ещё говорят, что и на 30 МГц нормально разгоняется!
Начну пафосно, с азов!
Говоря о цифровой технике, первое, что приходит на ум — это биты: 0 и 1, физически им соответствуют уровни напряжений, например напряжение ниже 1 вольт — это логический ноль, а больше — логическая единица.
Элементы, составляющие микроконтроллер (процессор) выполняют свои операции при изменении состояния тактирующего сигнала (по фронту или по спаду). То есть, чтобы счётчик, на вход которого подали значение «5» сформировал на выходе значение «6», нужно на его специальном контакте «CLK» изменить напряжение со значения, большего, чем 1В на значение меньшее (или наоборот). Его вход можно соединить с выходом, и, если изначально на него мы подавали значение «5», значение «7» на выходе получится только после двух изменений сигнала контакта «CLK». Эти изменения называются «синхроимпульсами», чем чаще они приходят — тем быстрее работает всё устройство.
Поэтому иногда полезно увеличить частоту генератора синхроимпульсов — кварца, в данном случае; но всякая микросхема имеет свой предел частоты и чем выше частота от заявленной — тем больше вероятность получить сбой.
20МГц — это не предел, разгоняют и до 32. Тема, конечно, интересная, но рисковать и покупать что-то для аппаратного апгрейда я не решался, пока мне не предложили кварц бесплатно «за обзор».
За одним, разберемся, как программировать микроконтроллер ISP-программатором (или SPI?). Зачем? А просто так! В ряде случаев, при замене внешнего кварца, можно обойтись без ISP-программатора! Это если устройство полностью готово и оно не будет работать с величинами, так или иначе связанными со временем.
Итак, описание товара.
Товар был доставлен вместе с другими, обзоры на которые Вы уже успели полюбить. Прилетел за две недели и пролежал еще неделю в Столице из-за праздников. Упакован, почему-то в два пакетика:Заявлено:
Tolerance: ±20ppm
Frequency: 20.000MHz
AvrISP
Обычно для прошивки Ардуино используется UART-интерфейс, для передачи данных по нему в оба конца достаточно четыре провода, но требуется согласования частот на обоих устройствах. Стандартно, на платах Ардуино в микроконтроллер прошит загрузчик, который при загрузке (после Ресета) проверяет, не хочет ли его иметь Среда Разработки с компьютера по через последовательный адаптер? И, если так,Мелкие микросхемы (типа attiny) с ограниченными ресурсами не используют загрузчик — и серьёзные дядьки шьют их по SPI-интерфейсу: у него уже для пиёма и передачи используется 5 проводков, но огромное преимущество — ведущее устройство тактирует ведомое, таким образом, не нужно согласовывать синхроимпульсы… Стоп! А что что такое здесь синхроимпульсы… Те же самые импульсы!
Так вот, привязка частоты микроконтроллера ко времени происходит полностью программно. Когда мы заливаем скетч, выбираем название контроллера и его частоту, например: Atmega328 (3.3V 8MHz) — и Среда Разработки, компилирует код так, чтобы при вызове функции delay() проходило количество тактов, которое на выбранной частоте соответствует заданному количеству секунд; затем, прошивает через UART, тактируя его так, чтобы на другой стороне кабеля загрузчик, работающий на частоте 8МГц, успевал прнимать данные, передающиеся со стандартным бодрейтом. Бодрейт же связан со временем, поэтому если Среда не будет знать частоту, то не сможет сформировать корректный бодрейт для загрузчика.
Нельзя сохранить в какую-то ячейку памяти контроллера её величину — и получить ту же программу, что была раньше. При замене кварца, если Вы работаете со временем, нужно перекомпилировать программу с учётом частоты нового кварца — и только после этого она будет работать синхронно с часами.
Беда!
Прошить по UART после замены кварца не получится.
При работе с другими устройствами по UART будет погрешность, не заметная на низких скоростях.
Функции delay(), millis(), micros() будут работать неправильно ;(
Получится только работать с пассивной периферией и, да, скорость работы возрастёт! Термретр и флешка будут шустрее, но датчик расстояния будет врать.
Как быть?
Если нет ISP-программатора, контроллер не работает со временем и пошить всё-таик хочется, прежде, чем менять кварц, нужно хорошо оттестировать — и только потом прошивать.
Если есть ISP-программатор, — прошить по нему и. В случае последующей необходимости шить по UART, нужно пересобрать и перезалить загрузчик. Это вполне реальная процедура — homes-smart.ru/index.php/oborudovanie/arduino/avr-zagruzchik
ISP-программатор
Можно купить или сделать из другой Ардуино. «Другая Ардуино будет программатором: с ней мы работаем по UART», а она с той, у которой мы меняем кварц — по SPI. Кстати «SPI» и «ISP» расшифровываются по-разному, но в данной конкретной теме означают одно и то же.Ардуино-программатор прошиваем скетчем из примера:
Затем соединяем выводы с той, которую мы будем программировать по SPI следующим образом
[Ардуино-программатор]
10 RST
11 11
12 12
13 13
VCC VCC
GND GND
[Ардуино программируемый]
То есть, вывод 10 — это ресет, 11-13 одноимённые и питание.Качаем программу Avrdude — это консольная утилита и она входит в дистрибутив Среды Ардуино, лежит в папке hardware\tools\avr\bin но там нет файлика avrdude.conf, в котором содержится информация для работы с платами.
Фьюзы
Далее, если не в курсе, что это, читаем статью о фьюзах Ардуино, например эту.Открываем командную строку в папке с avrdude.exe и выполняем:
avrdude -p atmega168 -c arduino -P COM5 -b 19200 -U lfuse:r:lfuse.hex:h -U hfuse:r:hfuse.hex:h -U efuse:r:efuse.hex:h
гдеatmega168 — программируемый контроллер;
COM5 — нормер порта, обычно другой;
19200 — бодрейт взаимодействия с программатором, также меняется в коде программатора, который мы заливали выше;
lfuse, hfuse, efuse — названия флагов конфигурации контроллера, отвечающих за его поведение;
:r: — признак того, что мы читаем (еще можно записывать и выполнять);
*.hex — имена файликов;
:h — формат, в котором будут записаны фьюзы в файлики!
После, в папке появятся файлы, открываем их и «Калькулятор фьюзов AVR». Можно было поискать GUI-программку, которая через COM-порт, но лично у меня ни одна не заработала.
Калькулятор мне понравился этот или этот. Выбираем микроконтроллер, копируем значения фьюз из файликов, они там в 16-ричном виде, поэтому в команде было :h, хотя для удобства ручной работы, было бы удобно писать :b — получать двоичные данные и побитово их анализировать.
Смотрим — в калькуляторе, по мере ввода значений фьюз слева, изменяются значения полей. У меня получилось так:
В открывающимся списке видим, что кроме нашей частоты — частоты внешнего кварца, можно выбрать многое другое:
Например, этот вариант освобождает от потребности во внешнем источнике синхроимпульсов, используя внутренний на 8МГц. При изменении полей калькулятора, значения фьюзов слева изменяются, — у меня LOW стал E2.
Если выполнить команду
avrdude -p atmega168 -c arduino -P COM5 -b 19200 -U lfuse:w:0xE2:m
то запишется lfuse, в результате чего контроллер начнет работать на частоте 8МГц — и, при программировании его через UART, нужно будет выбирать такую частоту.
Проверка, сравнение
Чтобы выяснить, действительно ли1) изменяя фьюзы на 8МГц;
2) используя стандартный кварц на 16МГц;
3) перепаяв его на новый МГц.
После синхронизации начала зажигания светодиода в каждом видеоряде, наложил их:
на глаз видно, что раз в секунду мигает светодиод только в среднем примере. Для более точного определения первого включения светодиода, соответствующего одной секунде, можно рассмотреть тайминги видеорядов:
С новым кварцем мигает чаще!
Работа с программатором
Ну а если Вы, по тем или иным причинам, утратили контроль над частотой, например, купили чистый Atmega или, как я, сначала перепаяли кварц, а потом решили прошить, то открываем Среду Ардуинои выбираем нужный скетч, затем, не забывая, что по UART у нас Ардуино-пограмматор, а у него по SPI-Ардуино-жертва, выбираем правильный тип программатора:
или AVRISP
Затем выбираем, как всегда, выбираем тип платы; если выбрать неправильно, то потом в консоли увидим что-то похожее:
И заливаем прошивку, но не как всегда а «через программатор»:
Ctrl+Shift+U! — И плата прошивается, но без учета кварца.
или AVRISP
Затем выбираем, как всегда, выбираем тип платы; если выбрать неправильно, то потом в консоли увидим что-то похожее:
avrdude: Expected signature for ATmega328P is 1E 95 0F
Double check chip, or use -F to override this check.
Найден неправильный микроконтроллер. Вы указали правильную плату в меню Инструменты -> Плата?
.И заливаем прошивку, но не как всегда а «через программатор»:
Ctrl+Shift+U! — И плата прошивается, но без учета кварца.
Настройка компилятора
Для использования с Ардуино внешнего кварца, нужно изменять загрузчик и опции компилятора, чтобы они работали синхронно. Вернёмся к Конструктору загрузчика, ссылку на который я уже указывал. Вводим свои данные — а именно Внешний кварц, 20000000 Гц и модель контроллера — получаем результат:Скачиваем по ссылке файлик, смотрим на команду Прошивка через Arduino… Фьюзы лично я не перезаписывал:
CMD
>avrdude -c avrisp -P COM5 -b 19200 -p atmega168 -U flash:w:a168_20MHz_ff_de_4.hex
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.03s
avrdude: Device signature = 0x1e9406 (probably m168)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "a168_20MHz_ff_de_4.hex"
avrdude: input file a168_20MHz_ff_de_4.hex auto detected as Intel Hex
avrdude: writing flash (16374 bytes):
Writing | ################################################## | 100% 0.02s
avrdude: 16374 bytes of flash written
avrdude: verifying flash memory against a168_20MHz_ff_de_4.hex:
avrdude: load data flash data from input file a168_20MHz_ff_de_4.hex:
avrdude: input file a168_20MHz_ff_de_4.hex auto detected as Intel Hex
avrdude: input file a168_20MHz_ff_de_4.hex contains 16374 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 0.01s
avrdude: verifying ...
avrdude: 16374 bytes of flash verified
avrdude: safemode: Fuses OK (E:FC, H:DD, L:FF)
avrdude done. Thank you.
Загрузчик мы прошили, теперь нужно настроить Среду Ардуино для корректной компиляции времени зависимых функций. Для этого, нужно скопировать Блок файла boards.txt для Arduino IDE в файлик, но! Атата! Новая Среда работает не так, как старая, и с ней не получется! Нужно качать «былую», 1.0.5 вполне подходит, файл находится в папке hardware\arduino, копируем туда строки, запускаем среду, выбираем тотже пример Blink, открываем меню — и видем там — Ура! — наш контроллер на 20 мегагерц!!!
Прошивается обычным программатором успешно, работает синхронно со временем, и корректно по UART-интерфейсу!
Спокойной ночи и точных Вам синхроимпульсов!
Хорошая статья на эту тему, чтобы не путаться в понятиях.
п.с. А ещё говорят, что и на 30 МГц нормально разгоняется!
Самые обсуждаемые обзоры
+60 |
2587
105
|
+47 |
2929
62
|
+20 |
1700
31
|
+48 |
1742
34
|
Тема интересная, разбираться понравилось — теперь я могу перепрошивать некоторые фонарики! Хотя это больше не с кварцем связано, а с ISP-программатром. Можно теперь смело заказывать другие микроконтроллеры, не боясь, что их будет нечем прошивать…
Если поискать хвосты, можно вычислить, что разбираться начал 2 недели назад =)
И стимул к этому всему какой-то копеечный кварц, без которого бы статьи не было, а с которым вот она, просто ужас!
Копите помидоры :)
6 рублей 90 копеек штука.
Всего $0.64 за 10 штук.
В мобильном приложении всего на $0.01 дороже, т.е. $0.65 за 10 штук. )
Да еще и цена на который завышена больше, чем в 10 раз :)
За что ему спасибо!
И о каком разгоне речь? Штатный кварц на штатную частоту атмеги. И ладно еще был бы обзор самого кварца — с замером точной частоты, температурной зависимости и т.д., но ведь в «обзоре кварца» нет самого обзора кварца :)
По идее, должно давать прирост на 25%.
сколько там более-менее современные микросхемы выдают? 70нс? врядли древние авр-ы переводили на новые тех-процессы.
кол-во MIPS не должно весомо возрасти после определенного порога…
в даташите многобещательно написано up to 20 MIPS throughput at 20MHz что какбы намекает, что дальше смысла особо нету.
вполне возможно что резултат может различаться между моделями/поколенями контроллеров.
в целом выполнение 1 инструкции за 1 такт ожидаемо для большинства инструкций для avr. Но если всё упрётся в скорость чтения ROM, то будут тратиться дополнительные такты на время пока информация будет считываться.
этож avr, а не х86, где суперскалярная архитектура, предсказание ветвлений, кеши инструкций, кеши памяти и т.д.
тупым повышением частоты CPU ничего не добиться в большинстве случаев.
повторюсь, узкое место — это ROM. Если он например 50нс, то как раз до 20MIPS можно будет выжать. Дальше уже всё, производительность может катастрофически упасть в разы из-за того, что придется пропускать такты в ожидании информации из ROM.
20 МГц гарантированы — флэш на этой частоте точно работает. На более высокой — как повезет с конкретным чипом и условиями его работы. Не потянет — значит контроллер будет глючить, пытаясь прочесть из неуспевающей флэши, а не увеличится время на чтение из-за ожидания.
Плюсую. А то думал, просто радиоэлементы уже начали в обзор писать.
Заголовок у вас не удачен, поэтому мало людей привлекли.
Вообще в Атмегах есть вроде и внутренний кварц.
Изменение одного слова в тайтле повлекло отправку обзора на перемодерацию.
А также «Хорошие» новости: наши «спонсоры» совсем охамели — и обзоры теперь будут публиковаться реже — mysku.club/page/rules/bangood
mysku.club/blog/china-stores/40662.html
mysku.club/blog/china-stores/38606.html
mysku.club/blog/china-stores/38587.html
mysku.club/blog/china-stores/38259.html
mysku.club/blog/china-stores/33751.html
mysku.club/blog/china-stores/33286.html
mysku.club/blog/china-stores/32720.html
mysku.club/blog/china-stores/31148.html
mysku.club/blog/china-stores/31248.html
А ведь это
mysku.club/blog/china-stores/41209.html
mysku.club/blog/china-stores/41020.html
mysku.club/blog/china-stores/41137.html
Но всякие ящички-коробочки, сотни колонок и наушников, кошельки и сумочки — да сколько ж можно? :)
Ну и апофеоз — кварц на обзор :)
Согласен.
Вот не надо на коробочки наезжать :)))))))
правда там обзор без пп18
Плюс опять же те же нано и промини стоят на копейку дороже с обычными кварцами, чем с smd. Так что было бы интереснее именно этот аспект. Я в свое время не придал этому значения. теперь у меня пару десятков нано и столько же промини с smd кварцами.
Прошить по UART после замены кварца не получится. — это ведь давно известно. Зачем себе палки в колеса втыкать то...
А вообще, если есть девайс, у которого есть внутри загрузчик, но по каким-то причинам нельзя подключить программатор для его замены, то:
1. пишется программа, перезаписывающая загрузчик.
2. заливается через старый загрузчик
3. все готово.
Например у меня в изделии используется простенький UART-загрузчик с тремя функциями — чтение, стирание, и запись страницы flash. Стирание и запись не имеют доступа к адресам загрузчика. Ничто не мешает залить тот же самый загрузчик, перекомпилировав его в качестве основной программы, который уже будет иметь доступ ко всем адресам flash.
Нафига этот костылинг? Не лучше ли, и проще ли выкинуть эту ардуино и перейти на человеческий ARM (STM32F103) Цены на них сопоставимы, а плюшек в разы больше.
Можете минусовать =)
Не — ардуина хороша, когда нужно за полчаса сделать какой-то костылик. Но если пошло вытягивание производительности на 20% — что-то уже не то с самой идеей :)
Ваш вопрос только подтверждает мое наблюдение :) Незачем, конечно. В самом деле, к чему Вам эти DMA, аппаратные USB и интерфейс SD, внутрисхемная отладка, повышение производительности в 20-50 раз… :)
Ну и еще раз — Вы опять и опять подтверждаете, что ардуинщики с ассемблером несовместимы :)
да и юзерам ардуино не надо ни 64к флеш, ни ЦАПы… чтоб моргать светодиодами кортекс не нужен))))
это как по селу на спортбайке вместо Риги гонять))
не нужно менять кварц для вытягивания дополнительных 20% производительности
И с появлением Cube всё стало значительно проще — по крайней мере всю базовую инициализацию Cube берёт на себя.
То что сделано в обзоре и статье хорошо и полезно, этого никто не оспаривает. Но похоже как на «жигу» корячить спойлер =)
Кварц — это топор для каши.
Не попал. Кстати, неделю назад отписывался сотруднику Магазина еще о 4 товарах — и тот пообещал отправить, но товары так и не появились в списке заказов — так что магазины реагировали на просьбы не слать товры на обзоры еще неделю назад!
Контроллер atmega 328p. Программно минимальная частота встроенного генератора 31 Гц с внешним кварцем 16 МГц.
Вопрос:
Мне нужно получить генератор 15,5Гц (ну или около того). Можно уменьшением внешнего кварца (скажем на 8МГц) уменьшить частоту встроенного генератора до 15 Гц? Ведь будет одновременно уменьшена и тактовая частота процессора.
p/s ищу простой ответ, без подробностей что можно просто написать скеч и тд, уже неделю бъюсь не могу подружить программу с алгоритмом работы, по отдельности все работает, частота программно меняется, как только собираю скетч в сборе, частота 1,67 Гц и привет.
Вот я и подумал просто заменить внешний кварц… Р