Skocz do zawartości

Programowe uszkodzenie mikrokontrolera w Arduino


LazyCat

Pomocna odpowiedź

Hej wszystkim! 🙂

Jestem w końcowej fazie budowy robota, w sumie to został tylko soft do dokończenia i oddzielne źródło zasilania dla silników. Wgrałem poniższy kod w celu ostatecznego przetestowania mostka h.

#define ENA_PIN      2
#define ENB_PIN      7
#define IN1_PIN      3
#define IN2_PIN      4  
#define IN3_PIN      5  
#define IN4_PIN      6

void setup() {

 for(int i=2; 2 <= 7; i++)
   pinMode(i,OUTPUT);

   pinMode(13, INPUT);
   pinMode(12, OUTPUT);
}

void loop() {

   digitalWrite(2, HIGH);
   digitalWrite(3, HIGH);
   digitalWrite(4, LOW);
   digitalWrite(5, LOW);

   digitalWrite(6, HIGH);
   digitalWrite(7, HIGH);

}

Nie za bardzo działało więc chciałem wgrać inny program i tu nagle klops :<

Windows nie rozpoznaje arduino (leonardo), nawet na innym komputerze.

Jedyne co mi zostało po usilnych próbach resetowania itp to próba wgrania bootloadera.

Nie posiadam oddzielnego programatora ISP więc użyłem drugiego arduino jako programatora (w arduino leonardo jest to nie lada wyczyn w przeciwieństwie do każdej innej płytki arduino 😋).

Poskutkowało, ale przy każdej następnej próbie znowu uP padał i musiałem wgrywać od nowa bootloader, aż pomyliłem przyciski i zamiast wgrać bootloader załadowałem powyższy program i również moje drugie arduino padło i niestety dopiero wtedy zauważyłem buga w programie :<

w 10 linii zamiast

for(int i=2; 2 <= 7; i++)

powinno być

for(int i=2; i <= 7; i++)

Czy to może być przyczyną? Czy jest jakiś sposób aby wyzerować program w pamięci flash uP? I najważniejsze: Czy muszę kupować programator ISP aby ożywić te dwie płytki?

I może od razu przedstawię drugi problem.

Sonar HC-SR04 na średnio 5-6 pomiarów wywala jeden z kosmosu, np podaje wartości zbliżone do 50cm i nagle jeden 90cm (wszystko jest statyczne, nic się nie porusza 🙂)

Czy to normalne? Da się jakoś to zlikwidować?

Link do komentarza
Share on other sites

Z poziomu programu jest tylko kilka sposobów na uszkodzenie układu:

1. Zmiana wartości pamięci flash (ale atmega nie może zmieniać własnej części lub "wyższej" (czyli bootloader może zmieniać zwykł firmware, a zwykł firmware nei może nic). Odwracalne przez przeflaszowanie.

2. Zmiana fusebitów - wygląda zwykle tak, jakby nic w procku nie było. Nie wydaje mi się, aby było możliwe z firmware, ale może. Na pewno możliwe z bootloadera. Odwracalne.

3. Upalenie portów lub któregoś z peryferiów np. poprzez ustawienie jako wyjście pinu podłączonego do źródła o niskiej impedancji (czyli pin powinien być wejściem) lub poprzez przekroczenie dozwolonego napięcia. Nieodwracalne, a dodatkowo "nie-do-końca" uszkodzone peryferia potrafią stwarzać bardzo losowe problemy.

PS:

zastanów się czy procesor padał, czy też po prostu się zawieszał. Chyba nie masz uruchomionego Watchdoga (co jest bardzo złe w tym przypadku). Radzę go uruchomić (np. na 500ms) i na starcie programu przed wszystkim, zamrugać jakąś diodą albo pinkąć buzzerem. Pamiętaj o resetowaniu go w pętli głównej.

Link do komentarza
Share on other sites

Program jedynie Ci się zawiesza - spróbuj przytrzymać wciśnięty przycisk reset na płytce, kliknąć "Załaduj" w Arduino i kiedy skończy się kompilowanie programu puść przycisk reset. W Arduino po resecie uruchamiany jest bootloader (co można poznać po charakterystycznym mruganiu diodą) - jeśli trafisz w moment kiedy on działa, program powinien się normalnie załadować.

Link do komentarza
Share on other sites

Dzięki za odpowiedzi 🙂

@OldSkull Właśnie tak jakby się zawieszał, wpadał w infinity loop w funkcji setup, co jest niezwykle chamskie bo windows nie rozpoznaje wtedy arduino. Jak wgrywałem nowy bootloader to automatycznie wgrywał się blink i wszystko wracało do normy 🙂

Co do Watchdoga to nie do końca jeszcze rozumiem jak to zastosować, to oddzielny hardware? Co określony czas muszę wysyłać sygnał do niego?

@mactro Dzięki wielkie, pomogło 🙂 Co mnie trochę dziwi właściwie, skąd kompilator wiedział na który port COM i wgl że podłączone jest arduino skoro windows go nie wykrywał?

I zostaje jeszcze kwestia tego sonaru 😋

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

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...