Skocz do zawartości
szymonw

Port USB i bootloader w STM32f1C8T6 a Windows 10 i ARDUINO IDE

Pomocna odpowiedź

      Port USB i bootloader w STM32f1C8T6 a Windows 10 i ARDUINO IDE

Kiedy po raz pierwszy wpadł mi w ręce  moduł STM32f1C8T6 byłem zachwycony.Nie wiedziałem, że ładowanie programu przez port USB do  STM32f1C8T6  jest niemożliwe bo jest kłopot z bootloaderem i sterownikami. Mój komputer ma Windows 10 i ten artykuł jest dedykowany do tych co mają ten sam system. Nie wiem jak to, co opisuję poniżej, stosuje się do wcześniejszych wersji Windows. Rozwiązanie problemu komunikacji poprzez port USB otwiera ogromne możliwości ot chociażby taniutka porządna karta A/D.  Cóż, zawsze trzeba szukać właściwych rozwiązań. Jedno rozwiązanie zostało zaprezentowane na blogu Forbota.

Ten wpis brał udział konkursie na najlepszy artykuł o elektronice lub programowaniu. Sprawdź wyniki oraz listę wszystkich prac »
Partnerem tej edycji konkursu (marzec 2020) był popularny producent obwodów drukowanych, firma PCBWay.
PCBway_logotyp-350x233.png

Czy jest proste? Nie. Dlatego poszukałem  rozwiązania i je znalazłem. Ale nim do tego doszło próbowałem  tworzenia rozwiązania opartego o program STM32CubeMX(doradził mi syn, który jest zawodowym programistą) ale dałem sobie spokój w momencie kiedy należało gdzieś coś dopisać, coś wyciąć. Chyba nie po to stworzono ten program by po wygenerowaniu odpowiednich plików coś dopisywać lub wycinać,przestawiać. Bez sensu. Pomyślałem, problem komunikacji kontroler STM32 - komputer via port USB wystąpił już dawno i dawno musiał zostać rozwiązany. Jest to prawda połowiczna bo w trakcie „życia” STM32 powstały co  najmniej dwa nowe systemy Windows i jak się okazuje problem mimo rozwiązania na daną chwilę może się pojawić ponownie przy kolejnej nowelizacji systemu. W Polsce spotkałem dwa artykuły poświęcone temu zagadnieniu. Jeden przytoczyłem powyżej i w gruncie rzeczy jest przedrukiem z jednego z pism poświęconych elektronice a drugi nie działa pod Windows 10 ale działa  pod wcześniejszymi wersjami Windows o czym  poinformował użytkowników  twórca kontrolerów STM32  STMicroelecronics  w pliku STSW-STM32102 . Społeczność programistów dostarczyła sterowniki i jak zapewniają programiści prace nad ulepszeniem sterowników trwają. Rozwiązanie jest proste i każdy może je zastosować u siebie.Pozbieranie wszystkich informacji potrzebnych i ich przetworzenie w moim przypadku trwało ponad tydzień.W ostatnich latach Arduino i STMicroelectronics(STM) postanowiły wspólnie   stworzyć platformę do obsługi 32 bitowych kontrolerów w środowisku Arduino.  Wymiernym efektem współpracy jest cała rodzina kontrolerów STM obsługiwanych przez Arduino. Najnowsza wersja Arduino IDE 1.8.11 jest już na tym etapie, że nie trzeba przy przypisywaniu portów wpisywać np.PC13 a tylko13 tak jak  to jest  dla ATmegi ale jeśli komuś zależy na pisaniu przysłowiowego PC13 to dla  kompilatora nie jest to problem. Programy napisane dla ATmegi kompilują się bez problemu dla STM32f1.Ponieważ artykuł ma być dla każdego to muszę zacząć od początku  czyli od instalacji Arduino IDE.                                                                                                                                                                                                                                                          Ściągamy   wersję Arduino IDE 1.8.11 lub nowszą i instalujemy. Następnie otwieramy Arduino i klikamy w zakładkę plik , następnie  klikamy w preferencje po czym klikamy w dodatkowe adresyURL do menadżera płytek, ukaże się okno dodatkowe adresy URL do menadżera płytek. Należy wpisać  trzy adresy

 i klikamy OK  i OK.

