Pichciooo Napisano Kwiecień 20, 2023 Udostępnij Napisano Kwiecień 20, 2023 Cześć, wgrałem program na programowalną diodę RGB ale dioda się nie zapaliła, więc zacząłem sprawdzać sygnał miernikiem ale sondą dotknąłem czegoś czego nie powinienem 😞 Płytkę rozłączyło z komputerem ale od razu połączyła się od razu (były słychać sygnał rozłączania w Windows oraz diody na UNO zgasły). Nie było czuć żadnego zapachu spalenizny i płytka wygląda ok (zdjęcie pod spodem). Teraz przy każdym wgraniu programu kompilacja przebiega prawidłowo ale nie można przesłać programu na płytkę, występuje błąd avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x8b avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x8b avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x8b avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x8b avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x8b avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x8b avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x8b avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x8b avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x8b avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x8b Failed uploading: uploading error: exit status 1 Oprogramowanie prawidłowo wykrywa płytkę oraz port do którego jest podłączona. Przy podłączaniu napięcia na płytkę świeci tylko dioda zasilająca. Podczas wgrywaniu programy co jakiś czas zapala się dioda Rx ale Tx się nie świeci. Stary program działa, ponieważ podawałem sygnał na wyjście analogowe A0 i nadal podawane jest tam napięcie. Jak mogę sprawdzić czy płytka działa prawidłowo, który element został uszkodzony? Posiadam orginalne Arduino UNO Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Kwiecień 20, 2023 Udostępnij Kwiecień 20, 2023 @Pichciooo witam na forum 🙂 Wgraj najprostszy program czyli Blink (miganie diodą). Daj znać czy się wgrał i czy dioda wbudowana na Arduino miga. Link do komentarza Share on other sites More sharing options...
Pichciooo Kwiecień 20, 2023 Autor tematu Udostępnij Kwiecień 20, 2023 Próbowałem ale wyskakuje ten sam problem, nie da się wgrać programu. Link do komentarza Share on other sites More sharing options...
jand Kwiecień 20, 2023 Udostępnij Kwiecień 20, 2023 Czy obecnie wgrany program wysyła coś na port szeregowy? Jeśli tak, a dioda TxD nie miga, to uszkodzenie jest w tym torze. 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
Pichciooo Kwiecień 20, 2023 Autor tematu Udostępnij Kwiecień 20, 2023 Nie, obecnie wgrany program nie wysyła nic na port szeregowy. Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Kwiecień 20, 2023 Udostępnij Kwiecień 20, 2023 @Pichciooo w takim razie spróbuj jeszcze kilka razy wgrać nowy program wciskając przycisk Reset na płytce tuż przed/chwilę po rozpoczęciu wgrywania. Link do komentarza Share on other sites More sharing options...
Pichciooo Kwiecień 20, 2023 Autor tematu Udostępnij Kwiecień 20, 2023 Też już tego próbowałem 😞 przed, w trakcie, troszkę po, trzymałem albo klikałem i też nie pomaga 😕 Link do komentarza Share on other sites More sharing options...
kaczakat Kwiecień 20, 2023 Udostępnij Kwiecień 20, 2023 Na płytce są dwa uC, ten mniejszy jest odpowiedzialny za połączenie z PC, ten większy sterował ledami i do niego wgrywałeś program. Jeśli płytka pokazuje się prawidłowo w PC to pewnie problem jest z tym większym, mały do niego mruga tym ledem RX, a większy nie odpowiada. Użyj programatora i spróbuj coś wgrać tą drogą do Atmega328p, jak się uda to wgraj jakieś programy używające pinów UART, jakiś komunikat drukowany na serial, komunikat wysyłany z PC do Arduino i odsyłający z Arduino z powrotem do PC. Programator to np. USB ASP, można też zrobić programator z innej, sprawnej płytki Arduino. Ten uC łatwo też wyjąć na stykówkę, znaleźć schemat dać mu zasilanie, podłączyć się do niego programatorem poza płytką Arduino., popatrzeć jak się zachowuje, czy to w nim problem, czy z zasilaniem od strony płytki Arduino. 1 Link do komentarza Share on other sites More sharing options...
Nefarious19 Kwiecień 21, 2023 Udostępnij Kwiecień 21, 2023 Wypal bootloader w kontrolerze ATmega328p i będzie ok raczej. Niestety musisz mieć w tym celu zewnętrzny programator. 1 Link do komentarza Share on other sites More sharing options...
Pichciooo Kwiecień 21, 2023 Autor tematu Udostępnij Kwiecień 21, 2023 Z góry przepraszam za brak profesjonalizmu i wykonanie schematów w "paint". Zamówiłem nową płytkę arduino Uno, teoretycznie jutro powinna przyjść i wtedy będę walczyć dalej. Ale mam jeszcze kilka pyań. @kaczakat Podłączam sprawne arduino wedle poniższej rozpiski i schematu: zasilanie – 5V masa – GND MOSI – D11 MISO – D12 SCK – D13 reset – D10 A uszkodzone arduino do złącza programowego uC (ATmega328p) też tak jak na schemacie. W menu wybieram rodzaj programatora Tools/Programmer/Arduino as ISP i następnie wgrywam program np. taki jak w kursie "Kurs Arduino – #3 – UART (komunikacja z PC), zmienne" void setup(){ Serial.begin(9600); //Uruchamiamy transmisję pinMode(8, OUTPUT); //Wyjście diody czerwonej pinMode(9, OUTPUT); //Wyjście diody zielonej pinMode(10, INPUT_PULLUP); //Przycisk digitalWrite(8, LOW); //Wyłączenie obu diod digitalWrite(9, LOW); } void loop() { if (digitalRead(10) == LOW) { //Jeśli przycisk jest wciśnięty digitalWrite(9, HIGH); //Włączenie diody zielonej digitalWrite(8, LOW); //Wyłączenie diody czerwonej } else { //Jeśli przycisk nie jest wciśnięty digitalWrite(9, LOW); //Wyłączenie diody zielonej digitalWrite(8, HIGH); //Włączenie diody czerwonej Serial.println("Uwaga! Alarm! Okno nie jest zamkniete!"); while (digitalRead(10) == HIGH) { //Zatrzymujemy się w pustej pętli do ponownego zamknięcia okna delay(25); //W pętli wprowadzamy małe opóźnienie 25ms, aby niwelować zakłócenia } } } I podłączam taki prosty schemat. Dobrze wszystko rozumiem? 1 Link do komentarza Share on other sites More sharing options...
Pichciooo Kwiecień 21, 2023 Autor tematu Udostępnij Kwiecień 21, 2023 Jeszcze raz przepraszam za używanie "painta" do robienia schematu. @Nefarious19 żeby wypalić bootlader podłączam sprawne UNO do uszkodzonego według poniższego podłączenia: Sprawna płytka: zasilanie – 5V masa – GND MOSI – D11 MISO – D12 SCK – D13 reset – D10 Uszkodzona płytka: zasilanie - 5V masa - GND MOSI - D11 MISO – D12 SCK – D13 reset - RESET (POWER) W menu wybieram rodzaj programatora Tools/Programmer/Arduino as ISP. W menu Tools/Board wybieramy taką płytkę, jakiej bootloader chcemy wgrać czyli ARDUINO UNO. Pozostaje tylko Tools/Burn Bootloader i czekać na komunikat o sukcesie. Coś pomyliłem czy wszystko ok? Link do komentarza Share on other sites More sharing options...
ethanak Kwiecień 21, 2023 Udostępnij Kwiecień 21, 2023 Przede wszystkim - na sprawne Arduino musisz wgrać program "Arduino ISP" (jest w przykładach). Poza tym warto podłaczyc kondensator (np 10 uF) między resetem i masą (bez tego Arduino może się niepotrzebnie resetować). Powodzenia! 1 Link do komentarza Share on other sites More sharing options...
kaczakat Kwiecień 21, 2023 Udostępnij Kwiecień 21, 2023 Nawet jak podłączysz odwrotnie kabelki to najwyżej nic się nie wgra, nie wykryje procka. Oczywiście nie pomyl GND z VCC. Najlepiej wypróbować działanie programatora na jakimś sprawnym w 100% uC, albo innej płytce Arduino, może masz trzecie - UNO/NANO/MEGA/PRO MINI/Leonardo. Możesz zacząć od wypalenia bootloadera, jeśli mocno coś upalone w uC to nie zagra. Ale żeby sprawdzić działanie UART (co jest konieczne dla działania bootloadera potem) to wgraj coś takiego: /* Serial Event example When new serial data arrives, this sketch adds it to a String. When a newline is received, the loop prints the string and clears it. A good test for this is to try it with a GPS receiver that sends out NMEA 0183 sentences. NOTE: The serialEvent() feature is not available on the Leonardo, Micro, or other ATmega32U4 based boards. created 9 May 2011 by Tom Igoe This example code is in the public domain. http://www.arduino.cc/en/Tutorial/SerialEvent */ String inputString = ""; // a String to hold incoming data bool stringComplete = false; // whether the string is complete int zmienna; void setup() { // initialize serial: Serial.begin(115200); // reserve 200 bytes for the inputString: inputString.reserve(200); } void loop() { // print the string when a newline arrives: if (stringComplete) { Serial.println(inputString); // clear the string: inputString = ""; stringComplete = false; } Serial.println(zmienna++); delay(1000); } /* SerialEvent occurs whenever a new data comes in the hardware serial RX. This routine is run between each time loop() runs, so using delay inside loop can delay response. Multiple bytes of data may be available. */ void serialEvent() { while (Serial.available()) { // get the new byte: char inChar = (char)Serial.read(); // add it to the inputString: inputString += inChar; // if the incoming character is a newline, set a flag so the main loop can // do something about it: if (inChar == '\n') { stringComplete = true; } } } Ustaw w terminalu zgodną prędkość, wysyłanie linii tekstu zakończonej znakami NL/CR, wysłana linia tekstu powinna wrócić, a poza tym co 1s wysyła z Arduino wartość zmienna++. Tu masz opisaną procedurę w wielu wariantach: https://docs.arduino.cc/built-in-examples/arduino-isp/ArduinoISP Link do komentarza Share on other sites More sharing options...
Nefarious19 Kwiecień 23, 2023 Udostępnij Kwiecień 23, 2023 (edytowany) Dnia 21.04.2023 o 17:52, ethanak napisał: Przede wszystkim - na sprawne Arduino musisz wgrać program "Arduino ISP" (jest w przykładach). Poza tym warto podłaczyc kondensator (np 10 uF) między resetem i masą (bez tego Arduino może się niepotrzebnie resetować). Powodzenia! Nie dodawaj żadnego kondensatora. Toż to jakaś bzdura. A już zwłaszcza 10uF... Taka duża pojemność może uszkodzić pin w sprawnym arduino... nie wiem skąd ten pomysł... pomijam już że na płytce Arduino Uno jest już 100nF kondensator a jego celem jest odfiltrowanie dużych zakłóceń które mogłyby wyindukować napięcie na pinie reset podczas normalnej pracy mikrokontrolera. To programator, (w tym przypadku drugie arduino z wgranym wsadem Arduino as ISP) decyduje kiedy i na ile programowany procek resetuje. Jak dasz taki duży kondek to możesz to zakłócić lub jeżeli będzie programator wiele razy próbował zwierać do masy i zasilania (co się dzieje podczas programowania) taki pin z dużym kondkiem to może uszkodzić pin resetujący. Kondensator podczas zmiany napięcia na nim pobiera duży prąd żeby się przeładować (ic = C 8 dUc / dt). Prąd ogranicza tylko jego ESR i rezystancja kanału mosfetów w driverze GPIO. Jeżeli w płytce Uno z której wyleciał bootloader stało się tylko to to wystarczy podłączyć sprawne UNO z wgranym Wsadem Arduino as ISP. To wszystko. Wewnątrz skeczu na samej górze opisane jest jakie piny podłączyć do jakich. Potrzebne są sygnały: Arudino(AsIP) -> UNO bez bootladera: VCC->VCC GND->GND MISO->MISO MOSI->MOSI SCK->SCK wybrany w skecthu pin -> RST (BROŃ BOŻE ŻADNEGO KONDENSATORA!) i tyle 🙂 póżniej dajesz w ArduinoIDE odpowiedni programator w ustawieniach i klikasz wypal bootlader. To wszystko. Edytowano Kwiecień 23, 2023 przez Nefarious19 Link do komentarza Share on other sites More sharing options...
matsobdev Kwiecień 23, 2023 Udostępnij Kwiecień 23, 2023 Że też Arduino nie mogło zrobić przywracania z tego drugiego kontrolera, co robi na mostek UART-USB Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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ę »