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.
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.