• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino nie działa raz na około 10 włączeń
#11
W którym miejscu program się wiesza?
Nie wiesz? Bo nie masz ŻADNEGO mechanizmu debugowania.

To, że Arduino tego narzędzia nie ma z prawdziwego zdarzenia (dlatego programy pisze się długo), nie znaczy, że nie da się w jakiś sposób debugować kodu. Zrób debugowanie i dowiesz się gdzie program wisi.

Możesz uruchomić WDG (dlaczego 99% programów dla Arduino nie uzywa WDG?) i gdy program zawiśnie wykona reset. Nie rozwiąże to problemu ale go zamaskuje. Najlepiej oczywiście właczyc przerwania od WDG, w przerwaniu sprawdzić adres powrotu na stosie i bardzo często można się dowiedzieć jaka funkcja wywołuje zawieszenie a na pewno, dowiesz się gdzie program wisi.
 
Odpowiedź
#12
Ten kawałem, który wypisałeś nie powinien mieć z problemem nic wspólnego. Znaczy wynika z niego, że niedawno zacząłeś i tyle. Bardziej bym uwierzył, że player zasypany jakimiś głupotami zawiesza się i przestaje grać. Jak już dołożysz te cztery czytniki to może się robić ciekawie z tymi delayami w kodzie playera, pewnie jeszcze w loop i przy samych czytnikach. Dopóki korzystasz z delay to zapomnij o wielofunkcyjnym programie. Przejdź kurs na forbocie, kup książkę, naucz się inaczej zarządzać czasem niż zakładając wiadro na głowę procesorowi delayem.
 
Odpowiedź
#13
Na pierwszy rzut oka, kod ,który pokazał nie powinien się zawieszać. Fakt, że są tam bzdury, np:
Kod:
mySerial.begin (9600);
delay(100);
Po co ten delay?
Po każdej komendzie do odtwarzacza tez delay. Po co? Czas do namysłu?

Arduinowcy UWIELBIAJĄ delay, nienawidzą WDG i debugowania. Piszą programy dokładnie odwrotnie niż nakazuje logika i zdrowy rozsądek.
Np SPL dla STM32 NIE MA funkcji w rodzaju delay i słusznie. Gdyby z funkcji Arduino wywalić delay, programy byłyby pisane bardziej rozsądnie, bo wymuszałyby pisanie programów "z głową". W Arduino delay jest NADUŻYWANE! Co parę rozkazów delay, wejście do pętli delay, wyjście z pętli delay. Powoli odnosze wrażenie, że dealy zastępuje średnik albo co najmniej zamyka blok (znak"}").
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości