Получение большего времени работы Sensor Node

Oregon
Offline
Зарегистрирован: 19.10.2013

С Новым годом всех!

Кто нибудь, подскажите пожалуйста - есть такая штука "Sensor Node V1.2". Тут написано:

Цитата:

Для того, чтобы обеспечить большее время работы модуля от одного элемента питания можно понизить частоту работы МК до 8МГц и снизить "пороговое" напряжение, при котором МК будет стартовать до1.8В.

Делается это с помощью добавления следующей секции в файл boards.txt среды Arduino:

s328o8.name=Sensor328 (int8MHz, 1.8V) s328o8.upload.protocol=arduino s328o8.upload.maximum_size=30720 s328o8.upload.speed=19200 s328o8.bootloader.low_fuses=0xe2 s328o8.bootloader.high_fuses=0xda s328o8.bootloader.extended_fuses=0x06 s328o8.bootloader.path=atmega s328o8.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex s328o8.bootloader.unlock_bits=0x3F s328o8.bootloader.lock_bits=0x0F s328o8.build.mcu=atmega328p s328o8.build.f_cpu=8000000L s328o8.build.core=arduino s328o8.build.variant=standard

После добавления этого кода в соответствующий файл (и перезапуска среды Arduino) в списке доступных плат появится новая строчка: Sensor328 (int8MHz, 1.8V)

тут все понятно. А вот тут:

Цитата:
Внимание! Фьюзы, указанные в файле boards.txt и определяющие режимы работы МК прошиваются из среды Arduino только в момент записи загрузчика (но не прошивки МК). Для того, чтобы поправить фьюзы без изменения загрузчика можно воспользоваться, например avrdude GUI

совсем не понятно. Как это сделать?

Спасибо!

Клапауций
Offline
Зарегистрирован: 10.02.2013

Oregon пишет:

совсем не понятно. Как это сделать?

имеется ввиду - подключить программатор к плате(например usbasp), выбрать в меню "программатор" "usbasp" и сделать "Записать загрузчик".

Oregon
Offline
Зарегистрирован: 19.10.2013

Спасибо за быстрый ответ.

Т.е. просто подключить , записать и все? А потом можно работать с этой платой как обычно?

Клапауций
Offline
Зарегистрирован: 10.02.2013

Oregon пишет:

Спасибо за быстрый ответ.

Т.е. просто подключить , записать и все? А потом можно работать с этой платой как обычно?

да.

*примечание - я не уверен, что вы добъётесь кардинального уменьшения энергопотребления.

Oregon
Offline
Зарегистрирован: 19.10.2013

Скажите, если использовать такой элемент питания, то на какое время работы этой платы можно рассчитывать?

 

Клапауций
Offline
Зарегистрирован: 10.02.2013

нужно разделить ёмкость батареи на потребляемый девайсом ток - получите часы работы.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Клапауций пишет:

нужно разделить ёмкость батареи на потребляемый девайсом ток - получите часы работы.

опять делить? а скоро начнем умножать?

Клапауций
Offline
Зарегистрирован: 10.02.2013

Puhlyaviy пишет:

опять делить? а скоро начнем умножать?

http://www.youtube.com/watch?v=p7vsDX1jGJY

axill
Offline
Зарегистрирован: 05.09.2011

знакомая платка) ее автор ее на форуме показывал

1. если уж  на то пошло, то чтобы МК работал при напряжении от 1.8в то частоту нужно снижать до 4мгц и ниже (учимся читать даташиты)

2. куда больше на питание влияет умелое проограмирование

Oregon
Offline
Зарегистрирован: 19.10.2013

Клапауций пишет:

имеется ввиду - подключить программатор к плате(например usbasp), выбрать в меню "программатор" "usbasp" и сделать "Записать загрузчик".

Записал. Прошил. От элемента с напряжением 2,8В не работает. Как быть? Очевидно я что-то упустил. Как убедиться, что загрузчик записан?

Клапауций
Offline
Зарегистрирован: 10.02.2013

в Arduino IDE зайти в настройки, поставить галки "подробный вывод при загрузке", "проверка кода при загрузке", выбрать тип платы дуино "Sensor328 (int8MHz, 1.8V)", прошить закрузчик ещё раз и внимательно прочитать лог консоли внизу.

