Skocz do zawartości

Problem z przesyłaniem programu - Arduino UNO R3


Pichciooo

Pomocna odpowiedź

Na poprzedniej stronie masz program, 

Wgrałeś bootloader, to tak samo możesz wgrać ten program, zobacz czy masz komunikacje po UART, czy program wysyła komunikaty na UART, oraz czy odpowiada tym co mu wyślesz. Ustalisz czy UART nie działa w ogóle, działa w jedną stronę, a może winny jest tylko autoreset i dlatego nie nawiązuje komunikacji z bootloaderem.

Link do komentarza
Share on other sites

Zrobiłem test zalecany przez stronę arduino.cc tzw Loopback, polega na tym żeby zewrzeć TX i RX na płytce i używając serial monitora wysłać coś i odebrać echo. Test przebiegł ok. Za pomocą USBAsp jestem w stanie wgrywać programy, ale nie za pomocą usb.

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

 Test loopback potwierdza, że piny modułu USB-UART są OK, ale nie wiesz czy komunikaty dolatują od/do uC. Poza tym każde otwarcie na nowo okna monitora uart powinno resetować uC, co ładnie widać z tym programem, bo zaczyna wysyłać na UART zmienna++ od nowa.

Link do komentarza
Share on other sites

Więc tak, wgrałem za pomocą UsbAsp program "SerialEvent", wgrało się poprawnie. Odłączyłem usbAsp od portu usb i podłączyłem kabel usb do arduino. Odpaliłem serial monitor i wysłałem pojedyncze znaki, liczby, cale wyrazy, zmieniałem ustawienia znaku końca linii na wszystkie po kolei. W terminalu cisza, nic nie przyszło z uC.

  • Lubię! 1
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

Nie napisałeś nic o ustawieniu odpowiedniej prędkości UART, zgodnej z tą w programie, ale załóżmy, że była OK.

No to masz podpowiedź, prawdopodobnie linia TX między uC a linią złączy kołkowych jest uszkodzona, zaraz po otwarciu okna terminala miałbyś jakieś komunikaty z uC, weź multimetr, ustaw sprawdzanie ciągłości obwodu i sobie to przetestuj, weź lupę i obejrzyj ścieżki, może zimny lut gniazda uC.

Jest jeszcze opcja dodania migania LED na pinie 13 co 1s, wg przykladowego blinka.

 

Link do komentarza
Share on other sites

Więc tak, sprawdziłem:
- przejście od Atmegi 328P do gniazda pinowego - ok

- przejście od rezystora do gniazda pinowego - ok.

- rezystory - ok

- przejscie od Atmegi 16u2 do rezystorów - ok

Przeprowadziłem jeszcze parę testów:

- wypiąłem Atmegę 328P z płytki, zwarłem piny TX i RX ze sobą i używając serial monitora wysłałem wiadomość, otrzymałem poprawne echo

- wpiąlem Atmegę 328P do płytki, za pomocą usbasp wgrałem przykład AnalogReadSerial, podpiąłem kablem usb do płytki i odpaliłem serial monitor. Otrzymuję : ���gC���gC���gC���gC���gC��

Boudrate w programie jest ustawiony na 9600 i taki sam mam w serial monitorze.

Link do komentarza
Share on other sites

1 godzinę temu, adull napisał:

�/��gC�/��gC�/��gC�/��gC�/��gC�/�

AnalogReadSerial wysyła dane liczbowe (binarne), a nie tekstowe na Serial. Więc to jak najbardziej mogą być prawidłowe dane...
[B4] [B3] [B2] [B1] \n

Edytowano przez H1M4W4R1
  • Lubię! 1
Link do komentarza
Share on other sites

Hmm, jeśli się nie mylę to powinien wyświetlać wartości liczbowe odczytane z pinu analogowego. Nie powinno być błędu związanego z formatem zmiennej, inaczej ten przykład traciłby sens. Proszę mnie poprawić jeśli źle myślę.

Link do komentarza
Share on other sites

@adull, powinien, nie wiem o czym pisze H1M4W4R1, dane są liczbowe ale w tym przykładzie wysłane funkcją Serial.println a nie write.

Uzyskanie sieczki na ekranie sugeruje, że dane są źle odczytywane, uC może być np. taktowany 9MHz, choć myśli, że jest taktowany 12MHz i źle interpretuje to co odczytuje. W teście loop sam sobie źle nadaje i ten sam błąd robi odczytując, co eliminuje błędy komunikacji.

Nie wiadomo, który uC ma błąd taktowania, raczej stawiam na Atmega328P, Atmega16U2 ma taktowanie związane z wymogami USB, choć akurat takiego przypadku jeszcze nie spotkałem i nie wiem jakie byłyby objawy. Z drugiej strony nie wykrywało początkowo USB, może to ma jakiś związek.

Nie mam pomysłu jak to zweryfikować nie mając oscyloskopu. Na pewno pomoże użycie trzeciego słuchacza - oscyloskop, analizator stanów logicznych Saleae, inne Arduino jako konwerter USB-UART, inny konwerter USB-UART. Masz programator, spróbuj odczytać ustawienie fusebite, wgrać jeszcze raz bootloader do Atmegi 16u, jeszcze raz wgrać mu wsad. Zmniejsz w programie testowym baud do minimum 300.

Weź inne Arduino, zrób sobie z niego przejściówkę UART, albo weź przejściówkę UART-USB, podłącz się pod piny UNO GND, TX (RX z trzeciego słuchacza) i posłuchaj co nadaje Atmega328,  potem zrób przejściówkę UART z tego Arduino (zwarcie RST na stałe)  i pogadaj z trzecim odbiornikiem, może ustalisz który jest winny.

Tak samo można posłuchać co przylatuje z mC Atmega16u, tylko podpinasz się pod pin RX pinem RX trzeciego słuchacza.

Do Atmegi328P można też wgrać bootloader ustawiający pracę uC na wewnętrzny rezonator 8MHz, może masz coś nie halo z kwarcem na płycie. Potem programujesz taką płytkę z tymi ustawieniami, takiej opcji nie ma w typowym Arduino IDE, trzeba dodać definicje płytek MINI CORE:

image.thumb.png.c23cc2cd44dd0b28692332b1034a349e.png

Nawet mając sieczkę na ekranie można zweryfikować działanie autoReset, dodaj w setup delay(5000), jak RST działa OK to dane pojawią się po otwarciu monitora COM z tym opóźnieniem, jak RST nie działa to będą lecieć ciągle niezależnie jak długo jest otwarty terminal.

Link do komentarza
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...

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.