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 МГц?

Пожалуйста, помогите

, 👍1

Обсуждение

CKDIV должен быть равен «0», чтобы включить деление на 8. Поскольку он установлен на «1», тактовая частота будет 16 МГц (то есть при использовании кристалла 16 МГц)., @Gerben

Вы выполнили шаг 5 («Примечание для Arduino Uno: вам нужно будет добавить конденсатор емкостью 10 мкФ между сбросом и землей»)., @Gerben

Я подключил конденсатор 10 мкФ между первым на плате, который нужно запрограммировать, и GND на плате интернет-провайдера., @hoboBob

RE CLKDIV8 спасибо за разъяснение, @hoboBob


2 ответа


Лучший ответ:

1

Что касается ваших вопросов о настройках деления тактового сигнала: взгляните на этот красивый инструмент, он дает вам avrdude-запрос для настройки предохранители (будьте осторожны!). Бит CKDIV8 нижнего предохранителя установлен по умолчанию, поэтому AT328p будет работать на частоте 1 МГц, очистка этого бита приведет к частоте 8 МГц.

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

Я вижу, что avrdudes заявляет, что напряжение питания составляет 0,3 В, что слишком мало для связи. Любые полученные биты будут иметь низкий уровень, и, следовательно, любая прочитанная информация будет равна 0. ISP обычно предоставляют напряжение питания, которое часто можно выбрать переключателями на программаторе. Если вы уверены, что с вашим программатором все в порядке, проверьте схему в целом.

Кстати, какую модель ISP вы используете? Ваш микроконтроллер собран на специальной плате (установке?)? Если да, есть ли у вас плата типа Arduino, чтобы проверить такое поведение?

,

0

Я использую 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] ЗАГРУЗКИ

,