Skocz do zawartości

Raspberry PICO W brak portu COM


kaczakat

Pomocna odpowiedź

Nie wiem czy dobry dział, ale wg mnie to nie jest SBC by wrzucać do działu typowej maliny.

Kupiłem taką płytkę by zobaczyć jak to się je z tym micropythonem, ale ani w WIN7 ani w 10 x64 nie jest wykrywany port COM. Na komputerze miałem zainstalowane sterowniki USB CDC używane z płytką Samd Arduino ZERO.

W win10 i win7 wykrywa mi dysk przenośny RPI-RP2  i "RP2 boot nieznane urządzenie" ani Win7 ani 10 nie umieją do tego znaleźć sterowników.

Znalazłem temat z tutorialem od RPico, gdzie była informacja że W10 sam to instaluje, a w W7 trzeba sobie powalczyć ze sterownikami, niestety tylko druga połowa jest prawdziwa.

W obu lapkach użyłem programu Zadig 2.5 i wgrałem sterowniki CDC, w Win10 pojawił się port COM 125, ale z wykrzyknikiem, wewnątrz informacja, że nie udało się uruchomić urządzenia, program do programowania nie może otworzyć tego COM.

To samo w WIN7:

image.thumb.png.8669b0dd95b7077edfec42c7a8461079.png

image.thumb.png.06e59143d1c18b3c3c0b426551ffba46.png

Pomyślałem, że może instalując CDC dla Zero coś mi namieszał i nie wykrywa Rpico, ale na innym lapku z WIN10 mam tak samo.

Macie jakieś pomysły jak to uruchomić?

 

Edit: obrazki są z WIN7, w WIN 10 nie ma wykrzyknika i wg systemu urządzenie działa poprawnie, ale Thonny ma ten sam komunikat "unable connect to COM12: Connot configure port, something went wrong, Permission errror (13); W Win7 w ogóle Thonny nie znajduje wskazanego i widocznego w opcji Port to WebREPL COM.

Mam też chińską płytkę z tym uC, ona ma już jakiś przykładowy kod wgrany do migania ledami RGB na płytce, nic wtedy nie jest wykrywane, a po resecie z wciśniętym przyciskiem boot pojawia się ten sam COM12 z tym samym komunikatem. 

W sumie to mam 2 PICO i tą chińską płytkę, wszystkie raczej nie są uszkodzone, sprawdzałem na USB2.0 i USB3.0.

Edit2. Dobra, na W10 już uruchomiłem, za pierwszym razem trzeba wgrać interpreter na RPicoW i Thonny robi to przez dysk wymienny, pojawił się nowy port COM13 Board CDC, Thonny teraz gada z płytką przez ten port COM13. Na W7 problemów zrobiłem więcej, w jakimś tutorialu znalazłem, że port COM w Thonnym  jest na interface 0, to wrzuciłem mu tu drivery CDC i ten dysk przenośny mi zniknął, muszę to jakoś odkręcić.

Edit3. OK, w Win7 też już działa, na tym jednym laptopie tej płytki, przynajmniej nowej już tu nie uruchomię, ale pewnie i potrzeby czuć nie będę. Jak PICO już ma wgrany ten python, to przedstawia się jako kolejne nieznane urządzenie "board CDC", i dopiero teraz powinien wkroczyć Zadig, wgrałem drivery CDC, pojawił się COM, Thonny przez niego połączył się OK. Nawet pliki widzi, choć dysku przenośnego już nie ma.

Ale uruchomiony program działa jak uruchomi go Thonny, można zamknąć Thonny i program działa, ale nie startuje po ponownym podłączeniu płytki do jakiegoś zasilania. Dziwne. Wrócę do tego jak mnie śnieg zasypie i nie będę miał nic innego do robienia.

Dzięki za pomoc.

Edytowano przez kaczakat
Link do komentarza
Share on other sites

5 godzin temu, kaczakat napisał:

Nie wiem czy dobry dział, ale wg mnie to nie jest SBC by wrzucać do działu typowej maliny.

To nie jest SBC. To po prostu zwykła płytka deweloperska z mikrokontrolerem.

5 godzin temu, kaczakat napisał:

Ale uruchomiony program działa jak uruchomi go Thonny, można zamknąć Thonny i program działa, ale nie startuje po ponownym podłączeniu płytki do jakiegoś zasilania. Dziwne. Wrócę do tego jak mnie śnieg zasypie i nie będę miał nic innego do robienia.

Zacząć pisać w C/C++. MicroPython jest niesamowicie powolny. I to tak nawet do 10x wolniejszy niż C... O zoptymalizowanym programie w ASM nie wspominając.

Ogólnie RP2040 programuje się albo przez SWD albo przez bootloader, który ładuje pliki UF2 za pomocą dysku przenośnego (chyba, że na płytce znajduje się Bootloader Arduino / Bootloader uPythona, które pozwalają wgrywać program przez CDC). A sterowniki do RP2040 to TinyUSB 😉

  • Lubię! 2
Link do komentarza
Share on other sites

Wgrałem tego blinka przez Arduino C++ i działa tak samo szybko jak z Pythona, a w Pythonie zaoszczędziłem mnóstwo czasu nie stawiając kilku średników.

Jest jednak postęp, bo program działa nawet po ponownym podłączeniu do prądu.

Chodziło mi głównie o  to, że tutoriale są albo niekompletne, albo ja je źle zrozumiałem, albo pominąłem jakiś krok.

To co znalazłem zadziałałoby jeśli to byłaby jedyna płytka instalowana na w miarę czystym Win10 lub ostatecznie Win7, a niektóre niuanse w ogóle nie były opisane.

 

 

Link do komentarza
Share on other sites

Tutoriale... Nie wiem jakie masz na myśli, ale dokumentacja Pico jest bardzo dobra i bardzo kompletna.

Poza tym czego oczekiwałeś - że blink w C będzie mrygał szybciej niż ten w mikrym pytongu?

  • Lubię! 2
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

16 godzin temu, ethanak napisał:

Tutoriale... Nie wiem jakie masz na myśli, ale dokumentacja Pico jest bardzo dobra i bardzo kompletna.

Poza tym czego oczekiwałeś - że blink w C będzie mrygał szybciej niż ten w mikrym pytongu?

Cześć, ja ostatnio miałem ofertę pracy w embedded, gdzie głównym językiem programowania jest Java. Nie wiem, czy istnieje jakaś odmiana Javy bez "garbage collector'a", która bardziej nadaje się do rozwiązań embedded. Nie wiem chyba już jestem stary bo wdług mnie C/C++ nadają się do tego celu duzo bardziej.

Pozdrawiam

Link do komentarza
Share on other sites

