Сохранение EEPROM после программирования на Arduino uno
Я использую Arduino Uno, и я использую EEPROM для хранения некоторых настроек. Это прекрасно работает. Но когда я перепрограммирую Arduino, EEPROM уничтожается. Есть ли способ предотвратить это и не менять EEPROM после программирования Arduino?
Я использую программатор USBtinyISP.
Большое вам спасибо за вашу помощь и продвижение вперед.
Вот подробный результат моего программирования:
Sketch uses 5,298 bytes (16%) of program storage space. Maximum is 32,256 bytes.
Global variables use 286 bytes (13%) of dynamic memory, leaving 1,762 bytes for local variables. Maximum is 2,048 bytes.
/Users/fed/Library/Arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/bin/avrdude -C/Users/fed/Library/Arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/etc/avrdude.conf -v -patmega328p -cusbtiny -Uflash:w:/var/folders/lb/5zdjdm6153jcx_5nq32tt7gw0000gn/T/buildb926e4430d002b65d0ca44bda9d693e2.tmp/LED_strip_08.ino.hex:i
avrdude: Version 6.3, compiled on Jan 17 2017 at 12:01:35
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "/Users/fed/Library/Arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/etc/avrdude.conf"
User configuration file is "/Users/fed/.avrduderc"
User configuration file does not exist or is not a regular file, skipping
Using Port : usb
Using Programmer : usbtiny
avrdude: usbdev_open(): Found USBtinyISP, bus:device: 006:003
AVR Part : ATmega328P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : USBtiny
Description : USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/
avrdude: programmer operation not supported
avrdude: Using SCK period of 10 usec
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: Using SCK period of 10 usec
avrdude: reading input file "/var/folders/lb/5zdjdm6153jcx_5nq32tt7gw0000gn/T/buildb926e4430d002b65d0ca44bda9d693e2.tmp/LED_strip_08.ino.hex"
avrdude: writing flash (5298 bytes):
Writing | ################################################## | 100% 7.80s
avrdude: 5298 bytes of flash written
avrdude: verifying flash memory against /var/folders/lb/5zdjdm6153jcx_5nq32tt7gw0000gn/T/buildb926e4430d002b65d0ca44bda9d693e2.tmp/LED_strip_08.ino.hex:
avrdude: load data flash data from input file /var/folders/lb/5zdjdm6153jcx_5nq32tt7gw0000gn/T/buildb926e4430d002b65d0ca44bda9d693e2.tmp/LED_strip_08.ino.hex:
avrdude: input file /var/folders/lb/5zdjdm6153jcx_5nq32tt7gw0000gn/T/buildb926e4430d002b65d0ca44bda9d693e2.tmp/LED_strip_08.ino.hex contains 5298 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 4.98s
avrdude: verifying ...
avrdude: 5298 bytes of flash verified
avrdude done. Thank you.
@Fed, 👍3
Обсуждение1 ответ
Вы можете изменить предохранители для Atmega328
, чтобы сохранить EEPROM
во время стирания микросхемы (для программирования ISP). В принципе, если вы используете
USBtiny
, подключенный к UNO
с помощью контактного разъема 3x2, вы используете
программирование ISP
. Это означает, что стирание чипа также стирает EEPROM
, если значение EESAVE предохранителя равно
1
(незапрограммировано).
Загрузка через загрузчик Arduino
(это означает, что UNO
подключен непосредственно к компьютеру, и нет другого устройства, такого как USBtiny
). Тогда EEPROM
должен быть сохранен.
Итак, вы хотите сказать, что замена предохранителей (я понятия не имею, как это сделать) может сработать, а может и не сработать. Но не использование Arduino IDE, а использование AVRdude в командной строке должно работать?, @Fed
@Fed EEPROM может быть изменен avrdude, но Arduino обычно ничего с ним не делает (вы можете увидеть всю команду в Arduino IDE, если вы включите подробную загрузку)., @KIIV
Я обновил подробный вывод Arduino IDE, когда программировал Arduino. Есть какие-нибудь предложения?, @Fed
@fed Самое главное - это USBtiny-он выполняет стирание чипа и без предохранителя EESAVE, запрограммированного на 0, он также стирает EEPROM., @KIIV
- ATmega328P-PU: программатор не отвечает
- Arduino EEPROM сохраняет старые данные после прошивки новой программой
- Как увеличить срок службы EEPROM?
- Использование EEPROM в цикле ()
- Запустить код один раз после программирования
- Какой программатор выбрать в Arduino IDE для ATMEL-ICE ISP?
- Не получается читать из / писать в EEPROM
- Управление конфигурациями через EEPROM путем записи в шестнадцатеричный файл
Я считаю, что avrdude позволяет получить доступ к каждому типу памяти независимо, так что это, вероятно, проблема с командами, которые выдает IDE. Другой вариант-использовать avrdude для резервного копирования eeprom, а затем перезаписать его. В принципе, вам нужно ознакомиться с avrdude и выяснить, как вы можете изменить способ его использования IDE. Или же только IDE создаст ваш скетч и использует avrdude вручную для его загрузки., @Chris Stratton
Я должен уточнить, что мой предыдущий комментарий был больше об использовании avrdude для ISP; с моей точки зрения, я не уверен, какое подмножество этого поддерживает загрузчик., @Chris Stratton