Arduino Polska Forum

Pełna wersja: Uno bootloader Leonardo( pro micro ) / SparkFun
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam Was.
Robię hamulec ręczny + skrzynie biegów do kompa na Leonardo( Pro Micro), wgrałem program i działało ale wartości dla czujnika halla były duże i kombinowałem z zmianą ich by odczyt na kompie był płynniejszy i w pełnym zakresie 0-100%. Na oryginalnym wsadzie zakres wynosił 18%-82% gdzie 18% to brak pola magnetycznego.

Udało mi się znaleźć wartość by komputer odczytywał 0-100% ale chciałem dodać do kodu 2 przyciski. I po wgraniu chyba zablokowałem leonardo( Pro Micro) bo komputer i 2 laptopy wykrywają niepopranie urządzenie USB.
Więc korzystając z tego że mam UNO i tego poradnika https://schou.dk/linux/arduino/isp/ oraz https://www.youtube.com/watch?v=xl-XQ_te8zM od 6:30 minuty, próbuje wgrać nowy bootloader do Leonardo( Pro Micro).
Lecz przy wgrywaniu bootloadera dostaje komunikat


Kod:
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.

Błąd przy wgrywaniu bootloadera.
Sprawdź działanie tego programatora z płytką, o której masz wiedzę graniczącą z pewnością, że jest sprawna. To że nie widzi płytki MICRO jako portu COM może być wynikiem braku bootloadera, ale również z powodu uszkodzenia uC. Czasami pomaga wymiana kabla. Na każdym komputerze trzeba mieć też zainstalowane Arduino z driverami do płytek, inaczej nie rozpozna MICRO.
A sam komunikat to informacja, że nic nie wykryło - może programator nie działa, może połączenie jest złe, może uC upalony. I obyś nie łączył RST-RST płytek, bo takie cuda tez widywałem na forach.
Na UNO wgrałem inny program i wykonywał polecenia.
Połączenie jest raczej dobre. Przesyłam fotke.
[Obrazek: bty.jpg]
Robię tak
wybieram gotowca ArduinoISP
Programator ArduinoISP
Płytka UNO
I port pod którym jest płytka.
Wgrywam program.

Podłączam do płytki UNO ProMicro i zmieniam płytke na Leonardo( wcześniej program programował pod Leonardo)
Programator Arduino as ISP
I klikam Wgraj bootloader.
Po podłączeniu ProMicro pod UNO komputer nie reaguje tzn nie wyskakują żadne komunikaty odnośnie podpiętego urządzenia. Na ProMicro świeci się zielona dioda ale raczej tylko dlatego bo napięcie podłączone.