gui20.thumb.jpg.c3454b7880caba3ce014e1d0659ce89d.jpg

Następnie   przechodzimy do zakładki  Narzędzia -> Płytka -> Menedżer płytek .

IMG_0371.thumb.JPG.2a2f00cd9dce9343c2e2ab0cc26feebd.JPG

W wyszukiwarce wpisujemy  stm32f1.W efekcie  wyświetli się wynik ,klikamy na niego  a następnie  klikamy Instaluj.Następnym krokiem jest zainstalowanie dodatkowych bibliotek,które są niezbędne to jest  Arduino SAM Boards i  Arduino SAMD Boards .Efektem powyższej instalacji będzie to,że w zakładce płytka pojawią się płytki STM.

IMG_0483.thumb.JPG.febb48aac20349e7317205f6f3a43995.JPG

To tyle na temat instalacji Arduino IDE.Teraz zajmiemy się portem USB w STMf1xxxx,który jest nieaktywny.

Rozwiązanie problemu komunikacji komputer STM32f1 via USB. Pierwszą rzeczą jest utworzenie konta na stronie STM,które jest niezbędne do ściągnięcia programu https://www.st.com/content/st_com/en.html (po prawej u góry jest zakładka Login). STM32f1 płytka podstawowa nie posiada bootloadera(to znaczy posiada ale….),który należy zainstalować w stm32f1. Windows 10 i Arduino IDE nie posiadają  odpowiednich sterowników w związku z tym należy je zainstalować .   

Procedura:    Należy ściągnąć   trzy pliki

  1.  en.flasher-stm.zip   https://www.st.com/en/development-tools/flasher-stm32.html
  2. STM32duino-bootloader-master.zip   https://github.com/rogerclarkmelbourne/STM32duino-bootloader
  3. Arduino_STM32-master.zip     https://github.com/rogerclarkmelbourne/Arduino_STM32                    

Po rozpakowaniu w pierwszej kolejności instalujemy  flash_loader_demo_v2.8.0.exe  z folderu en.flasher-stm. Następnie używając przejściówki(FTDI)  usb na uart podłączamy 3,3V(należy przestawić zworkę na 3,3V) z przejściówki do 3,3V płytki STM32f1C8T6,GND do GND  płytki  STM32f1C8T6 , Rx przejściówki do A9  STM32f1C8T6,Tx  przejściówki do A10 STM32f1C8T6.

Sprawdzamy prawidłowość połączeń!

IMG_0502.thumb.JPG.0911bd453c36ed799ef45db4f87c6408.JPG

         

Zworkę BOOTO przestawiamy na1.Następnie uruchamiamy program demonstrator GUI który jest w folderze stmicroelectronics

gui.thumb.png.4c691a0011bb647207c95aff17229fd2.png

 resetujemy STM32f1C8T6 ,wybieramy port com

gui2.thumb.jpg.badebdce8b7ce5f39efa08b267313474.jpggui3.thumb.jpg.0176f1b4ad6004adbb531eb566ed65ea.jpggui4.thumb.jpg.750c5ce0978173032656855685f4157f.jpg

Klikamy Next

gui5.thumb.jpg.2b3754ebe3207a11b0bf46fa4bef33b5.jpg

Klikamy Next

gui6.thumb.jpg.f9252a4ee1e17db88dbd3911612c5dc9.jpg

Klikamy Next

gui8.thumb.jpg.f4d1de4846cff37b3ec1bf4721cdaa7b.jpggui12.thumb.jpg.e4ef49d10d21cc96dbbff0f723f4bee4.jpggui10.thumb.jpg.59f7d7fee878ac96362af6f984df1974.jpggui11.thumb.jpg.9018a8460465add565a3d88604cf82e3.jpg

IMG_0379.thumb.JPG.6d5549008d0fafa9911e8f6c3764efc6.JPG

lub

