Использование Arduino Mini 328P 5V 16M как 3v 8M - вопросы новичка

klyoshev
Offline
Зарегистрирован: 19.01.2015

Всем привет! 

Смотрите, я по ошибке взял Arduino Pro Mini 328P-AU 5V 16M вместо 3v 8M и теперь мне нужно запитать ее от 3х вольт,

что я и сделал, впринципе работает нормально даже на 2.6В но максимальная частота для моих 3В - около 12 Мгц и я переживаю изза этого. 

пожалуйста прочитайте и поправьте меня если я где ошибся:  

хорошенько погуглив я выяснил что если подать 3В напрямую на VCC то ардуина должна завестись вплоть до 1.8 В, однако рекомендованная частота для моих 3В - около 12 Мгц, а кварц на 16 поменять на 8 нереально для моих навыков паяния поэтому нужно задействовать внутрений 8Мгц генератор, и первый вопрос, (1) правда ли что после этого для заливки програм нужно будет временно подцеплять кварц иначе изза плавающей частоты ничего может не загрузиться? ( это критично)

Далее, (2) если я поменяю фьюз для использования внутреннего генератора, надо ли заливать на дуину новый бутлоадер, и нужно ли отредактировать его (создать новый) для соответствия новым настройкам ( было 16 стало 8 Мгц) ? Так же желательно сразу отключить Brown-Out Detection. В этом моменте если можно поподробнее.

Далее есть некоторые непонятки с Extended Fuse котрый отвечает за контроль напряжения питания, в fuse calculator для значения Brown-Out Disabled соответствует бит 0 x FF однако считав extended fuse с помощью AvrDude я получил значение 0 x 06 ( в фьюз калькуляторе такого значения вообще нет для моего процессора 328P) и попытка записать фьюз как 0 x FF выдает ошибку. Что здесь не так?

D общем, мне нужен краткий но четкий порядок действий как превратить мою плату в 8 Мгц и работать через Arduino IDE как с платой 3V 8M.

 

PS. Быть может я все усложняю и нужно просто поменять чтото в boards.txt и записать бутлоадер на плату?

Еслизнаете что нужно поменять, поменяйте пожалуйста. Голова уже кипит, разобраться не могу:)

Если открыть мой boards.txt там сейчас моей плате соответствует:

##############################################################
 
pro5v328.name=Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328
 
pro5v328.upload.protocol=arduino
pro5v328.upload.maximum_size=30720
pro5v328.upload.speed=57600
 
pro5v328.bootloader.low_fuses=0xFF
pro5v328.bootloader.high_fuses=0xDA
pro5v328.bootloader.extended_fuses=0x05
pro5v328.bootloader.path=atmega
pro5v328.bootloader.file=ATmegaBOOT_168_atmega328.hex
pro5v328.bootloader.unlock_bits=0x3F
pro5v328.bootloader.lock_bits=0x0F
 
pro5v328.build.mcu=atmega328p
pro5v328.build.f_cpu=16000000L
pro5v328.build.core=arduino
pro5v328.build.variant=standard
 

 

##############################################################
 
А нужно (но с использованием внутреннего генератора на 8 М и Brown-Out Выкл): 
 
##############################################################
 
pro328.name=Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega328
 
pro328.upload.protocol=arduino
pro328.upload.maximum_size=30720
pro328.upload.speed=57600
 
pro328.bootloader.low_fuses=0xFF
pro328.bootloader.high_fuses=0xDA
pro328.bootloader.extended_fuses=0x05
pro328.bootloader.path=atmega
pro328.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex
pro328.bootloader.unlock_bits=0x3F
pro328.bootloader.lock_bits=0x0F
 
pro328.build.mcu=atmega328p
pro328.build.f_cpu=8000000L
pro328.build.core=arduino
pro328.build.variant=standard
 
##############################################################

Спасибо за помощь! 

std
Offline
Зарегистрирован: 05.01.2012

В boards.txt будет это:

##############################################################

atmega328bb.name=ATmega328 at 8 MHz (w/o crystal)

atmega328bb.upload.protocol=stk500
atmega328bb.upload.maximum_size=30720
atmega328bb.upload.speed=57600

atmega328bb.bootloader.low_fuses=0xE2
atmega328bb.bootloader.high_fuses=0xDA
atmega328bb.bootloader.extended_fuses=0x05
atmega328bb.bootloader.path=arduino:atmega
atmega328bb.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex
atmega328bb.bootloader.unlock_bits=0x3F
atmega328bb.bootloader.lock_bits=0x0F

atmega328bb.build.mcu=atmega328p
atmega328bb.build.f_cpu=8000000L
atmega328bb.build.core=arduino:arduino
atmega328bb.build.variant=arduino:standard

##############################################################

Загрузчик.

Кварц отпаять, или отрезать одну из дорожек, идущих к нему, ножом.

Нож вот такой:

bwn
Offline
Зарегистрирован: 25.08.2014

А если все работает, может ничего не делать?

kayot
kayot аватар
Offline
Зарегистрирован: 11.04.2014

и не надо работает же

klyoshev
Offline
Зарегистрирован: 19.01.2015

Спасибо всем за помощь, да все работает но вот вы скажите по своему опыту, при опускании напряжения питания  до 2.5 В какова вероятность появления глюков на 16Мгц? Просто я руководствовался в первую очередь этим и насторожился:

Кроме того, насколько я понял при опускании частоты уменьшается и энергопотребление, а так как мой проект питается от одной таблетки CR2032 это критично. Да, я выпаял светодиод питания и теперь в режиме Sleep Power Down плата потребляет всего 0.07мА, но я знаю что можно и меньше

Спасибо std а бутлоадер, поясните только, выпаивать кварц нужно для снижения энергопотребления или есть иная причина? Уж больно он мелкий думаю на место сам не припаяю в случае чего.

 

bwn
Offline
Зарегистрирован: 25.08.2014

Ну уж если вы собираетесь питать от 2032, то расставайтесь с ардуиной в конечном проекте, а используйте только чип с минимальной обвязкой и всеми энергосбережениями. Дуня для таких вещей в принципе не предназначена. Поройте, здесь где то тема про это была.

klyoshev
Offline
Зарегистрирован: 19.01.2015

Да, я планировал в конечном проекте поставить Attiny13 , но опять таки знаний пока недостаточно чтобы переделать код с учетом урезанных функций бутлоадера и памяти в 1 КБ. 

На данный момент используя Arduino Pro Mini схема 99% спит потребляя 70мкА и 1% находится в активном режиме потребляя 6мА. По моим расчетам батарейки 2032 с емкостью 200мАч хватит на 83 дня непрерывного использования, в моем режиме использования это около 160 дней, что впринципе устраивает.

Если есть какое нибудь руководство по оптимизации кода или программирования на arduino IDE для Attiny пожалуйста дайте ссылку, буду признателен.

bwn
Offline
Зарегистрирован: 25.08.2014

Имеется в виду камень 328 с кварцем или внутренним геной. Отлаживаете код на дуне, после заливаете в камень и пользуете. Расход энергии только на нее. Единственное плату развести.

std
Offline
Зарегистрирован: 05.01.2012

Если не оторвать кварц но настроить на внутреннего гену, то кварц будет участвовать в работе тактового генератора помимо генератора, то есть убыстрять его. delay(1000) будет выполняться полсекунды и прочие подобные эффекты, плюс плата будет по-прежнему требовать большее напряжение т. к. по факту останется на 16 МГц.