*курим цитату даташита контроллера http://www.atmel.com/ru/ru/Images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet.pdf - может быть нужно снизить частоту до 4MHz.

 Speed Grade:
– 0 - 4MHz@1.8 - 5.5V, 0 - 10MHz@2.7 - 5.5.V, 0 - 20MHz @ 4.5 - 5.5V
 
Oregon
Offline
Зарегистрирован: 19.10.2013

Клапауций пишет:

*курим цитату даташита контроллера http://www.atmel.com/ru/ru/Images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet.pdf - может быть нужно снизить частоту до 4MHz.

 Speed Grade:
– 0 - 4MHz@1.8 - 5.5V, 0 - 10MHz@2.7 - 5.5.V, 0 - 20MHz @ 4.5 - 5.5V
 

Так получается, что тут ошибка? Написано: "можно понизить частоту работы МК до 8МГц и снизить "пороговое" напряжение, при котором МК будет стартовать до1.8В". Нужно до 4МГц снижать?

 

Клапауций
Offline
Зарегистрирован: 10.02.2013

Oregon пишет:

Так получается, что тут ошибка? Написано: "можно понизить частоту работы МК до 8МГц и снизить "пороговое" напряжение, при котором МК будет стартовать до1.8В". Нужно до 4МГц снижать?

не факт - в даташите указаны рекомендуемые параметры гарантированно стабильной работы контроллера, часто контроллер способен работать в нештатном режиме.

при каком напряжении контроллер начинает нестабильно работать? и где вы возьмёте загрузчик на 4 мегагерца?

Oregon
Offline
Зарегистрирован: 19.10.2013

Клапауций пишет:

при каком напряжении контроллер начинает нестабильно работать? и где вы возьмёте загрузчик на 4 мегагерца?

Возможности регулировать напряжение небыло. Я не додумался включить в код моргание светодиодом. Скетч Blink работает при напряжении 2.8В. А с NRF приемник ничего не показывает. У меня есть батарейка на 3.6V - вот с ней все работает.

А как быть с загрузчиком? Подскажите, пожалуйста.

 

Oregon
Offline
Зарегистрирован: 19.10.2013

Что-то никак:

c:\AVR>avrdude -C avrdude.conf -c arduino -P com9 -p m328p -U hfuse:w:0xDA:m -U lfuse:w:0xE2:m -U lock:w:0x0F:m -U efuse
:w:0x06:m

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e950f
avrdude: reading input file "0xDA"
avrdude: writing hfuse (1 bytes):

Writing |                                                    | 0% 0.00s ***failed;
Writing | ################################################## | 100% 0.07s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xDA:
avrdude: load data hfuse data from input file 0xDA:
avrdude: input file 0xDA contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
         0xda != 0x00
avrdude: verification error; content mismatch

avrdude: safemode: hfuse changed! Was da, and is now 0
Would you like this fuse to be changed back? [y/n]

 

axill
Offline
Зарегистрирован: 05.09.2011

Oregon пишет:
У меня есть батарейка на 3.6V - вот с ней все работает.

очень похоже на то, что у вам фьюзы BODLEVEL настроен на 2.7в

Клапауций
Offline
Зарегистрирован: 10.02.2013

Oregon пишет:

Что-то никак:

c:\AVR>avrdude -C avrdude.conf -c arduino -P com9 -p m328p -U hfuse:w:0xDA:m -U lfuse:w:0xE2:m -U lock:w:0x0F:m -U efuse
:w:0x06:m

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e950f
avrdude: reading input file "0xDA"
avrdude: writing hfuse (1 bytes):

Writing |                                                    | 0% 0.00s ***failed;
Writing | ################################################## | 100% 0.07s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xDA:
avrdude: load data hfuse data from input file 0xDA:
avrdude: input file 0xDA contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
         0xda != 0x00
avrdude: verification error; content mismatch

avrdude: safemode: hfuse changed! Was da, and is now 0
Would you like this fuse to be changed back? [y/n]

 

оно то конечно "не так":

c:\AVR>avrdude -C avrdude.conf -c arduino -P com9 -p m328p

эта странная строка у меня вызывает несколько вопросов:

1. c:\AVR>avrdude - почему avrdude находится здесь?

2. чем или кем написаня сия командная строка?

