Hva er de vanlige årsakene til Arduino Freeze?
Det kan være flere grunner som kan føre til at Arduino fryser eller får det til å slutte å fungere, så nedenfor er noen av de vanlige problemene som Arduino fryser:
Kjører en uendelig sløyfe
En av hovedårsakene til frysing av Arduino er Arduino sitter fast i løkken hvis tilstand alltid er sann og ikke er i stand til å utføre de andre delene av koden. Selv om seksjonen "Void loop ()" er kort sagt, inneholder en uendelig sløyfe, men denne delen i seg selv inneholder løkker og forhold, men den kjører ikke på noen tilstand den ganske enkelt utfører instruksjonene gitt i den. For å forstå begrepet uendelig sløyfe kan du se koden gitt nedenfor
int a = 0;I koden ovenfor kan vi se at sløyfen alltid vil være sann, så den vil fortsette å utføre tHus som kjører en uendelig sløyfe og får Arduino til å fryse.
For å forhindre at Arduino blir sittende fast i den uendelige sløyfen, unngå å bruke mens og for sløyfe i løkken () delen av koden hvis de tar mer tid å utføre.
Strømspenningsfall
Arduino -tavlene har driftsspenning på 5 til 12 volt, men hvis spenningen av en eller annen grunn synker under 5 volt, vil Arduino begynne å henge og slutte å fungere. Spenningsfallet kan oppstå på grunn av følgende årsaker
For å unngå slike problemer med spenningsfall, sjekk alltid batterilekoblingene og ladningen i tilfelle frittstående modus. Kontroller også USB -kabelen hvis den brukes til å drive Arduino -brettet, og sjekk også enhetene som er koblet til Arduino.
Avbruddshåndtering
Avbrudd kan være anomalien som oppstår mens du utfører Arduino -koden, og når et avbrudd oppstår, stopper Arduino hele koden og begynner å utføre instruksjonen som er gitt for eventuelt avbrudd. Så hvis instruksjonen for det respektive avbruddet er lang eller tar betydelig tid, kan dette føre til at Arduino fryser.
Tilsvarende kan avbrudd utløses ved et uhell, av ISR i Arduino -koden og får Arduino til å henge eller fryse. For å imøtekomme dette problemet, kan vi lagre statusen til avbruddet i registerene til mikrokontrolleren, så jeg vil forhindre utilsiktet å slå på avbruddet.
Vi kan minimere behandlingstiden for å håndtere avbrytelsen ved å optimalisere koden for avbruddshåndtering, og på denne måten kan sjansen for frysing av Arduino minimeres.
Full minneutnyttelse
Som vi vet at Arduino -brett ikke har stort minne, så det må brukes effektivt. I tilfelle hvor Arduino -koden er ganske lang og bruker for mange variabler, er det imidlertid en sjanse for at minne om Arduino kan bli full og få den til å henge eller tilbakestilles.
Tilsvarende, hvis vi tildeler stort minne ved hjelp av Malloc () -funksjonen, kan dette også føre til at Arduino fyller minnet om Arduino. Kompilatoren vil også advare mens du sammenstiller koden når minnet er nær fullt eller allerede er fullt.
Dette problemet kan unngås ved å gjøre handlingene som er oppført nedenfor:
Konklusjon
Arduino -tavlene kan vise merkelig atferd som å bli fryset i lang tid eller tilbakestille seg selv etter en tid. Slik oppførsel observeres når det enten er problem i Arduino -koden eller selve styret. Vi har listet opp noen av de vanligste årsakene til frysing av Arduino og foreslo også noen løsninger for å unngå slike problemer i denne guiden.