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 в качестве интернет-провайдера для другого 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. Интернет-провайдеры обычно предоставляют напряжение питания, которое часто можно выбрать переключателями на программаторе. Если вы уверены, что с вашим программатором все в порядке, проверьте схему в целом.

Кстати, какую модель интернет-провайдера вы используете? Ваш микроконтроллер собран на специальной плате (установке?)? Если да, есть ли у вас плата типа 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] ЗАГРУЗКИ

,