Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 28 mar 2024, o 12:31


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 
Autor Wiadomość
PostNapisane: 19 cze 2015, o 19:01 
Offline
Nowy

Dołączył(a): 12 cze 2015
Posty: 5
Pomógł: 0

Z racji tego, że to mój pierwszy post na tym forum - witam wszystkich :)

Zanim zadam główne pytanie w tym temacie - małe podsumowanie wiedzy:

Arduino Micro i Arduino Leonardo są o tyle nietypowymi płytkami z serii Arduino, że posiadają na pokładzie tylko jeden mikrokontroler (ATmega32u4 ze sprzętową obsługą usb), odpowiedzialny zarówno za realizację programu użytkownika, jak i wgrywanie wsadu przez bootloader. Większość pozostałych płytek ma dwa oddzielne procesory realizujące w/w funkcje.

Sposób inicjacji bootloadera jest opisany na stronie http://www.arduino.cc/en/Main/ArduinoBoardMicro w sekcji Automatic (Software) Reset and Bootloader Initiation i w skrócie wygląda następująco:
  1. Zresetowanie mikrokontrolera - może odbywać się na dwa sposoby:
    • Ręcznie - poprzez wciśnięcie przycisku reset
    • Programowo - poprzez otwarcie wirtualnego (CDC) portu szeregowego/COM o prędkości transmisji 1200 bodów i następnie zamknięcie tego portu. Po przeprowadzeniu tej operacji następuje reset procesora i zerwanie łączności USB z komputerem.
  2. Po resecie uC uruchamia bootloader na około 8 sekund. Do komunikacji z bootloaderem jest otwierany osobny port o innym numerze! - w tym czasie trzeba zainicjować wgrywanie wsadu. Jeśli nie zdąży się tego zrobić, port bootloadera zostaje zamknięty i procesor powraca do normalnego trybu pracy.
W moim przypadku, w Arduino IDE komunikację z płytką mam ustawioną na COM4, natomiast (co łatwo sprawdzić uruchamiając menedżer urządzeń), po wciśnięciu przycisku reset port COM4 znika, na 8 sekund pojawia się port COM6, po czym z powrotem następuje powrót do portu COM4. To samo dzieje się po wciśnięciu przycisku upload w Arduino IDE. Ładnie to widać na poniższych screenach:

Obrazek

Obrazek

Powoli przechodzę do meritum :) standardowy, działający sposób konfiguracji bootloadera Arduino Micro (i Leonardo, jak przypuszczam) w Eclipse Luna, jest następujący:
Obrazek
Podkreślam:
  • Nie ustawia się konfiguracji programatora Arduino, tylko Atmel AppNote AVR109 Boot Loader.
  • Nie podaje się tego samego portu, co w Arduino IDE (w moim przypadku COM4), tylko port otwierany dla bootloadera (w moim przypadku COM6).

Podobnie w MkAvrCalculator:
Obrazek

Procedura programowania procka wygląda tak:
  1. Wcisnąć przycisk reset w Arduino Micro (Leonardo)
  2. Policzyć do 4 ;) - po tym czasie mamy pewność, że Arduino zdążyło otworzyć port bootloadera
  3. Zuploadować projekt do procesora / popełnić jakieś czynności w MkAvrCalculator ;)

Wygenerowane polecenie AVRDUDE dla projektu o nazwie TEST:
Kod:
avrdude -pm32u4 -cavr109 -PCOM6 -Uflash:w:TEST.hex:a

W Arduino IDE wciśnięcie resetu nie jest konieczne z uwagi na użycie opisanej wcześniej procedury programowego resetowania procka.

Moje pytanie brzmi następująco: czy zna ktoś (lub używa) jakiś sprytny sposób na ominięcie 1. i 2. kroku, tak aby wgrywanie wsadu z poziomu Eclipse odbywało się po prostu przez wciśnięcie przycisku upload, bez wcześniejszego ręcznego resetowania procesora? Jakieś dodatkowe polecenia w linii AVRDUDE, coś w stylu: resetuj z użyciem portu COM4, poczekaj 4s, wykonaj pozostałą, "standardową" procedurę z użyciem COM6?

Będę wdzięczny za wskazówki :)



Ostatnio edytowano 20 cze 2015, o 09:12 przez kadi90, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2015, o 20:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

wystarczy wybrać arduino programer ...

:P

Obrazek

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 cze 2015, o 09:02 
Offline
Nowy

Dołączył(a): 12 cze 2015
Posty: 5
Pomógł: 0

No właśnie niestety nie wystarczy ;) na pewno nie u mnie. Próbowałem wielokrotnie. We wtorek będę mógł wrzucić screena obrazującego zachowanie avrdude'a przy takiej konfiguracji, ale zapewniam, że ona nie działa. Domyślam się, że może nie działać właśnie z uwagi na specyficzną budowę Micro/Leonardo. Wszędzie wzdłuż i wszerz na forach ludzie korzystają z avr109.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 cze 2015, o 11:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

U mnie dział na uno R3 , na Mega R3 , na Leonardo

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 cze 2015, o 16:06 
Offline
Nowy

Dołączył(a): 12 cze 2015
Posty: 5
Pomógł: 0

SunRiver, w Uno i Mega jestem skłonny uwierzyć, ale na Leonardo na 100%? Bez wciskania ręcznie resetu przed zaprogramowaniem? Wybacz, że tak drążę, ale uparło mi się toto i nie chce działać ;)

W międzyczasie znalazłem ciekawy wpis na blogu: https://typeunsafe.wordpress.com/2011/0 ... h-avrdude/

Zainstalowałem sobie na szybko Arduino IDE i - korzystając ze wskazówek w sekcji Taking a clue from Arduino IDE - dopisałem na końcu pliku C:\Program Files\Arduino\lib\preferences.txt następujące dwie linijki:
Kod:
build.verbose=true
upload.verbose=true

(Dzięki temu Arduino IDE po wciśnięciu przycisku Upload loguje w okienku na dole, co na bieżąco wyprawia ;) )

Na obecnym komputerze Arduino pracuje na porcie COM3, a Arduino Bootloader na porcie COM4.

Arduino IDE programuje moje Arduino Micro, wykonując taki zestaw komend (gdyby Eclipse był w stanie coś takiego wymusić, byłbym "w domu" ;)):
Kod:
Forcing reset using 1200bps open/close on port COM3
PORTS {COM3, } / {COM3, } => {}
PORTS {COM3, } / {COM3, } => {}
PORTS {COM3, } / {COM3, } => {}
PORTS {COM3, } / {COM3, } => {}
PORTS {COM3, } / {COM3, } => {}
PORTS {COM3, } / {COM3, } => {}
PORTS {COM3, } / {COM3, } => {}
PORTS {COM3, } / {COM3, } => {}
PORTS {COM3, } / {COM3, } => {}
PORTS {COM3, } / {COM3, } => {}
PORTS {COM3, } / {COM3, } => {}
PORTS {COM3, } / {} => {}
PORTS {} / {COM4, } => {COM4, }
Found upload port: COM4
C:\Program Files\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega32u4 -cavr109 -PCOM4 -b57600 -D -Uflash:w:C:\Users\Admin\AppData\Local\Temp\build8029269011277471136.tmp/Blink.cpp.hex:i

+ dalszy fragment logu, będący dziełem avrdude'a:
Kod:
avrdude: Version 6.0.1, compiled on Apr 15 2015 at 19:59:58
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "C:\Program Files\Arduino\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : COM4
         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
avrdude: reading input file "C:\Users\Admin\AppData\Local\Temp\build8029269011277471136.tmp/Blink.cpp.hex"
avrdude: writing flash (4790 bytes):

Writing | ################################################## | 100% 0.42s

avrdude: 4790 bytes of flash written
avrdude: verifying flash memory against C:\Users\Admin\AppData\Local\Temp\build8029269011277471136.tmp/Blink.cpp.hex:
avrdude: load data flash data from input file C:\Users\Admin\AppData\Local\Temp\build8029269011277471136.tmp/Blink.cpp.hex:
avrdude: input file C:\Users\Admin\AppData\Local\Temp\build8029269011277471136.tmp/Blink.cpp.hex contains 4790 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.08s

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

avrdude done.  Thank you.

Jak więc widać, samo Arduino IDE korzysta z konfiguracji "avr109", a nie "arduino", do programowania mojego Arduino Micro.

Da się jakoś zmusić Eclipse'ową wtyczkę do avrdude'a, żeby zrealizował ten sam ciąg komend, jak zacytowany przeze mnie powyżej? U mnie w oknie konfiguracji programatora jest jeszcze linijka Other options: Use this field to add any avrdude option not covered by the plugin, aczkolwiek obawiam się, że to raczej nie pomoże. Sam pokombinuję we wtorek, gdy będę miał dostęp do Eclipse'a, ale z chęcią skorzystam ze wskazówek bardziej ogarniętych w temacie :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 cze 2015, o 18:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

mnożysz problemy których niema ....

masz wszystko i nic nie robisz :) jak ci piszę że działa to działa .. choć nie lubię używać bootloaderów i wolę używać progarmatora czy to ASP czy to MK2 czy Dragolna czy One

Obrazek

działą bezproblemowo bez wciskania resetów ... ale tobie pewnie nie będzie działać
:)

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 cze 2015, o 18:38 
Offline
Nowy

Dołączył(a): 12 cze 2015
Posty: 5
Pomógł: 0

Ok. Żeby stworzyć przynajmniej wrażenie, że coś jednak robię, sprawdziłem podaną przez Ciebie konfigurację na dwóch niezależnych komputerach z Eclipse Luna 4.4.2 32bit + Atmel Toolchain 3.4.2.1573 + AVR Plugin 2.4.2. Zgodnie z Twoimi przewidywaniami nie działa na żadnym z komputerów :)

Z -carduino próbowałem różnych kombinacji, mniej i bardziej sensowne wklejam poniżej.

Przypadek 1. -carduino, nie podaję nazwy portu. Próbuje wykryć port lpt1, którego oczywiście nie znajduje.
Kod:
Launching avrdude -pm32u4 -carduino -Uflash:w:TEST.hex:a
Output:
avrdude: ser_open(): can't open device "lpt1": The system cannot find the file specified.

avrdude execution aborted


Kolejna konfiguracja, bez żadnego ręcznego wciskania resetów (COM6 to port bootloadera).
Kod:
Launching avrdude -pm32u4 -carduino -PCOM6 -Uflash:w:TEST.hex:a
Output:
avrdude: ser_open(): can't open device "\\.\COM6": The system cannot find the file specified.

avrdude execution aborted


To samo co wyżej, uruchomione 4 sekundy po ręcznym resecie Arduino Micro. Jest już trochę lepiej, ale -carduino nie chce współpracować (swoją drogą, czego on chce od stk500?)
Kod:
Launching avrdude -pm32u4 -carduino -PCOM6 -Uflash:w:TEST.hex:a
Output:
avrdude: stk500_getsync(): not in sync: resp=0x3f

avrdude done.  Thank you.

avrdude finished


Także, jak widać powyżej, -carduino mnie nie lubi. Mógłbym wklejać więcej bezsensownych konfiguracji, które testowałem, ale to chyba nie ma sensu.


Teraz pora na -cavr109 i zasugerowane przez Ciebie ustawienia (COM6 to port bootloadera):
Kod:
Launching avrdude -pm32u4 -cavr109 -PCOM6 -b57600 -Ereset -Uflash:w:TEST.hex:a
Output:
avrdude: WARNING: -E option not supported by this programmer type
avrdude: ser_open(): can't open device "\\.\COM6": The system cannot find the file specified.

avrdude execution aborted


Jeśli to samo, co wyżej, powtórzę po ręcznym resecie, program elegancko się wgrywa.

Jeśli wybiorę COM4 (port wirtualny aktywny w trakcie normalnej pracy) zamiast COM6 (port bootloadera), co oczywiście jest bez sensu, to pasek postępu mogę podziwiać w nieskończoność, bo COM4 jest cały czas otwarty, ale połączyć się z bootloaderem przez niego się nie da. Przez COM4 mogę jedynie wykonać programowy reset.

Na tym kończę raport z przeprowadzonych prac ;) i przechodzę do listy pytań odnośnie Twojej konfiguracji sprzętowo-programowej, itp.:

  1. Jakie są u Ciebie numery portów Arduino Leonardo w trakcie normalnej pracy i w trybie bootloadera (domyślam się, że dla bootloadera COM2)?
  2. Czy masz doinstalowane w Eclipse jakieś extra rzeczy, których mogę nie posiadać (listę zamieściłem na początku posta), a mogłyby wpływać na pracę wtyczki do AVRDUDE'a?
  3. Jeżeli dobrze zrozumiałem (a chcę być tego pewien) - jesteś w stanie u siebie zaprogramować Leonardo przy użyciu obu konfiguracji (-carduino i -cavr109)?
  4. W jaki sposób Eclipse'owa wtyczka do AVRDUDE'a "domyśla się", że nie ma do czynienia ze standardową płytką w stylu Arduino UNO, z którą łączność odbywa się cały czas za pomocą jednego portu (bo na płytce jest osobny układ odpowiedzialny za komunikację USB z komputerem, mikrokontroler "właściwy" nie realizuje tej komunikacji), skoro w żadnym miejscu nie podaję ani nazwy płytki, ani nazwy portu wirtualnego, przez który komunikuje się Arduino Micro, dopóki się go nie zresetuje programowo/sprzętowo?

    Czy AVRDUDE/Eclipse w jakiś sposób "zgaduje", na którym porcie (u mnie COM4) jest podłączone Arduino Leonardo/Micro w trybie normalnej pracy (a musi się jakoś tego dowiedzieć, żeby zresetować ATmegę32u4 przed uruchomieniem właściwego polecenia avrdude z użyciem portu bootloadera /u mnie COM6/)?

    Innymi słowy - skąd Eclipse'owa wtyczka do AVRDUDE w ogóle wie, że musi wykonać jakąś egzotyczną procedurę resetu i odczekać chwilę, zanim zacznie wgrywać wsad?
  5. Czy opcja -E reset, którą dodałeś w ostatniej proponowanej konfiguracji, jest istotna w tym przypadku? W przypadku -carduino i -cavr109 otrzymuję następujący komunikat:
    Kod:
    avrdude: WARNING: -E option not supported by this programmer type

