Arduino Nano fuse BODLEVEL

SmartRnd
Offline
Зарегистрирован: 13.09.2016

Помогите решить проблему с включением BODLEVEL 4,3V. на Arduino Nano

Дествую следующиим образом:

1.Прошил UNO как ArduinoISP

2.Отредактировал файл настроек boards.txt. Если быть точнее изменил только настройку nano.menu.cpu.atmega328.bootloader.extended_fuses=0x05 на nano.menu.cpu.atmega328.bootloader.extended_fuses=0x04

Вырезка из board.txt:

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

nano.name=Arduino Nano

nano.upload.tool=avrdude
nano.upload.protocol=arduino

nano.bootloader.tool=avrdude
nano.bootloader.unlock_bits=0x3F
nano.bootloader.lock_bits=0x0F

nano.build.f_cpu=16000000L
nano.build.board=AVR_NANO
nano.build.core=arduino
nano.build.variant=eightanaloginputs

## Arduino Nano w/ ATmega328
## -------------------------
nano.menu.cpu.atmega328=ATmega328

nano.menu.cpu.atmega328.upload.maximum_size=30720
nano.menu.cpu.atmega328.upload.maximum_data_size=2048
nano.menu.cpu.atmega328.upload.speed=57600

nano.menu.cpu.atmega328.bootloader.low_fuses=0xFF
nano.menu.cpu.atmega328.bootloader.high_fuses=0xDA
nano.menu.cpu.atmega328.bootloader.extended_fuses=0x04
#Биты BODLEVEL2 - BODLEVEL0 (2 - 0) как раз и устанавливают необходимое напряжение:
#111 - система BOD выключена
#110 - сброс при напряжении питания 1.7 - 2 В
#101 - сброс при напряжении питания 2.5 - 2.9 В
#100 - сброс при напряжении питания 4.1 - 4.5 В
#011 - 000 - резерв

nano.menu.cpu.atmega328.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex

nano.menu.cpu.atmega328.build.mcu=atmega328p

## Arduino Nano w/ ATmega168
## -------------------------
nano.menu.cpu.atmega168=ATmega168

nano.menu.cpu.atmega168.upload.maximum_size=14336
nano.menu.cpu.atmega168.upload.maximum_data_size=1024
nano.menu.cpu.atmega168.upload.speed=19200

nano.menu.cpu.atmega168.bootloader.low_fuses=0xff
nano.menu.cpu.atmega168.bootloader.high_fuses=0xdd
nano.menu.cpu.atmega168.bootloader.extended_fuses=0x00
nano.menu.cpu.atmega168.bootloader.file=atmega/ATmegaBOOT_168_diecimila.hex

nano.menu.cpu.atmega168.build.mcu=atmega168

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

3. Подключил Nano к UNO, UNO к ПК.

4. Выбрал плату Arduino Nano, процессор, порт

5. В настройках выбрал прогшрамматор Arduino as ISP. Нажал "Записать загрузчик" после чего получил сообщение, что он загружен.

По идее всё здорово, но при понижении напряжения Arduino не уходит в спячку. Напряжение уронил до 2В, а он всё равно продолжает работать. Подскажите, что делаю не так?

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

а кто сказал что он в спячку должен ?

в строках 30-32, написано что он должен делать.

 

b707
Offline
Зарегистрирован: 26.05.2017

После редактирования файла boards,txt Ардуино ИДЕ перезагрузили?

Если да - поменяйте название  секции boards.txt для Нано, например на "Нано-тест", перезапустите ИДЕ и убедитесь, что название платы в меню сменилось на Нано-тест. Если не сменилось - значит вы что-то не так делаете

SmartRnd
Offline
Зарегистрирован: 13.09.2016

Неправильно выразился, он сбрасывается до восстановления питания.

SmartRnd
Offline
Зарегистрирован: 13.09.2016

b707 пишет:

После редактирования файла boards,txt Ардуино ИДЕ перезагрузили?

Если да - поменяйте название  секции boards.txt для Нано, например на "Нано-тест", перезапустите ИДЕ и убедитесь, что название платы в меню сменилось на Нано-тест. Если не сменилось - значит вы что-то не так делаете

Спасибо. Завтра попробую.

SmartRnd
Offline
Зарегистрирован: 13.09.2016

b707 пишет:

После редактирования файла boards,txt Ардуино ИДЕ перезагрузили?

