Toate microcontrolerele AVR au biți de configurare. Acestea sunt biți care specifică numărul de setări globale ale microcontrolerului, de exemplu, sursa de ceas, tensiunea de prag a circuitului de resetare, dimensiunea zonei de boot, rezoluția watchdog, etc.
Siguranțele sunt stocate în memoria flash, astfel încât acestea își păstrează semnificația atunci când nu există nici o putere. Acestea sunt de obicei instalate o singură dată în timpul programării inițiale a firmware-ului.
Seturile de siguranțe incorecte pot perturba sistemul. În cel mai bun caz, microcontrolerul va funcționa, de exemplu, la o frecvență greșită și, în cel mai rău caz, vom pierde capacitatea de programare a microcontrolerului prin interfața SPI. Acest lucru se poate întâmpla fie prin ignoranță, fie prin erori accidentale.
Există o modalitate care poate împiedica unele dintre aceste situații. Aceasta constă în introducerea în programul de microcontroler a unei comparații a biților de siguranțe cu valorile cerute. Ceva cum ar fi controlul de sine. Dar pentru ca ele să fie verificate, trebuie citite mai întâi. Și acum ne vom da seama cum să facem asta.
Faceți imediat o rezervare, un exemplu va fi pentru IAR`a. Nu am acces la Atmel Studio chiar acum, pentru că nu sunt acasă.
Siguranțele și siguranțele sunt amplasate în registre speciale în memorie nevolatilă. Pentru a accesa aceste registre, trebuie să efectuați o serie de acțiuni:
Deoarece programăm în C, în cazul nostru sarcina va fi rezolvată într-un mod mai simplu, folosind funcția încorporată IAR `a. Ea va efectua aproape toate aceste acțiuni pentru noi. Prototipul funcției este descris în fișierul intrinsics.h și arată astfel.
siguranțe biți mici 0x0000
siguranțe biți de înaltă 0x0003
siguranța biți extinse 0x0002
biti de blocare 0x0001
Folosind aceste date, puteți scrie macro-uri pentru a citi biți de siguranțe.
Și pentru a citi biții de blocare în fișierul intinsic.h aveți deja o macrocomandă.
Ei bine și un mic exemplu ca programul cu verificarea inițială a siguranței de biți ar putea arăta.