3. судя по -c arduino -P com9 -p m328p - вы пытаетесь шить контроллер из под загрузчика, записанного на этом же контроллере?

фьюзы и загрузчик нужно шить внешним программатором, который подключается к контроллеру по интерфейсу ISP и выбирается в меню Arduino IDE "Программатор", первая командная строка процедуры вызванной из меню Arduino IDE "Записать загрузчик" будет выглядеть следующим образом:

*\arduino-1.0.5\hardware/tools/avr/bin/avrdude -CD:\Program Files mini\arduino-1.0.5\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -patmega16 -cusbasp -Pusb -e -Uhfuse:w:null:m -Ulfuse:w:null:m 

*для примера скопипастил для внешнего программатора usbasp и контроллера atmega16.

т.е. сначала контроллер стирается полностью(см. приведённую цитату лога), а затем пишутся фьюзы, записывается лоадер, лочится загрузочная область.

и, желательно, всё производится при напряжении 5V.

 
Клапауций
Offline
Зарегистрирован: 10.02.2013

для понимания вышесказанного - лог моей попытки прошить фьюзы из под лоадера(контроллер атмега16, usbasploader)

d:\Program Files mini\avrdude-5.11-Patch7610>avrdude -p atmega16 -c USBasp -U hfuse:w:0xc0:m -U lfuse:w:0x9f:m

avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.14s

avrdude: Device signature = 0x1e9403
avrdude: reading input file "0xc0"
avrdude: writing hfuse (1 bytes):

Writing |                                                    | 0% 0.00s ***failed;
Writing | ################################################## | 100% 0.10s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xc0:
avrdude: load data hfuse data from input file 0xc0:
avrdude: input file 0xc0 contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.02s

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
         0xc0 != 0x00
avrdude: verification error; content mismatch

avrdude: safemode: hfuse changed! Was c0, and is now 0
Would you like this fuse to be changed back? [y/n]

 

Oregon
Offline
Зарегистрирован: 19.10.2013

Добрый день.

Клапауций пишет:

1. c:\AVR>avrdude - почему avrdude находится здесь?

оно то конечно "не так":

c:\AVR>avrdude -C avrdude.conf -c arduino -P com9 -p m328p

эта странная строка у меня вызывает несколько вопросов:

 

2. чем или кем написаня сия командная строка?

3. судя по -c arduino -P com9 -p m328p - вы пытаетесь шить контроллер из под загрузчика, записанного на этом же контроллере?

фьюзы и загрузчик нужно шить внешним программатором, который подключается к контроллеру по интерфейсу ISP и выбирается в меню Arduino IDE "Программатор", первая командная строка процедуры вызванной из меню Arduino IDE "Записать загрузчик" будет выглядеть следующим образом:

*\arduino-1.0.5\hardware/tools/avr/bin/avrdude -CD:\Program Files mini\arduino-1.0.5\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -patmega16 -cusbasp -Pusb -e -Uhfuse:w:null:m -Ulfuse:w:null:m 

*для примера скопипастил для внешнего программатора usbasp и контроллера atmega16.

т.е. сначала контроллер стирается полностью(см. приведённую цитату лога), а затем пишутся фьюзы, записывается лоадер, лочится загрузочная область.

и, желательно, всё производится при напряжении 5V.

1. Просто перенес в папку, чтоб легче из командной строки работать было.

2,3. Где-то скопировал, порт поменял и значения фьюзов подставил. Ну вообщем это все от незнания ).

 

Все бы хорошо, но одну плату все-таки "ушатал".  Не удается записать загрузчик. (

 

Клапауций
Offline
Зарегистрирован: 10.02.2013

Oregon пишет:

Не удается записать загрузчик. (

ясно, что не удаётся - невозможно записать загрузчик без внешнего программатора.

...я же писал выше, почему так происходит - нужно подключить программатор к контроллеру по ISP.

Oregon
Offline
Зарегистрирован: 19.10.2013

В качестве программатора выступает плата Arduino UNO .

Клапауций
Offline
Зарегистрирован: 10.02.2013

Oregon пишет:

В качестве программатора выступает плата Arduino UNO .

утомился я устраивать допросы с пристрастием - или полное описание своих действий публикуйте с логами, т.к.  нет смысла публиковать неудачные попытки.