Если да - поменяйте название  секции boards.txt для Нано, например на "Нано-тест", перезапустите ИДЕ и убедитесь, что название платы в меню сменилось на Нано-тест. Если не сменилось - значит вы что-то не так делаете

Сегдоня подпаравил название Arduino Nano на Arduino Nano BOD 4.3v

 

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

nano.name=Arduino Nano BOD 4.3v

nano.upload.tool=avrdude
nano.upload.protocol=arduino

nano.bootloader.tool=avrdude
nano.bootloader.unlock_bits=0x3F
nano.bootloader.lock_bits=0x0F

nano.build.f_cpu=16000000L
nano.build.board=AVR_NANO
nano.build.core=arduino
nano.build.variant=eightanaloginputs

## Arduino Nano w/ ATmega328
## -------------------------
nano.menu.cpu.atmega328=ATmega328

nano.menu.cpu.atmega328.upload.maximum_size=30720
nano.menu.cpu.atmega328.upload.maximum_data_size=2048
nano.menu.cpu.atmega328.upload.speed=57600

nano.menu.cpu.atmega328.bootloader.low_fuses=0xFF
nano.menu.cpu.atmega328.bootloader.high_fuses=0xDA
nano.menu.cpu.atmega328.bootloader.extended_fuses=0x04
#Биты BODLEVEL2 - BODLEVEL0 (2 - 0) как раз и устанавливают необходимое напряжение:
#111 - система BOD выключена
#110 - сброс при напряжении питания 1.7 - 2 В
#101 - сброс при напряжении питания 2.5 - 2.9 В
#100 - сброс при напряжении питания 4.1 - 4.5 В
#011 - 000 - резерв

nano.menu.cpu.atmega328.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex

nano.menu.cpu.atmega328.build.mcu=atmega328p

Запустил среду выбрал плату Nano BOD, подключил Nano к Uno AsrduinoISP и выбрал записать загрузчик.

Дождался загрузки. После этого в Nano перезалил скетч.

К сожалению, плата продолжает функционировать даже при понижении напряжения до 2-3v.

SmartRnd
Offline
Зарегистрирован: 13.09.2016

При прошивке загрузчика начал выдавать:

avrdude: Expected signature for ATmega328P is 1E 95 0F
         Double check chip, or use -F to override this check.
Ошибка при записи загрузчика.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

В настройках IDE включите подробный вывод при загрузке. Там будет написана сигнатура чипа, которая считывается. Если там все нули или F, значит чип не считывается. Может проводок где отошел или контакт плохой. Или провода длинноваты и ловят помехи.

SmartRnd
Offline
Зарегистрирован: 13.09.2016

Jeka_M пишет:

В настройках IDE включите подробный вывод при загрузке. Там будет написана сигнатура чипа, которая считывается. Если там все нули или F, значит чип не считывается. Может проводок где отошел или контакт плохой. Или провода длинноваты и ловят помехи.

Излечилось. )

SmartRnd
Offline
Зарегистрирован: 13.09.2016

Можно как-то считать fuse из Arduino? Может быть они прошиваются и дело в чем-то другом.

b707
Offline
Зарегистрирован: 26.05.2017

Вы используете фьюз 0х04 - вообще-то, это не вполне верно. По традиции, не используемые фьюзы надо выставлять в "1", а не в ноль. Для BOD=4.3 правильный фьюз будет 0xFC

ССылка: http://payalo.at.ua/c_fuse/calc.html?part=ATmega328P

 

SmartRnd
Offline
Зарегистрирован: 13.09.2016

Это логично. Исходил из того, что по умолчанию там стояло значение 0х05.

Поставил 0xFC, перепрошил загрузчик и не помогло

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

SmartRnd пишет:

Можно как-то считать fuse из Arduino? 

Можно. Удобно это делать через программу Sinaprog или Avrdudeprog.

SmartRnd
Offline
Зарегистрирован: 13.09.2016

Jeka_M пишет:

SmartRnd пишет:

Можно как-то считать fuse из Arduino? 

Можно. Удобно это делать через программу Sinaprog или Avrdudeprog.

 

Скорее всего стоит защита на считываение. Все fuse при считывании 0х00.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

SmartRnd пишет:

Jeka_M пишет:

SmartRnd пишет:

Можно как-то считать fuse из Arduino? 

Можно. Удобно это делать через программу Sinaprog или Avrdudeprog.

 

Скорее всего стоит защита на считываение. Все fuse при считывании 0х00.

или Sinaprog кривая, надысь собирал ручками для Atmega328PB, ссылка есть в теме