Teraz komputer nie reaguje gdy podłączę ProMicro do kompa. 
Wgrałem też bibliotekę płytek SparFun Pro Micro ale bez rezultatu. 
W razie czego mam jeszcze USBASP jakby nie dało się wgrać bootloader przez UNO. 
Tylko że nie znalazłem odpowiedniej instrukcji.
Nie ważne czy używasz Arduino as ISP czy USBASP podłączenie jest takie samo, z programatora masz linie MOSI, MISO, SCK, RST, GND i ewentualnie VCC. Wstukasz w Google "Kanda 10"/"Kanda 6" (w zależności jaką masz wtyczkę i będziesz wiedział gdzie co podłączyć.
Jak programator działa z inną płytką, to pewnie uC jest uszkodzony. On coś odczytuje, ale nie pasuje mu sygnatura. Przewiń tekst wyżej, włącz pełne komunikaty podczas kompilacji i wgrywania (opcja w ustawieniach Arduino IDE) i sprawdź jaką faktycznie sygnaturę widzi.
ArduinoISP
Kod:
avrdude: Version 6.3-20190619
        Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
        Copyright (c) 2007-2014 Joerg Wunsch

        System wide configuration file is "C:\Users\misio\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"

        Using Port                    : usb
        Using Programmer              : arduinoisp
Błąd przy wgrywaniu bootloadera.
avrdude: Error: Could not find USBtiny device (0x2341/0x49)

avrdude done.  Thank you.


Arduino as ISP 

Kod:
avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\misio\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"

         Using Port                    : COM3
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
         AVR Part                      : ATmega32U4
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PA0
         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  9000  9000 0x00 0x00
           flash         65     6   128    0 yes     32768  128    256  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 STK500 Version 1.x firmware
         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: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x000000 (retrying)

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x000000 (retrying)

Błąd przy wgrywaniu bootloadera.
Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.

Próbowałem ogarnąć to przez AVRLAB ale widzi tylko UNO.
Tez próbowałem sterownikami z Zadig ale podobnie bez rezultatu.
Czyli coś tam gada w trybie Arduino as ISP, sygnatura 0 to albo procek jest uszkodzony lub przestawiony w taki tryb pracy (bo tak na prawdę nie gada, ale przy złych driverach czy braku połączenia są inne komunikaty), gdzie programator USBASP i inne typu ISP nie dadzą rady. Raczej bez wyjęcia uC z układu niewiele zrobisz. Są narzędzia typu "avr doctor" lub programatory wysokonapięciowe, ale przynajmniej trzeba by odłączyć przynajmniej pin RST, możesz poczytać w Google jak to reanimować.
Na początku przygody z AVR dużo szybciej i taniej kupić po prostu kolejnego klona za 20zł. Jakby to był oryginał to można wysłać na reklamacje.
Zdecydowanym lekarstwem byłaby wymiana uC, ale 32u4 potrafi kosztować więcej niż gotowy klon Arduino z tym uC.
Zakupiłem nową Pro Micro i testuje szukam odpowiedniej wartości map().
Wgrałem 5-6 raz program z wartością
Kod:
{int pot = analogRead(A0);
int mapped = map(pot,0,0,0,250);
I znowu Pro Micro padło, PC przestał wykrywać .
Wcześniej wgrywałem z innymi wartościami.

Podaje pełny komunikat w momencie wgrywania ostatni raz, po tym komunikacie rozłączyło ProMicro podłączyło ale już nie rozpoznało urządzenia.
Kod:
avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\misio\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"

         Using Port                    : COM9
         Using Programmer              : avr109
         Overriding Baud Rate          : 57600
         AVR Part                      : ATmega32U4
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PA0
         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  9000  9000 0x00 0x00
           flash         65     6   128    0 yes     32768  128    256  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 : butterfly
         Description     : Atmel AppNote AVR109 Boot Loader

Connecting to programmer: .
Found programmer: Id = "CATERIN"; type = S
    Software Version = 1.0; No Hardware Version given.
Programmer supports auto addr increment.
Programmer supports buffered memory access with buffersize=128 bytes.

Programmer supports the following devices:
    Device code: 0x44

avrdude: devcode selected: 0x44
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9587 (probably m32u4)
avrdude: reading input file "C:\Users\misio\AppData\Local\Temp\arduino_build_332536/ANALOG_EBRAKE.ino.hex"
avrdude: writing flash (5888 bytes):

Writing | ################################################## | 100% 0.45s

avrdude: 5888 bytes of flash written
avrdude: verifying flash memory against C:\Users\misio\AppData\Local\Temp\arduino_build_332536/ANALOG_EBRAKE.ino.hex:
avrdude: load data flash data from input file C:\Users\misio\AppData\Local\Temp\arduino_build_332536/ANALOG_EBRAKE.ino.hex:
avrdude: input file C:\Users\misio\AppData\Local\Temp\arduino_build_332536/ANALOG_EBRAKE.ino.hex contains 5888 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.04s

avrdude: verifying ...
avrdude: 5888 bytes of flash verified

avrdude done.  Thank you.

Płytka na porcie COM6 jest niedostępna.


Program jaki wgrywam ma taki kod
Kod:
// PIN A0 to 10k pot output - Throttle Axis
// Use with Arduino ProMicro.
// Tested and working in DiRT RALLY + ASSETTO CORSA
// by AMSTUDIO
// 20.1.2017

#include <Joystick.h>

void setup()

{pinMode(A0, INPUT);
   Joystick.begin();}

const int pinToButtonMap = A0;

void loop()

{int pot = analogRead(A0);
int mapped = map(pot,0,0,0,250);
{Joystick.setThrottle(mapped);}}

Oryginalnie wartości map() są takie map(pot,0,1023,0,255);


Teraz udało się wgrać bootloader do ProMicro i działa znowu.
Proces wgrywania się rozpoczął, zakończył i wszystko było OK. Jak wgrywasz program Joystick to on zastępuje program do komunikacji przez port COM, dlatego jest potem komunikat, że nie ma portu COM6. Zauważ, że wgrywał na port COM9. Jak Arduino chce coś wgrać to na ten port otwiera z prędkością 1200b, to powoduje reset, płytka zgłasza się na porcie do wgrywania, u Ciebie akurat COM9, ten port przez 8s czeka na wsad, wgrywa się program i potem wraca na port COM6. Tu coś zawiodło. Może po prostu nie zrobił reset płytki prawidłowo. Jak wgrasz program i skasuje bootloader to pewnie nic bez programatora nie zrobisz, ale może wystarczyć ponowne podłączenie do komputera lub wciśnięcie RST i zaobserwowanie czy pojawia się COM9, po 8s COM6, a przynajmniej port COM9.
Może też zależeć, jaka jest biblioteka. Jak wgrywam przykładowy szkic z Joystickiem to widzę i port COM do komunikacji i sam Joystick.
W UNO za każdym razem gdy wgrasz szkic programatorem funkcjonalność bootloadera znika, zapewne tu jest tak samo.