Duino на внутреннем резонаторе



Duino на внутреннем резонаторе
Чем удобна ардуина? Кроме простоты прототипирования основным удобством является язык программировани с кучей библиотек. Но готовить конечное устройство на плате ардуино дорого и не очень удобно. Ради уменьшения цены и размеров можно избавиться от многих деталей, в том числе и от кварцевого резонатора. В конце-концов для работы минимальной обвязкой является сам микроконтроллер и питание. Конечно внутренний резонатор контроллера не особо точен, да и частота всего 8МГц, но для многого хватит и этого.

Первое что понадобится для того чтобы избавитья от кварца – это дописать в ардуино иде файл .\arduino-0022\hardware\arduino\boards.txt
Фьюзы высчирывал вот этим калькулятором: 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
  • 22 сентября 2011, 18:53
  • mogalkov

Комментарии (6)

RSS свернуть / развернуть
+
0
Как я понял для блинка подойдет. Но если приложение требовательно к точности по времени, погрешность получится ±5%. От 8 Мгц это 400КГц. То есть за секунду может (недо/пере)выполнится 400 тыс. тактов. Во временном представлении это ±50 миллисекунд на каждую секунду.
avatar

oleamm

  • 26 октября 2011, 17:37
+
0
Да, это именно для тех случаев когда от времени мало что зависит, но подойдет не только для блинка, например если ты делаешь часы на внешней микросхеме RTC, к которой устанавливается свой кварц, а атмега всего лишь управляет вводом/выводом, от атмеги точность не требуется. Для реагирования на внешние действия (нажатия кнопок, размыкания/замыкания герконов, изменения на аналоговых входах и т.д.) точность не нужна. Более того, делал я кухонный таймер — за 1ч погрешность примерно 2мин меня устраивает, всетаки это для кухни, за 2минуты еда не сгорит, а у китайских кухонных тайметов +- 5мин.
avatar

mogalkov

  • 27 октября 2011, 09:05
+
0
можно пожертвовать быстродействием в угоду точности, на внутреннем осциляторе при 32КГц погрешности почти нет. Основная необходимость таких подключений — это габариты и энергопотребление, на внутренней RC цепочке атмега не только питается меньшим напряжением, но и ток потребления у нее очень мал.
avatar

mogalkov

  • 27 октября 2011, 09:22
+
0
А я думал у них внутренний осциллятор на 1 Мгц?
avatar

oleamm

  • 27 октября 2011, 09:44
+
0
1МГц это дефолтные фьюзы мк на атмега 8, на 168 по умолчанию внутренний 8МГц. Но можно выставить меньше.
avatar

mogalkov

  • 27 октября 2011, 09:53
+
0
И да, я ошибся 32КГц это минимум тоже для атмега 8, для 168й минимум 128КГц. Не в тот даташит глянул.
avatar

mogalkov

  • 27 октября 2011, 09:59

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