IMG_0378.thumb.JPG.7cac86a4c6317c540a8ca4114041fc8b.JPG

 

 Klikamy Download to device a następnie w kwadracik z kropkami i  odnajdujemy plik ,który jest umieszczony w folderze STM32duino-bootloader-master -> binares-> generic_boot20_pc13.bin  (21kB).Nie kombinujemy,wybieramy tylko ten albo ten drugi plik a nie jakiś inny, jesteśmy jak koń dorożkarski! Klikamy Next. Bootloader zostanie zainstalowany. Odłączamy  kabel USB a następnie wypinamy kabelki z STM32f1,zworkę BOOTO przestawiamy na 0.Następnym krokiem jest zainstalowanie sterowników STM32f1 .Do tego służy program umieszczony w Arduino_STM32-master -> Arduino_STM32-master-> drivers->win->  install_drivers.bat  i uruchamiamy w trybie administratora!!

gui15.thumb.jpg.33b31e8b62a239a57d722544d7fcca9c.jpg

i po dłuższej chwili sterowniki są zainstalowane (cierpliwości, pojawi się komunikat sukces a właściwie dwa komunikaty sukces). Ostatnim krokiem jest sprawdzenie poprawności działania.Otwieramy Arduino IDE,podłączamy płytkę do przewodu USB A-B ( z jednej strony normalna wtyczka usb typA a drugiej strony usb mini typu B). Sprawdzamy czy port jest aktywny instalujemy(nie poruszam konfiguracji płytki bo to jest oczywiste).

IMG_0479.thumb.JPG.9c9f9c5e2346dd01279d18a12d85cd44.JPG

 W Arduino odnajdujemy program  np.Blink kompilujemy i jeśli jest wszystko ok. wgrywamy program. Po pomyślnym wgraniu dioda powinna migać zgodnie z tym co opisano w programie Blink. Zachwyt  nad modułem STM32f1C8T6  wrócił.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Cóż, jak kto lubi, ale osobiście nie widzę sensu żeby się maltretować arduino IDE programując STMa.

HAL nie jest dużo trudniejszy od arduino to raz a 2, korzystając z SW4STM32 lub trueSTUDIO lub CubeIDE ma się do dyspozycji potężny debuger i wiele innych programów bardzo ułatwiających zabawę stmami np. STMStudio do wizualizacji danych.

Szczerze mówiąc, to ArduinoIDE nawet do AVR średnio się nadaje.

Dnia 27.02.2020 o 14:35, szymonw napisał:

STM32CubeMX(doradził mi syn, który jest zawodowym programistą) ale dałem sobie spokój w momencie kiedy należało gdzieś coś dopisać, coś wyciąć. Chyba nie po to stworzono ten program by po wygenerowaniu odpowiednich plików coś dopisywać lub wycinać,przestawiać. Bez sensu.

CubeMX nie napisze za Ciebie programu ale zdecydowanie przyspiesza konfigurację, kwestia jedynie obycia z tym programem i znajomości samego mikrokontrolera. Osobiście nie wyobrażam sobie programowania STMa bez debugra i CubeMX bo ręczne wklepywanie konfiguracji za każdym razem jest co najmniej irytujące. Na ogół nie ma potrzeby niczego wycinać z wygenerowanych plików a dopisywać trzeba tylko to co potrzeba, zupełnie jak w arduino do setup wpisuje się to co aktualnie potrzeba.

Na początku być może "wizualnie"  kod wygenerowany przez CubeMX wygląda jak bałagan ale po kilku godzinach nad nim wszystko staje się jasne, a kiedy już się jasne stanie, nikt nie będzie chciał używać arduino do programowania STM32 bo po prostu nie ma to sensu żadnego.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Po części się z tym zgodzę, ale mimo wszystko programowanie STMa za pomocą arduino IDE nie ma sensu. Chcąc się upierać przy frameworku arduino to można go równie dobrze stosować korzystając z jakiegoś eclipsa np. SW4STM co umożliwia jednocześnie używanie debugera. ( w SW4STM można również pisać pod AVR, wystarczy wtyczkę ściągnąć i mieć jedno IDE do AVR i STM32)

HAL doskonały nie jest to fakt ale jest cały czas rozwijany a kiedy już się zaznajomi z HALem można w miejscach krytycznych napisać własny kod. Czego by o HALu nie mówić to i tak jest znacznie szybszy od arduino. Myślę, że warto go znać bo ST raczej go nie zarzuci jak SPL a z czasem będzie tylko lepszy.

12 minut temu, Elvis napisał:

nie możemy zmienić mikrokontrolera na inny bez modyfikacji wyższych warstw programu, a nawet biblioteki HAL dla różnych rodzin STM32 nie są ze sobą w pełni zgodne.

Te modyfikacje jeśli są już konieczne sprowadzają się do drobnych zmian więc nie jest to jakiś zasadniczy problem. Być może kiedyś framework arduino będzie tak dopracowany i elastyczny, że bez różnicy na platformę będzie dobrym wyborem ale wygląda na to, że jeszcze długo tak nie będzie więc nie ma się tu chyba nad czym rozwodzić, i tak każdy wybierze co mu lepiej pasuje lub do czego się przekona czytając tego typu dyskusje.

Osobiście uważam, że to bardzo zły pomysł zaczynać zabawę z STM32 od arduino IDE.

Udostępnij ten post


Link to post
Share on other sites

Dyskusja nad wyższością jednego środowiska / procesora / biblioteki nad innym nie ma sensu. Żadne z tych rozwiązań nie jest absolutnie lepsze, ani absolutnie gorsze - gdyby tak było już dawno zostałoby tylko to lepsze.

Natomiast nie mieszajmy edytora / środowiska z biblioteką. Arduino IDE jest... proste i chyba to wszystko co można napisać. Ale to dla wielu osób, szczególnie początkujących może być zaletą. Powiem więcej - nawet dla dawno temu początkujących może to być zaleta. Jak potrzebuję szybko przetestować np. nowy moduł, do którego mam bibliotekę pod Arduino to używam Arduino IDE. Bo tak jest po prostu najszybciej. Później mogę używać innych środowisk, bibliotek, czy mikrokontrolerów, ale żeby szybko przetestować np. nowy mały wyśwetilacz, albo czujnik użycie Arduino jest po prostu oszczędnością czasu.

Na koniec jeszcze odnośnie wydajności bibliotek - wcale nie zawsze biblioteki HAL są szybsze od Arduino. Przyznam, że pisząc artykuł o wyświetlaczach przeżyłem ogromne rozczarowanie biblioteką HAL. Jeśli będziemy wysyłać dane w małych paczkach, np. po bajcie, biblioteki Arduino są wydajniejsze niż HAL... Okazuje się, że implementacja od ST jest tak przekombinowana, że zajmuje to mnóstwo czasu. Natomiast Arduino zapisuje od razu do rejestrów. Ot taka ciekawostka.

Udostępnij ten post


Link to post
Share on other sites
2 minuty temu, Elvis napisał:

Okazuje się, że implementacja od ST jest tak przekombinowana, że zajmuje to mnóstwo czasu. Natomiast Arduino zapisuje od razu do rejestrów. Ot taka ciekawostka.

To fakt, do tej pory ten HAL powinien być dawno zoptymalizowany a w miejscach krytycznych napisany w asmie ale i tak uważam, że jest lepszy od arduinowego potwora ;) Być może kwestia przyzwyczajenia do stylu arduino jest tu czynnikiem decyzyjnym ale jak już pisałem można go używać w eclipse. Nawet szablon projektu jest generowany automatycznie a wygoda i możliwości nieporównywalnie większe od arduino IDE. Swoją drogą to też jest dziwne, że przez tyle lat nikt tego gniota nie zmodernizował. Są nawet jakieś nakładki na VS co już jest lepszym rozwiązaniem od arduino IDE ale na samą zdrową logikę, przy takim zainteresowaniu arduino siłą rzeczy to ich IDE powinno przynajmniej przypominać IDE z prawdziwego zdarzenia.

14 minut temu, Elvis napisał:

Natomiast nie mieszajmy edytora / środowiska z biblioteką.

Jest to niejako wymuszone "siłą rzeczy" szczególnie w świadomości niedoświadczonych amatorów.

Udostępnij ten post


Link to post
Share on other sites