PS. Chyba nie jestem osamotniony. Np. tutaj:
http://forums.adafruit.com/viewtopic.php?f=22&p=176750
kolega, żeby rozwiązać problem, którego nie ma, stworzył nawet skrypt w Pythonie :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 cze 2015, o 18:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

stosunkowo dziwna sprawa bo to działa prawidłowo ...
niemniej sprawdzę jeszcze na innym kompie na wszelki wypadek

P.S działa tez z wtyczką pod Arduino pod eclipse u mnie

Cytuj:
avrdude: stk500_getsync(): not in sync: resp=0x3f


zauważ że bootloader korzysta z trybu zgodności z stk500
co ciekawe leonardo i nowsze arduina używają protokołu stk500v2

------------------------ [ Dodano po: 1 minucie ]

hmm... na drugim kompie nie działa występuje problem z brakiem synchronizacji
zaiste ciekawa sprawa ..... stery te same win8.1 pro ten sam ale inny układ zarządzający USB bo Ali

w obu przypadkach zaznaczam używam eclipse hatsune (opartego o juno)

------------------------ [ Dodano po: 16 minutach ]

u mnie konfig dla avr109 w avrdude wygląda tak

Składnia: [ Pobierz ] [ Ukryj ]
język actionscript
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


i to działą na 100% na moim kompie , ale nie działą już na drugim .... dziwne


Autor postu otrzymał pochwałę

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 cze 2015, o 17:25 
Offline
Nowy

Dołączył(a): 12 cze 2015
Posty: 5
Pomógł: 0

Dzięki SunRiver za dotychczasowe wskazówki. Na ten moment nie udało mi się nic wskórać i niestety muszę odpuścić, przynajmniej w najbliższym czasie. Jeśli uda mi się dojść do czegoś sensownego przy testowaniu sugerowanych przez Ciebie ustawień, to dam znać, może przyszłe pokolenia na tym skorzystają ;)

Jednak z tego co piszesz, to faktycznie wychodzi na to, że trzeba się wstrzelić z konfiguracją sprzętowo-programową w określone widełki, inaczej poszczególne elementy mogą odmawiać współpracy.

Pytanie, na ile użeranie się z tym jest grą wartą świeczki, skoro chodzi tylko o uwolnienie się od uciążliwego wciskania jednego przycisku przed wgraniem wsadu ;)

W każdym razie dzięki za poświęcony czas.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 cze 2015, o 18:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

w zasadzie w przypadku niektórych shieldów ma to sens bo czasem ciężko się dobrać do przycisku RESET :)
niemniej w sumie to żadna przeszkoda w zabawie .... ale przy okazji szukania dlaczego na innym kompie nie chce działać
i mam podobne komunikaty wydaje mi się że problemem jest cześć budżetowych kontrolerów/hubów USB montowanych na płytach
jak np. ALI które nie do końca suportują niektóre urządzenia i tryby sterowania nimi -- zauważyłem problemy też z dostępem do funkcji w układach 32u4 i SAM i Xmegi z USB gdzie na ALI oprogramowanie Atmela SAMBA nie działa prawidłowo , od nie rozpoznawania układu po błędne programowanie .... (trochę nerwów straciłem) a po zmianie kompa na drugi wszystko śmiga
jedyna różnica to tylko Kontroler USB na płycie głównej ... ciekawe ...

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lut 2016, o 22:58 
Offline
Nowy

Dołączył(a): 26 kwi 2014
Posty: 20
Pomógł: 0

mam właściwe taki sam problem z Leonardo jak i z Micro :( Udało się to Wam jakoś rozwiązać pod Eclipsem ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lut 2016, o 13:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 mar 2014
Posty: 356
Lokalizacja: Pruszków
Pomógł: 15

Witaj ja też jakiś czas temu miałem problem z programowaniem ArduinoMeg2560

trochę się nakombinowałem ale udało mi się a winny był AvrDude który nie miał właściwego programatora.
Zerknij sobie tu http://forum.atnel.pl/topic13585.html

Pozdrawiam Paweł.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 kwi 2018, o 12:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 162
Pomógł: 6

Z Leonardo czy innym na M32U4 będzie ten problem, że po załadowaniu przy pomocy bootloadera programu napisanego poza Arduino, będzie on niewidoczny jako port COM. Dopiero po resecie pojawi się jako leonardo. Tak więc żaden automat raczej nei zadziała.
Wygląda na to że Arduino IDE poza napisanym kodem dodaje jeszcze coś od siebie dzięki czemu jest on widoczny jako COM



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO