Hva er årsakene til Arduino Freeze

Hva er årsakene til Arduino Freeze
Når du jobber med et prosjekt ved hjelp av Arduino -studenter, kommer over mange problemer, og disse problemene kan enten være relatert til Arduino -koden eller til selve Arduino -styret. Noen ganger på grunn av feil i Arduino -koden som kompilatoren ikke klarer å gjenkjenne eller maskinvareproblemer, fryser Arduino -tavlene fullstendig og ikke viser noen utdata. Så vi har tatt opp noen av problemene som får Arduino til å fryse.

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
  • Strømspenningsfall
  • Interruptus håndtering
  • Full minneutnyttelse

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;
mens (a == 5)
a = returnfive (); // vil alltid returnere 5

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

  • Brå strøm trukket av en tilkoblet enhet
  • Hvis det kobles til i en frittstående modus, kan batteriet være lite på ladingen
  • For mye støy i forsyningsspenningen
  • Feil USB -kabel eller ekstern strømforsyning

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:

  • Brukte bare nødvendige variabler
  • Unngå å bruke Malloc () -funksjonen eller bruk gratis () -funksjon når du bruker Malloc () -funksjonen
  • Forsøk å erklære variablene i funksjonene

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.