- Verifikacija biblioteke, USB veza i ispravan odabir ploče.
- Ograničenja Arduina u vezi s korištenjem C++ try and catch metoda.
- Implementacija obrade grešaka korištenjem setjmp i longjmp.
Kada se upustite u svijet Arduina, normalno je da se u početku poprilično uplašite porukama o greškama koje se pojavljuju na ekranu. Taj osjećaj da se kod jednostavno neće prenijeti na ploču, a da ne razumijete baš zašto, svakodnevna je pojava za svakoga ko počinje da se bavi elektronikom.
Istina je da otklanjanje grešaka pri kompajliranju nije raketna nauka; samo zahtijeva malo strpljenja i znanje gdje tražiti. U ovom članku ćemo detaljno objasniti sve, od najosnovnijih propusta do naprednijih tehnika upravljanja greškama kako bismo spriječili da vaš projekat zaglavi.
Brza rješenja za uobičajene greške u učitavanju

Ponekad se mučimo tražeći složenu grešku u kodu, a problem je nešto potpuno vanjsko. Vrlo česta greška je da potrebna biblioteka nije ispravno instalirana u mapi biblioteka; ako ste sigurni da je imate, siguran trik je potpuno zatvoriti Arduino IDE i ponovo ga pokrenuti kako biste osvježili putanje.
Još jedna kritična tačka je fizička veza. Možda se čini trivijalnim, ali provjera USB kabla rješava ogroman broj problema. Provjerite je li pravilno povezan ili pokušajte s drugim kablom ako sumnjate da je oštećen. Slično tome, bitno je provjeriti da li ste odabrali ispravnu ploču u meniju alata, jer će pokušaj učitavanja Nano skice na Uno rezultirati trenutnim greškama.
Ako radite sa specifičnim pločama poput Seeeduina, postoji tehnički detalj koji često ostane nezapažen: prekidač M_RST_AUTO mora biti postavljen na položaj AUTO za automatsko punjenje, kako vam ne bi zadavao glavobolje.
Napredno rukovanje greškama u Arduinu

Važno je biti svjestan da najjednostavnije Arduino ploče imaju prilično ograničeno rukovanje greškama. One slijede filozofiju gdje sistem rijetko priznaje da je napravio grešku, tako da mnoge radnje koje bi u drugim jezicima izazvale izuzetak ovdje jednostavno ne proizvode nikakvo upozorenje , što može uzrokovati da se program ponaša nepravilno, a da vi ne znate zašto.
Standardni C++ koristi try i catch blokove za obradu grešaka, ali oni ne rade u Arduinu . Čak i ako IDE omogućava kompajliranje koda s njima, oni su onemogućeni tokom procesa kompajliranja, što ih čini beskorisnim na mikrokontroleru.
Alternative za kreiranje prilagođenih izuzetaka

Za one kojima je potrebna profesionalnija kontrola, postoji alternativa korištenjem biblioteke setjmp.h . Ova metoda vam omogućava da kreirate tačku skoka u programu na koju se možete vratiti kada dođe do ozbiljne greške, simulirajući tako osnovni mehanizam za rukovanje izuzecima.
- setjmpOva funkcija je odgovorna za označavanje tačne tačke u kojoj želimo da program nastavi izvršavanje nakon greške.
- jmp_bufTo je posebna varijabla koja pohranjuje sve potrebne informacije za povratak na prethodno označenu tačku.
- dugi skok: Ovo je instrukcija koja uzrokuje stvarni skok na zadatu tačku, vraćajući određeni kod greške.
Da bi se ovo ispravno implementiralo, ključno je da se `setjmp` nalazi unutar naredbe `if` ili `switch`, i da je tačka skoka po mogućnosti definirana unutar petlje. Ako pokušate skočiti na funkciju koja je već završila s izvršavanjem, program će se najvjerovatnije srušiti.
U zavisnosti od složenosti projekta, možete koristiti jednostavan sistem sa samo jednom vrstom greške ili napredniju verziju koja obrađuje različite incidente na osnovu numeričke vrijednosti koju prosljeđujete funkciji longjmp. Međutim, imajte na umu da ovaj sistem nije automatski; programer mora izvršiti ručnu provjeru i odlučiti kada će izazvati grešku.
Razumijevanje ovih koncepata, od provjere da USB kabel nije labav do implementacije skokova izvršenja pomoću naredbe setjmp, omogućava da proces razvoja bude mnogo glatkiji i manje frustrirajući sprječavajući zamrzavanje hardvera bez davanja ikakvih naznaka o tome šta se dogodilo.
Strastveni pisac o svijetu bajtova i tehnologije općenito. Volim dijeliti svoje znanje kroz pisanje, a to je ono što ću raditi na ovom blogu, pokazivati vam sve najzanimljivije stvari o gadžetima, softveru, hardveru, tehnološkim trendovima i još mnogo toga. Moj cilj je pomoći vam da se krećete u digitalnom svijetu na jednostavan i zabavan način.