Układy scalone zostały wymyślone by zwiększyć niezawodność.Im mniej lutowań tym większa niezawodność.W przyrodzie obowiązuje  prawo odkryte jakieś 170 lat przez wielkiego fizyka angielskiego Williama Rowan Hamiltona zwane zasadą Hamiltona czyli zasadą najmniejszego działania(dobrze opisana w książce Mechanika Teoretyczna autorów Rubinowicz,Królikowski).To prawo obowiązuje także w stosunku do nas, ludzi.ATmegi mają swoje przewagi nad STM-ami bo do obsługi jest proste,darmowe oprogramowanie.Hardware jest dostępny w niskiej cenie i jest niezawodny.W STM-ie jest odwrotnie.Wystarczy wejść na stronę Raisonance i zobaczyć ile  kosztuje software.Syn poświęcił całe 5 minut w sprawie portu USB i nie rokował pozytywnego rozwiązania.Jako programista twierdzi,że hardware który,ma problem z komunikacją w zasadzie należy wyrzucić do śmietnika.Bo albo programujemy albo zajmujemy się naprawianiem komunikacji.Czy ma rację?Ma rację.Zaproponował STMCube32 jako narzucające  pierwsze z brzegu rozwiązanie. STMCube32 jest programem z 2004r. 16 lat to w  elektronice i informatyce to epoka albo dwie a może cztery albo i więcej.Dlatego najlepsze środowisko programistyczne to takie,które jest proste w obsłudze i działające w powszechnie używanych systemach(patrz zasada Hamiltona).Mikrokontrolery w istocie niewiele się różnią między sobą,w zasadzie różnią się rdzeniem a może i nie,peryferia są w zasadzie identyczne chociaż STM32 ma USB . W zastosowaniach do sterowania różnymi procesami wykorzystywane jest może 5-10%  możliwości środowiska programistycznego.W swej istocie zwyczajowo program to kilkadziesiąt linijek  a wiadomo im krótszy program tym krótsza pętla programu a to przekłada się na czas.W  procesach sterowania 1ms czy 2ms w zasadzie nie ma znaczenia bo bezwładność elementów wykonawczych elektromechanicznych i niektórych elektronicznych jest wiele razy większa.  Pewnie,że warto mieć kontroler który, taktowany jest np.72Mhz a nie 16Mhz i nie 8 bitowy a 32 bitowy.Miałem kiedyś w dyspozycji graficzny program Realizer.Miał fantastyczny symulator i był przez pewien czas polecany przez STM ale był dosyć topornym narzędziem programistycznym ale bardzo skutecznym.Raisonance rekomendowany też kiedyś przez STM  ma namiastkę  symulatora  i język programowania C,C++.Arduino nie ma symulatora ale jest najlepszy bo jest ogólnie dostępny.Jak ktoś chce przetestować program może uruchomić  Visual Studio dopisując odpowiednie interfejsy  wejścia i wyjścia. STM wszedł w porozumienie z Arduino ze względów biznesowych gdyż zauważył jak wielkim rynkiem są wyroby oparte na ATmedze.  Szwankująca komunikacja USB w STM32 kładzie się cieniem na STM.Przecież port USB jest portem podstawowym przy wymianie informacji .USB w STM-e daje jeszcze większą przewagę nad ATmegą  i dziwi,że STM  nie poświęca więcej uwagi na ten element. Mam nadzieję,że STM usunie problem kompleksowo poprzez włączenie odpowiednich sterowników do Arduino.Na razie widzimy dynamiczny rozwój STM-ów w Arduino bo STM postawił na Arduino.  Marzeniem jest by nie trzeba było pisać artykułów "jak rozwiązać problem komunikacji  poprzez port USB " tylko w sposób naturalny korzystać z ułatwień.

  • Lubię! 1
  • Nie zgadzam się! 1

Udostępnij ten post


Link to post
Share on other sites
1 godzinę temu, szymonw napisał:

Marzeniem jest by nie trzeba było pisać artykułów "jak rozwiązać problem komunikacji  poprzez port USB " tylko w sposób naturalny korzystać z ułatwień.

Patrz na moje wcześniejsze wpisy. Albo ja nie rozumiem Ciebie albo Ty nie rozumiesz mnie albo nie zrozumiałeś obsługi eclipse i cubeMX albo.. albo sam już nie wiem o co chodzi. Nie wiem też gdzie ten problem z usb na STM, u mnie działa bez problemu wystarczy jedynie zaimplementować dostarczone przez ST biblioteki. Nie mam też pojęcia po co komu jakiś symulator do STM32 kiedy do dyspozycji jest sprzętowy debuger a sam programator jest dostarczany bonusowo do płytek z STM32 . Do tanich płytek można dokupić tani programator i też z powodzeniem używać debugera w czasie rzeczywistym a nie żadnego "symulatora".

