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



Teraz jest 8 lis 2024, o 21:44


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 16 ] 
Autor Wiadomość
PostNapisane: 3 maja 2016, o 18:36 
Offline
Użytkownik

Dołączył(a): 09 sty 2015
Posty: 26
Pomógł: 0

Witam
Jestem w posiadaniu arduino leonardo. Podłączyłem go do komputera przez USB - wszystko ok. Wgrałem przykładowy projekt Blink - działa. Napisałem sobie prosty program właśnie na gaszenie diody tylko że w czystym C, wgrałem i nic. Nagle Arduino zniknęło jako podłączony sprzęt. W menedżerze urządzeń go nie widać. Co zrobić?

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

Dodam, że po dwukrotnym wciśnięciu przycisku reset na chwilę pojawia się port com bootloadera.



Ostatnio edytowano 4 maja 2016, o 08:08 przez kubajed, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2016, o 22:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Arduino Leonardo ma na pokładzie procesor ATmega32u4, który wyposażony jest w obsługę USB. Jeżeli wgrałeś tylko goły program do migania diodą, to nie ma obsługi USB.
W procesorze pozostał bootloader, który zgłasza się po odpowiednim zresetowaniu układu. Służy on do wgrywania programu.
Cytuj:
Co zrobić?
Zależy co chcesz robić. Jak chcesz pisać w C, to nic nie musisz (jak chcesz mieć port szeregowy po USB, to musisz dołączyć do swojego kodu także obsługę tego). Jak w arduino i potrzebujesz go mieć widocznego w systemie, to ponownie załadować odpowiednie oprogramowanie z aplikacji Arduino.

--
Pozdrawiam,
Robert

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

Popraw wstawiony kod zgodnie z opisem topic7402.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2016, o 08:07 
Offline
Użytkownik

Dołączył(a): 09 sty 2015
Posty: 26
Pomógł: 0

Dziękuje za odpowiedź.
W jaki sposób mam wgrać "odpowiednie oprogramowanie z aplikacji Arduino"? I co to właściwie jest?
Czyli tak, jeżeli pisze w czystym c to muszę dodać obsługę USB, jeżeli w Arduino to nie muszę?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2016, o 15:11 
Offline
Użytkownik
Avatar użytkownika

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

ech...

W przypadku arduino uzywasz do wgrania programu rezydentnego - bootloadera , który sobie zalega
w pamięci flash i umożliwia zmianę oprogramowania poprzez USB , uzywa tego środowisko arduino

wgrywając programatorem masz dostęp do całej pamięci flash ale niestety zazwyczaj usuwa bootloader

oczywiście mozna sobie z tym poradzić i uzywać bootloadera zarówno pisząc w c jak i w Arduino

kubajed napisał(a):
W jaki sposób mam wgrać "odpowiednie oprogramowanie z aplikacji Arduino"? I co to właściwie jest?


wybierasz swoją płytkę podpinasz programator i wybierasz wypal bootloader , od tej pory masz bootloader w pamięci
mikrokontrolera i możesz go uzywać do wgrywania oprogramowania, botloader zgłasza sie po resecie przed właściwym oprogramowaniem oczekując na transmisję , gdy jej niema przechodzi do wykonywania programu

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

jest jeszcze program FLIP z ATMELA który pozwala zaprogramować mikrokonmtroler przez USB uzywając wgranego przez producenta bootloadera DFU

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2016, o 15:22 
Offline
Użytkownik

Dołączył(a): 09 sty 2015
Posty: 26
Pomógł: 0

No dobrze. To proszę mi wyjaśnić, dlaczego arduino się teraz nie zgłasza mimo, że program wgrywałem używając arduino IDE, kabla USB, a nie programatora.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2016, o 15:37 
Offline
Użytkownik
Avatar użytkownika

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

SunRiver napisał(a):
botloader zgłasza sie po resecie przed właściwym oprogramowaniem oczekując na transmisję


------------------------ [ Dodano po: kilkunastu sekundach ]

jeśli się nie zgłasza to znaczy że uległ uszkodzeniu / nadpisaniu i go nie ma :)
ew .... żle wybrany port COM , brak sterownika ...../

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2016, o 15:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Sun, tutaj chyba jest trochę inaczej. Z tego co ja zrozumiałem, to cały czas bootloader istnieje (bo jak twierdzi pojawia się na chwilę port COM po resecie). Kolega wgrał bootloaderem program napisany w C i nie ma widocznego portu COM (po USB) w czasie działania programu bo go nie oprogramował (i tak ma być). Ale także jak ponownie wrócił do Arduino to już nie pojawił mu się po USB port COM (a wcześniej miał). Jego pytanie jest co musi zaznaczyć / dołączyć w Arduino by program dołączył mu od razu obsługę USB z klasą CDC.

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2016, o 16:07 
Offline
Użytkownik

Dołączył(a): 09 sty 2015
Posty: 26
Pomógł: 0

Dokładnie. Z tym, że już nie wracałem do arduino. Podczas wgrywania C została przerwana łączność. Od tego czasu widoczny jest tylko port bootloadera. Program w uC się wykonuje (ale wcześniejszy). Dlaczego trzeba dołączać jakieś programy obsługi USB? Za każdym razem tak trzeba będzie to dodawać?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2016, o 16:12 
Offline
Użytkownik
Avatar użytkownika

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

rskup napisał(a):
Z tego co ja zrozumiałem, to cały czas bootloader istnieje (


oczywiście że istnieje bootloader , cały czas po resecie jest dostęp do bootloadera DFU , do którego jest dostęp z programu FLIP

natomiast arduino nie używa DFU a używa swojego bootloadera i tu jest kłopot ... kłopot z leonardo

kolega niech podłączy Leonardo do USB , pokaże co ma w Managerze urządzeń , zmieni kabelek / port USB
i pokaże co się dzieje na kompie

tu masz w załączniku oryginalny bootloader LEONARDO z Arduino

a tu masz hmm.. poradnik jak naprawić ??

http://kw.rubra.pl/brak-portu-leonardo/ ... -odpowiada

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

ABY GO WGRAĆ MUSISZ UŻYĆ PROGRAMATORA

Może program FLIP poradzi sobie poprzez DFU z wgraniem i bedzie ci działać ARDUINO


Oczywiście jak chcesz używać USB musisz je oprogramować inaczej jest to tylko to co jest nie służące niczemu :)
w przypadku LEONARDO pod arduino , usb pracuje jako port COM ....


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2016, o 16:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Z tego co wiem, to Twoje Arduino nie ma wbudowanego konwertera USB-RS232. A port USB podpięty jest bezpośrednio do procesora ATmega32U4. Dlatego jak masz goły procesor, to nie masz obsługi USB, więc na komputerze nie będziesz miał portu szeregowego.

Dodatkowo ATmegi mają podzieloną pamięć na 2 części - podstawowa pamięć programu oraz bootloader (nie musi być wykorzystywany i obecny). Bootloader to taki program służący do ładowania nowego programu do pierwszej części pamięci flash. Standardowo jest on odpalany przy starcie procesora (resecie).

Standardowo płytki Arduino wyposażone są w Bootloader. Jeżeli będziesz korzystał z programowania tym bootloaderem to go nie uszkodzisz i nie usuniesz. Ale jak zrobisz czyszczenie pamięci przez programowanie po ISP, to kasujesz bootloadrea.
U Ciebie bootloader jest, bo zgłasza się w PC po resecie płytki. Ale po skończeniu wykonywania, a jak nic nie wysyłasz z PC to kończy on po chwili działanie i sterowanie przekazywane jest do Twojego programu w pamięci głównej.

W swoim układzie w bootloaderze masz wbudowaną obsługę USB, więc widzisz swoją płytkę na PC (jako COM bootloadera). Ale w swoim programie tego nie umieściłeś, więc nie masz możliwości komunikacji między płytką a PC.

Gdybyś miał prostszą płytkę z zewnętrznym konwerterem USB - RS232 na układzie FT232R (a w klonach CH340), to cały czas być miał dostępny port COM, niezależnie od tego czy masz załadowany program czy nie.

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2016, o 16:58 
Offline
Użytkownik