@FlyingDutch Pojęcie embedded jest dość szerokie. SBC, przykładowo Raspberry Pi, może spokojnie poradzić sobie z Javą, garbage collector-em itd. Java jest nadal popularna w rozwiązaniach związanymi z kartami płatniczym. Co ciekawe działa nawet na samych kartach, gdzie zasoby sprzętowe są bardzo ograniczone (https://en.wikipedia.org/wiki/Java_Card)

  • Lubię! 2
Link do komentarza
Share on other sites

(edytowany)

@ethanak, przecież nie ja pisałem o wyższości C nad pythonem, tak dla jasności to średnikach też nie było serio.

Znalazłem jakiś wątek o Win7/8 z wypowiedziami jak zrozumiałem twórców i jedyną odpowiedzią na różne problemy kompatybilności było, że oni nie wspierają nic sprzed W10, więc nie spodziewam się znaleźć nic ciekawego w tej kompletnej dokumentacji PICO o driverach dla W7.

Nie robię nic szczególnego na tym pico, dorzuciłem dwie płytki dla darmowej wysyłki, ale jak już przyszły to postanowiłem się pobawić.

W WIN10 wszystko działa OK. Ucieszyłem się, że mi wykryło i wgrało program w Arduino i na W7, jednak za wcześnie,   po pierwszym wgraniu COM pojawia się z powrotem, widać go w managerze, ale programy go nie widzą, muszę go kliknięciem tu wyłączyć, włączyć i dopiero zaczyna z powrotem działać, może przesyłać dane z PICO czy być użyty do ponownego wgrania. Nie zauważyłem tego bo odłączenie płytki i ponowne podpięcie też pomaga, a ja wtedy latałem między lapkami i sprawdzałem czy działa.

Może jakiś inny driver macie do podrzucenia?

Na drugim laptopie przywróciłem sterownik pamięci masowej i znowu pojawia się dysk po włożeniu pico w trybie boot, Thonny go widzi wgrywa program OK i go uruchamia, Thonny zresztą na obu lapkach z W7 działa OK, ale Arduino ma znowu komunikat przy próbie wgrania:

Resetting COM133
Converting to uf2, output size: 661504, start address: 0x2000
Scanning for RP2040 devices
Unable to build drive list
An error occurred while uploading the sketch

Na tym jednym coś się nie potrafi pozbierać nawet do stanu włącz/wyłącz COM.

Znalazłem driver pico-serial.inf, ale to nic nie daje, pewnie by normalnie korzystać z PICO zostaje przejść na W10. Jest to dziwne dla mnie, bo nie jest to jakaś kosmiczna technologia, STM32 czy SAMD to też Army z wbudowanym USB i z nimi nie miałem takiej zabawy w W7, podłączenie, brak drivera, wyszukanie w Google, instalacja, działają.

Edytowano przez kaczakat
Link do komentarza
Share on other sites

44 minuty temu, kaczakat napisał:

Znalazłem driver pico-serial.inf, ale to nic nie daje, pewnie by normalnie korzystać z PICO zostaje przejść na W10. Jest to dziwne dla mnie, bo nie jest to jakaś kosmiczna technologia, STM32 czy SAMD to też Army z wbudowanym USB i z nimi nie miałem takiej zabawy w W7, podłączenie, brak drivera, wyszukanie w Google, instalacja, działają.

Tylko STM32 ma własny driver USB CDC, w przypadku SAMD nie wiem. Pico używa TinyUSB, którego sterownik musisz mieć zainstalowany by współpracowało. Na dodatek Arduino IDE próbuje wgrać program resetując Pico i wrzucając go na dysk przenośny... Już dawno poddałem się w kwestii używania tej abominacji (Arduino IDE / CLI) do wgrywania programów. To znacznie lepiej robią programatory na SWD/JTAG.

Edytowano przez H1M4W4R1
Link do komentarza
Share on other sites

@kaczakat pisałeś cos o niekompletnych tutorialach - ja korzystam z oficjalnej dokumentacji, która jest raczej kompletna.

Co do wgrywania - pierwszą rzeczą którą trzeba zrobić to wlutować reset. Na szczęście wystarczy zwykły tact switch... Potem juz jest z górki. Albo wgrywam przez picoprobe, albo (jeśli nie mam takiej możliwości, vide chorder) przez prosty skrypt, który czeka na pokazanie się dysku i wrzuca tam uf2. W robocie mam jeszcze prościej, bo Pico podłaczony jest na stałe do gpio Zero i równie prosty skrypt przesyła mi program na Zero i odpala uploader.

A używanie Arduino IDE/CLI do czegoś innego niż płytki Arduino lub ESP to moim zdaniem pomyłka... Ale DGCC.

Link do komentarza
Share on other sites

@H1M4W4R1 widzę, że piszesz o tym TinyUSB, ale w WIN10 samo ten driver zainstalowało od MS i nic tam nie ma o TinyUSB, w PICO można wybrać tryb pracy USB - żaden, PICO SDK i TinyUSB. Zrozumiałem, że jak wgram wsad od PICO SDK to taki driver, a jak TinyUSB to od TinyUSB driver, ale po ustawieniu TinyUSB przy kompilacji wyskakują błędy i nic wgrać nie mogę, w tym ustawieniu kompilator nie wie co to jest Serial ani SerialUSB.

Oczywiście Google nic mi ciekawego o tym nie napisało, To TinyUSB jest w PICO od Adafruit, mają nawet paczkę z driverami, coś z tiny w nazwie jest do programatora na zupełnie innych uC, zainstalowanie tego nic nie zmienia.

@ethanak, no właśnie się śmiałem z tego braku resetu, że nawet pinu nie wyprowadzili z uC na listwę, ale oni go po prostu nazwali RUN, by było bardziej w stylu Pythona. Dzięki, nawet kabelek mi na razie styknie do stykania. 

W Win7, gdzie Arduino nie widzi dysku PICO,  wykorzystałem najprostszą metodę, znalazłem gdzie generuje plik ul2 (i nie nie,nie może mi go po prostu otworzyć w katalogu z tym plikiem jak w innych core po wybraniu opcji " eksportuj binarkę"),  wrzuciłem go na widoczny dysk PICO, zrestartowało się samo i uruchomiło program, tak że to coś z działaniem programu z core. I nawet port COM jest w pełni funkcjonalny, nie trzeba go wyłączać jak w drugim laptopie. Więc wychodziłoby, że tam programowy reset i  włączenie dysku robi to jakoś nieprawidłowo. Ale jednak nie, bo można zrobić normalnie wgraj, wysypie się ale na dysk przełączy, wtedy można wgrać ręcznie copy-paste, PICO się resetuje z odpalonym programem i COM po chwili się pojawia działając OK.

Może coś się źle zainstalowało, więc usunąłem wszystko łączenie ze ściągniętymi plikami, zainstalowałem od nowa, przestało się kompilować, muszę zrobić reset komputera, tymczasem to zostawiam tutaj.

Ciekawa płytka.

 

Link do komentarza
Share on other sites

@kaczakat powiem tak: Pico ma taką fajną funkcję "zresetuj procka i przejdź w tryb upload". Niestety - wywołanie tej funkcji wymaga jakiejś rzeźby, raz mi się nawet udało ale osobiście wolę polegać na wciskaniu RST+Boot (niezależnie od tego jak się ten RST nazywa:) )

Link do komentarza
Share on other sites

9 minut temu, ethanak napisał:

wywołanie tej funkcji wymaga jakiejś rzeźby

#include "pico/bootrom.h"
  
//...
reset_usb_boot(0, 0);
//...

To jest bardzo wygodna funkcja 😉 Ja zwykle ustawiam sobie jakąś komendę na porcie COM do odpalenia tego.

Link do komentarza
Share on other sites

@H1M4W4R1 powiem tak: za dużo kombinowania. Raz, że w kodzie muszę przewidzieć że to się w jakiejś sytuacji wywoła, dwa że to nie zawsze działa. Guzik reset działa zawsze 🙂

Bardziej mi się podoba rozwiązanie z płytek ESP, gdzie pinami EN i BOOT steruję bezposrednio przez DTR i RTS. Tam nie trzeba jakiegoś specjalnego kodu.

Link do komentarza
Share on other sites

5 minut temu, ethanak napisał:

Bardziej mi się podoba rozwiązanie z płytek ESP, gdzie pinami EN i BOOT steruję bezposrednio przez DTR i RTS. Tam nie trzeba jakiegoś specjalnego kodu.

RP2040 też można tak sterować, tylko autorzy Pico tego nie przewidzieli 😉

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.