Człowieku, takie problemy mają jedynie ci, którzy z uporem maniaka uczepili się arduino IDE i jego bibliotek ( których w porównaniu z AVR jest niewiele dla STM32 ) tylko dlatego, że nie chciało im się zorientować w temacie i poświęcić trochę czasu na naukę obsługi dedykowanych darmowych narzędzi albo elementarnych podstaw j. angielskiego. Oświecę Cię jeszcze w kwestii samego debugera do AVR, otóż tak jak do STM32 można debugować atmegi w czasie rzeczywistym co jednak wymaga odpowiedniego programatora. MicroChip wypuścił nawet własne IDE z różnymi dodatkowymi narzędziami więc jest w czym wybierać, a jeśli chodzi o biblioteki to jest cała masa świetnie udokumentowanego oprogramowania w archiwach atmela na stronie MC tylko trzeba chcieć poszukać. 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Dzień dobry. chciałem zadać jedno pytanie dotyczące tutoriala. Gdzie mogę znaleźć biblioteki "Arduino SAM Boards i  Arduino SAMD Boards" ?

Ponieważ wyszukiwarka bibliotek nic nie znajduje.

Dziekuję za odpowiedź.Z poważaniem Marcin

 

Wydaje mi się ze te biblioteki  zostały automatycznie zainstalowane przy wpisaniu w wyszukiwarce bibliotek stm32f1. Niestety dalej sie z taplytka borykam a konkretnie ze sterownikami.Zainstalowałem wedle zaleceń w trybie Administratora plik Arduino_STM32-master -> Arduino_STM32-master-> drivers->win->  install_drivers.bat ,nawet zrobiłem restart systemu i system daje mi taki komunikat

695901462_BluePillbladUSB.thumb.png.fa925116382b2534d852d39ad4ebeb56.png

Co mogłem zrobić źle bądź z kąd wziąść paujący sterownik?

 

Temat już nieaktualny,prawie wszystko pasuje w instrukcji autora z jednym małym szczegółem. Po wgraniu bootloadera nie odłączamy go TYLKO NAJPIERW PRZESTAWIAMY ZWORKĘ BOOT 0 W POZYCJE 0 a dopiero wtedy możemy rozłączyć układ i wszystko śmiga.

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Gdzieś na Git Hub w jakimś artykule autorzy sterowników,bootloaderów napisali,że to co stworzyli nie jest wersją końcową bo zauważyli pewną niestabilność.Gdzieś w moim tekście jest przywołanie tego stwierdzenia.Jako autor starałem się pokazać to czego inni nie dostrzegli,że muszą być zainstalowane odpowiednie sterowniki "win".Też borykałem się z udrożnieniem transmisji przez USB a artykuł jest próbą podzielenia się doświadczeniami w tym zakresie.Forbot jest platformą na której możemy wymieniać się doświadczeniem i o to chodzi.Błąd 43 brak deskryptora to widziałem w menadżerze urządzeń wiele razy.U mnie USB zadziałało po wyłączeniu,przestawieniu zworki i włączeniu.Na płytce stm32f1C8T6 jest rezystor R10 i jego niewłaściwa wartość może być przyczyną niedziałania portu USB .Jego wartośc powinna być ok.1,5kΩ i jeśli jest wyższa ,a zdarza się, to należy wymienić na 1,5kΩ lub wlutować równolegle odpowiedni rezystor z jednej strony do Vcc=3,3V z drugiej strony do A12 . Żeby było ciekawiej to wgrałem przez USB program scope dwukanałowy(nie polecam) po czym chciałem wgrać inny program i cóż się okazało.Otóż wróciły stare demony - port usb przestał działać.Przeprowadziłem całą procedurę od początku a tu nic,nie działa.Wgrałem drugi bootloader  i on zadziałał.Reasumując układ  jest niestabilny i należy być ostrożnym w tym co wgrywamy bo może się okazać,że na końcu wgrywania  ostatni bajt programu  wgrywanego zapisany zostanie w miejscu przeznaczonym do obsługi USB.Artykuł   Port USB i bootloader w STM32f1C8T6 a Windows 10 i ARDUINO IDE bierze udział w konkursie jeśli pomogłem zagłosuj na mnie to wydaje się być uczciwe.

Edytowano przez szymonw

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...