Dołączył(a): 09 sty 2015
Posty: 26
Pomógł: 0

Czyli niezależnie czy wgrywam kod w C czy w Arduino (przez bootloader) to tracę możliwość ponownego wgrania nowego programu tak? To jest bez sensu... - Arduino byłoby wtedy jednorazowe dla większości społeczeństwa.

W menedżerze nic nie mam - oprócz chwilowo bootloadera.

Udało się ożywić płytkę!. Przypadkowymi kliknięciami resetu i wgrywania pustego programu.
Proszę powiedzcie czy mogę wgrać tak bezpośrednio z arduino ino program w C?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2016, o 17:34 
Offline
Użytkownik
Avatar użytkownika

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

tak jak pisałem ... taki jest problem z leonardo niestety
tak możesz tak wgrać tylko musisz przed samym końcem kompilacji wcisnąć reset na leonardo
czasem trzeba kilka razy próbować bo nie zdążysz lub nie trafisz

wielu ma ten problem z leonardo wiec się nie przejmuj :)

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2016, o 17:53 
Offline
Użytkownik

Dołączył(a): 09 sty 2015
Posty: 26
Pomógł: 0

Dziękuję za pomoc.
Mam jeszcze jedno pytanie, a nie chcę zakładać kolejnego wątku. Czy to wystarczy do wykonania zewnętrznego programatora Arduino jak i "gołych" AVRów?
http://allegro.pl/adapter-przejsciowka- ... 52026.html
http://allegro.pl/programator-isp-usbas ... 54223.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2016, o 18:16 
Offline
Użytkownik
Avatar użytkownika

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

Przejściówka ci się przyda , co do tych USBasp się nie wypowiadam ,
czasem działą czasem nie działa ... zależy które oko chińczyk miał bardziej skośne

oczywiście pewny i stabilny jest https://www.sklep.atnel.pl/pl/p/Program ... culator/39
po za tym dostajesz też suport i świetny program do grzebania w avr ...
ale wybór należy do ciebie :)

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2016, o 21:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Cytuj:
Czyli niezależnie czy wgrywam kod w C czy w Arduino (przez bootloader) to tracę możliwość ponownego wgrania nowego programu tak? To jest bez sensu... - Arduino byłoby wtedy jednorazowe dla większości społeczeństwa.
Nie, nie tracisz. Tylko masz dostęp do bootloadera tylko po resecie.

Aby wystartował bootloader to należy odpowiednio resetować procesor. Dla nowych bootloaderów Arduino dla procesorów ATmega32U4 sekwencja resetu opisana jest np. w dokumencie: https://cdn.sparkfun.com/datasheets/Dev ... U4Note.pdf

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 cze 2016, o 07:39 
Offline
Nowy

Dołączył(a): 02 kwi 2013
Posty: 4
Pomógł: 0

Pracuje na Arduino UNO od bardzo długiego czasu. Jeśli procek siedzi w płytce to nie ma żadnego problemu z programowaniem. Kabel USB, Arduino IDE i ogień. Do momentu gdy postanowałem przenieść projekt na płytkę stykową i programować kostkę z Arduino IDE, nie interesowało mnie co dzieje się podczas wgrywania programu. Okazało się, że oprócz zasilania, masy, interfejsu USART(RX,TX), potrzebny jest także sygnał RESET. Arduino IDE wymusza w odpowiednim momencie podczas programowania żądany stan RESET przez co umożliwia programowanie. Leonardo, który nie ma przejściówki USB-RS232, a jest programowany w ten sam sposób co UNO, także musi mieć zapewniony sygnał resetu. Można to robić, jak większość osób, na chybił trafił, klikając reset i modląc się żeby procek się zaprogramował. Wydaje mi się, że sensownym rozwiązaniem jest użycie innej płytki (np UNO) do zaprogramowania procka i wymuszenia odpowiednich sygnałów. U mnie w UNO takie rozwiązanie sie sprawdza. Myślicie, że dałoby rade w Leonardo?

_________________
Panele HMI
Falowniki



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: 16 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 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