Arduino Uno считывние предохранителей
Я пытаюсь прочитать значения предохранителей для Arduino Uno, но мне постоянно возвращаются следующие результаты:
enter code hereavrdude: Version 6.0.1, compiled on Dec 16 2013 at 17:26:24
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch
System wide configuration file is "/usr/local/CrossPack-AVR-20131216/etc/avrdude.conf"
User configuration file is "/Users/hd334/.avrduderc"
User configuration file does not exist or is not a regular file, skipping
Using Port : /dev/cu.usbmodem1421
Using Programmer : arduino
Overriding Baud Rate : 115200
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 : Arduino
Description : Arduino
Hardware Version: 3
Firmware Version: 4.4
Vtarget : 0.3 V
Varef : 0.3 V
Oscillator : 28.800 kHz
SCK period : 3.3 us
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e950f
avrdude: safemode: lfuse reads as 0
avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0
avrdude: safemode: lfuse reads as 0
avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0
avrdude: safemode: Fuses OK (H:00, E:00, L:00)
avrdude done. Thank you.
Я тоже пробовал использовать avrisp в качестве программатора, но выдает сообщение о недопустимой подписи устройства. Если я переопределяю проверку подписи устройства с помощью -FI, получаю те же результаты, что и выше.
Я использую Uno в качестве ISP для другого uno и соединил их вместе, как описано в разделе https://www.arduino.cc/en/Tutorial/ArduinoISP
Я загрузил загрузчик Arduino Atmega328P и в настройках предохранителя, указанных в файле boards.txt, ожидаю увидеть: lfuse читает 0xff hfuse читает 0xde efuse читает 0x05
Другой вопрос: если для нижнего предохранителя установлено значение 0xff, CKDIV8 запрограммирован, поэтому не будет ли тактовая частота установлена на 2 МГц?
Пожалуйста, помогите
@hoboBob, 👍1
Обсуждение2 ответа
Лучший ответ:
Что касается ваших вопросов о настройках деления тактового сигнала: взгляните на этот красивый инструмент, он дает вам avrdude-запрос для настройки предохранители (будьте осторожны!). Бит CKDIV8 нижнего предохранителя установлен по умолчанию, поэтому AT328p будет работать на частоте 1 МГц, очистка этого бита приведет к частоте 8 МГц.
При перепрошивке никогда не следует отменять какие-либо проверки, так как это может повредить/заблокировать ваш чип.
Я вижу, что avrdudes заявляет, что напряжение питания составляет 0,3 В, что слишком мало для связи. Любые полученные биты будут иметь низкий уровень, и, следовательно, любая прочитанная информация будет равна 0. ISP обычно предоставляют напряжение питания, которое часто можно выбрать переключателями на программаторе. Если вы уверены, что с вашим программатором все в порядке, проверьте схему в целом.
Кстати, какую модель ISP вы используете? Ваш микроконтроллер собран на специальной плате (установке?)? Если да, есть ли у вас плата типа Arduino, чтобы проверить такое поведение?
Я использую stk500 (программатор USB <> ISP) для чтения предохранителей atmega328p. Я использую этот cmd:
C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avrdude.exe -CC:"\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf" -v -patmega328p -cstk500 -PCOM9 -e -Ulfuse:r:-:i -Uhfuse:r:-:i -Uefuse:r:-:i
Некоторое время назад у меня возникли проблемы с подписями устройств, поскольку я пропустил букву «p» в определении atmega328p.
Совет: вы можете проверить подробную информацию Arduino, чтобы получить дополнительную информацию:
ФАЙЛ >> ПРЕДПОЧТЕНИЯ
ПОКАЗАТЬ ПОДРОБНЫЙ ВЫВОД ВО ВРЕМЯ: [x] КОМПИЛЯЦИИ [x] ЗАГРУЗКИ
- Заменить предохранители Arduino Uno (может ли Arduino Uno заменить свои собственные предохранители?)
- Atmega328p — переход на низкое энергопотребление 1,8 В с использованием генератора 4 МГц — прошивка загрузчика
- Не могу записать загрузчик с помощью avrisp
- Программирование низкобайтового предохранителя для atmega328 в Arduino Uno
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
- Не удается снова загрузиться после смены платы
- Arduino 16 МГц только с 3,3 В?
- Генерация стабильной частоты
CKDIV должен быть равен «0», чтобы включить деление на 8. Поскольку он установлен на «1», тактовая частота будет 16 МГц (то есть при использовании кристалла 16 МГц)., @Gerben
Вы выполнили шаг 5 («Примечание для Arduino Uno: вам нужно будет добавить конденсатор емкостью 10 мкФ между сбросом и землей»)., @Gerben
Я подключил конденсатор 10 мкФ между первым на плате, который нужно запрограммировать, и GND на плате интернет-провайдера., @hoboBob
RE CLKDIV8 спасибо за разъяснение, @hoboBob