drozdbartek Napisano Listopad 1, 2014 Udostępnij Napisano Listopad 1, 2014 Witam,mam taki mały problemik. Kupiłem sobie adapter usb<->ttl/I2C na CH341 oraz Arduino Pro Mini (klon) i mam problem z komunikacją przez Serial. Wiem że się zagapiłem i adapter ten nie ma wyjścia restart i przy programowaniu trzeba wcisnąć przycisk resetu na arduino, ale to nie w tym problem. Kiedy próbuję wysłać jakikolwiek ciąg znaków przez Serial to w konsoli dostaje różne ciekawe znaczki, zazwyczaj o kodzie ASCII większym od 127 (dec). Jakieś pomysły skąd takie cuda? Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Listopad 1, 2014 Udostępnij Listopad 1, 2014 Pokaż kod i powiedz czy ustawiłeś dobre prędkości transmisji. Cytuj Link do komentarza Share on other sites More sharing options...
drozdbartek Listopad 1, 2014 Autor tematu Udostępnij Listopad 1, 2014 kod i prędkości są dobre na 100%. próbowałem już z różnymi prędkościami i zawsze jest ten sam efekt. void setup() { Serial.begin(300); pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(200); digitalWrite(13, LOW); delay(200); digitalWrite(13, HIGH); delay(200); digitalWrite(13, LOW); delay(2000); Serial.print("a"); } Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Listopad 1, 2014 Udostępnij Listopad 1, 2014 Sprawdź dla jakieś sensowniejszej prędkości np.: 9600 i pokaż, co dostajesz w terminalu. Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. 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
drozdbartek Listopad 1, 2014 Autor tematu Udostępnij Listopad 1, 2014 każdy znak jest osobno, tzn pętla wykonała się 11 razy Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Listopad 1, 2014 Udostępnij Listopad 1, 2014 Uruchomiłem na Arduino Leonardo - działa, więc przyczyny należy szukać gdzie indziej. Pokaż jeszcze link do tego klona może 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
drozdbartek Listopad 1, 2014 Autor tematu Udostępnij Listopad 1, 2014 mówiłem że kod jest ok 😋 wydaje mi się, że problem leży po stronie przejściówki link a klon wydaje się być ok link Cytuj Link do komentarza Share on other sites More sharing options...
marek1707 Listopad 2, 2014 Udostępnij Listopad 2, 2014 Układ CH341 jest interfejsem zamieniającym USB na kilka możliwych standardów: I2C, UART, ParallelPrinterPort i jeszcze jakieś. W najprostszym przypadku wybór następuje poprzez prawidłowe zezworkowanie odpowiednich pinów układu. W przypadku istnienia na płytce małego EEPROMu konfiguracja pobierana jest z niego. Nie wiem co masz na tej przejściówce, ale na zdjęciu widzę zworki. Aby CH341 działał w trybie UART piny SCL/SDA służace do podłączania EEPROMu konfiguracyjnego muszą wisieć w powietrzu. Może znajdź jakiąś instrukcję do tej płytki lub choćby schemat, przejrzyj ustawienia zworek i ew. popraw. Jeżeli zmieniasz szybkość interfejsu COM w okienku terminala w PC a przychodzące znaki nie zmieniają się, na 99% nie pracujesz w trybie UART. EDIT: Jeżeli jednak się zmieniają, pozostaje szybkość zegara procesora. Z jaką częstotliwością rzeczywiście pracuje Twój procek (najlepiej sprawdź programatorem fuse bity) a jak masz ustawioną wartość symbolu F_CPU? 1 Cytuj Link do komentarza Share on other sites More sharing options...
drozdbartek Listopad 2, 2014 Autor tematu Udostępnij Listopad 2, 2014 Przejściówka pracuje w trybie UART, mogę wgrać program jeśli zrestartuje arduino w odpowiednim momencie. Zachęcony Twoją wypowiedzią zmieniłem prędkości i znaki się zmieniały, lecz nie zgadniecie co się stało. Po zmianie szybkości na 19200 bodów komunikacja zaczęła działać prawidłowo. Ciekawe co jest przyczyną takiego dziwnego zachowania. Jakieś pomysły? EDIT: niestety nie mam możliwości sprawdzenia tego, mam tylko tą przejściówkę, ale na ten moment już wszystko działa. Cytuj Link do komentarza Share on other sites More sharing options...
marek1707 Listopad 2, 2014 Udostępnij Listopad 2, 2014 Nadal jest problem tylko udajesz, że go nie widzisz. Jeżeli w programie ustawiasz 9600 a terminal pracuje na 19200 i się dogadują to znaczy, że procesor pracuje 2 razy szybciej niż "myśli" kompilator. W związku z tym źle będzie działało wszystko związane z pomiarem czasu, opóźnieniami, prędkościami itd np. transmisje RC5, wszelkie delay'e, UARTy itp. Musisz odszukać w swoim IDE parametr F_CPU i zmienić go na prawidłowy czyli taki, z jakim zegarem naprawdę pracuje Twój procesor. Weź sprawdź, czy pin zmieniany funkcją digitalWrite rzeczywiście mruga dokładnie tak jak mu kazałeś i czy 2000 oznacza 2 sekundy a nie 1. Cytuj Link do komentarza Share on other sites More sharing options...
drozdbartek Listopad 2, 2014 Autor tematu Udostępnij Listopad 2, 2014 kolejny raz miałeś rację. Nie zwróciłem nawet uwagi, że 2 sekundy to w rzeczywistości 1 sekunda. Zmieniłem z 8MHz na 16 i wszystko teraz działa na prawidłowej konfiguracji. Wielkie dzięki 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!