http://www.youtube.com/watch?v=velCp38rqbY
Duino на внутреннем резонаторе
Чем удобна ардуина? Кроме простоты прототипирования основным удобством является язык программировани с кучей библиотек. Но готовить конечное устройство на плате ардуино дорого и не очень удобно. Ради уменьшения цены и размеров можно избавиться от многих деталей, в том числе и от кварцевого резонатора. В конце-концов для работы минимальной обвязкой является сам микроконтроллер и питание. Конечно внутренний резонатор контроллера не особо точен, да и частота всего 8МГц, но для многого хватит и этого.
Первое что понадобится для того чтобы избавитья от кварца – это дописать в ардуино иде файл .\arduino-0022\hardware\arduino\boards.txt
Фьюзы высчирывал вот этим калькулятором: http://www.engbedded.com/fusecalc/
Простым способом, сначала забил в него старые фьюзы контроллера (взять можно из того-же boards.txt), получив набор параметров микроконтроллера просто поменял строку Ext. Crystal Osc. На Int. RC Osc. 8Mhz default value И прочитал там новые фьюзы где вводил старые.
#пример для ATmega168
#Я не стал ничего придумывать, я просто скопировал кусок
#для ардуины про мини, переименовал его и поменял фьюзы.
##############################################################
pro.name=MyName duino int8 MHz ATmega168
pro.upload.protocol=arduino
pro.upload.maximum_size=14336
pro.upload.speed=19200
# Поменял эти 3 строки
pro.bootloader.low_fuses=0xE2
pro.bootloader.high_fuses=0xDD
pro.bootloader.extended_fuses=0xF8
#
pro.bootloader.path=atmega
pro.bootloader.file=ATmegaBOOT_168_pro_8MHz.hex
pro.bootloader.unlock_bits=0x3F
pro.bootloader.lock_bits=0x0F
pro.build.mcu=atmega168
#И поменял эту строку
pro.build.f_cpu=8000000L
#
pro.build.core=arduino
pro.build.variant=standard
##############################################################
После доработки файла boards.txt, запустил ардуино, выбрал появившуюся в платах MyName duino int8 MHz ATmega168.
Для проверки использовал blink, но стандартный 13 было не интересно, поправил на 0 (это 2й вывод микроконтроллера в пдип корпусе). Скомпилировал с зажатым шифтом чтобы узнать куда ложится хекс файл и прошил вот по этой инструкции: freeduino.ru/arduino/isp.html Но используя новые фьюзы.
Надо учесть что если контроллер уже прошивался раньше, то первую прошивку фьюзов в него надо производить с тем кварцем с которым он раньше был.
Соответствие выводов для разъема ХЗ дуины, микросхемы ft232 и контроллера ATmega168-20PU (ATmega328-20PU)
X3 — ft232 — ATmega168-20PU
1 — CTS(pin11) — MISO (pin18)
2 — DSR(pin9) — SCK (pin19)
3 — DCD(pin10) — MOSI (pin17)
4 — R(pin6) — RESET (pin1)
0 комментариев на «“Duino на внутреннем резонаторе”»
Как я понял для блинка подойдет. Но если приложение требовательно к точности по времени, погрешность получится ±5%. От 8 Мгц это 400КГц. То есть за секунду может (недо/пере)выполнится 400 тыс. тактов. Во временном представлении это ±50 миллисекунд на каждую секунду.
Да, это именно для тех случаев когда от времени мало что зависит, но подойдет не только для блинка, например если ты делаешь часы на внешней микросхеме RTC, к которой устанавливается свой кварц, а атмега всего лишь управляет вводом/выводом, от атмеги точность не требуется. Для реагирования на внешние действия (нажатия кнопок, размыкания/замыкания герконов, изменения на аналоговых входах и т.д.) точность не нужна. Более того, делал я кухонный таймер — за 1ч погрешность примерно 2мин меня устраивает, всетаки это для кухни, за 2минуты еда не сгорит, а у китайских кухонных тайметов +- 5мин.
можно пожертвовать быстродействием в угоду точности, на внутреннем осциляторе при 32КГц погрешности почти нет. Основная необходимость таких подключений — это габариты и энергопотребление, на внутренней RC цепочке атмега не только питается меньшим напряжением, но и ток потребления у нее очень мал.
А я думал у них внутренний осциллятор на 1 Мгц?
1МГц это дефолтные фьюзы мк на атмега 8, на 168 по умолчанию внутренний 8МГц. Но можно выставить меньше.
И да, я ошибся 32КГц это минимум тоже для атмега 8, для 168й минимум 128КГц. Не в тот даташит глянул.