Novinky: Pridal som novú sekciu na webe - Turistika
Sitepoint logo

Oživenie Arduino UNO R3, ktoré sa nezobrazovalo v správcovi zariadení

Pri práci na jednom projekte pre zákaníka sa mi odporúčalo moje prvé, pôvodné UNO, kúpené za plnú cenu cca 35€. Mám tu okolo seba síce 10 ďalších replík z ebay (Pro Mini, Pro Micro…), ale projekt bol postavený na shielde pre UNO, tak som ho chcel/musel opraviť. Prvý krát som prepóloval 12V n a RAW vstupe a odniesol si to len stabilizátor NCP1117-ST50 v puzdre SOT-223, opravil som, doplnil schootky na vstup aby sa to neopakovalo.

Druhý krát sa odporúčalo z nezistenej príčiny, prestalo sa hlásiť vo Windowse, žiaden virtuálny COM port, nič. Reštart, iný USB port, iný kábel, nič. Zelená LED svietila, ale to bolo všetko. Pomeral som napätia na MEGA238P aj na MEGA16U2, všetko hralo. Skúšobne som išiel nahrať nejaký program cez FTDI kábel (VCC, GND, D0, D1, RESTART) ale nešlo to. Bolo jasné, že bootloader alebo celý procesor je v čudu, iný som po ruke nemal, tak som začal pátrať a objavil som super návod ako využiť DFU režim MEGA16U2.

dfu-modePo resetnutí MEGA16U2 sa v správcovi zariadení zobrazil, nahral som ovládač, objavil sa ako ATmega16U2, ale v programe FLIP sa mi nedarilo, firmware Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex sa nechcel zmestiť do bufferu, Arduino-usbserial-atmega16u2-Uno-Rev3.hex sa síce zmestil, ale pri uploade vždy vybehla chyba že nevie skontrolovať čo zapísal (verify).

dfu-rangeTu už mi trochu zredlo a obával som sa že MEGA16U2 je kaput. Nádej mi na druhej strane dodávalo, že išiel prepnúť do DFU režimu…

Ako ďalšia možnosť sa ukázalo použiť ISP programátor a využiť ISP piny priamo na doske. AVR programátor doma nemám, ale zistil som že je jednoduché si ho vyrobiť – Mini Pro -> ISP programátor. Potom stačí nahrať do Mini Pro obligátny sketch ArduinoISP a použiť príkazový riadok.mini-ispDo adresára \arduino\hardware\tools\avr\bin treba skopírovať súbor \arduino\hardware\tools\avr\etc\avrdude.conf a súbor Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex a spustiť príkaz:

avrdude.exe -C avrdude.conf -b 19200 -c avrisp -P COM12 -p m16u2 -v -U flash:w:Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex:i

COM port upravte podľa seba, Enter a je to.

avrdude.exe: Version 5.11, compiled on Sep  2 2011 at 19:38:36
             Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
             Copyright (c) 2007-2009 Joerg Wunsch

             System wide configuration file is "avrdude.conf"

             Using Port                    : COM12
             Using Programmer              : avrisp
             Overriding Baud Rate          : 19200
             AVR Part                      : ATmega16U2
             Chip Erase delay              : 9000 us
             PAGEL                         : PD7
             BS2                           : PC6
             RESET disposition             : possible i/o
             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        512    4    128  9000  9000 0x00 0x00
               flash         65     6   128    0 yes     16384  128    128  4500  4500 0x00 0x00
               lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
               hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
               efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
               lock           0     0     0    0 no          1    0      0  9000  9000 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 : STK500
             Description     : Atmel AVR ISP
             Hardware Version: 2
             Firmware Version: 1.18
             Topcard         : Unknown
             Vtarget         : 0.0 V
             Varef           : 0.0 V
             Oscillator      : Off
             SCK period      : 0.1 us

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.10s

avrdude.exe: Device signature = 0x1e9489
avrdude.exe: safemode: lfuse reads as EF
avrdude.exe: safemode: hfuse reads as D9
avrdude.exe: safemode: efuse reads as F4
avrdude.exe: NOTE: FLASH memory has been specified, an erase cycle will be performed
             To disable this feature, specify the -D option.
avrdude.exe: erasing chip
avrdude.exe: reading input file "Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex"
avrdude.exe: writing flash (15668 bytes):

Writing | ################################################## | 100% 10.33s

avrdude.exe: 15668 bytes of flash written
avrdude.exe: verifying flash memory against Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex:
avrdude.exe: load data flash data from input file Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex:
avrdude.exe: input file Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex contains 15668 bytes
avrdude.exe: reading on-chip flash data:

Reading | ################################################## | 100% 14.60s

avrdude.exe: verifying ...
avrdude.exe: 15668 bytes of flash verified

avrdude.exe: safemode: lfuse reads as EF
avrdude.exe: safemode: hfuse reads as D9
avrdude.exe: safemode: efuse reads as F4
avrdude.exe: safemode: Fuses OK

avrdude.exe done.  Thank you.

Ešte som musel podobným spôsobom preflashnúť aj bootloader na MEGA328P, čiže druhý ISP konektor a iný HEX súbor

avrdude.exe -C avrdude.conf -b 19200 -c avrisp -P COM12 -p m328p -v -U flash:w:ATmegaBOOT_168_atmega328.hex.hex:i

a hotovo, UNO rev3 funguje ako predtým.


Categories:

Tags:


Comments

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *