Mikrokontrolery AVR - fusebity.
Fusebity mikrokontrolerów AVR - ATMEGA 8
Fusebity AVR - to trwałe bity konfiguracji w mikrokontrolerze Atmega 8, podzielone zostały na trzy grpy (bajty) (LOW, HIGH, LOCK), które wpływają na jego działanie, w tym na ustawienia zegara (np. CKSEL3 ...0), sposób uruchamiania (np. BOOTSZ1/BOOTSZ0) i ochrony mikrokontrolera przed nieautoryzowanym dostępem oraz inne funkcje. Atmega 8 nie posiada rozszerzonej grupy fusebitów (EF). Rozpoczynając od atmega 8 spróbujemy zaprzyjaźnić się z fuse bitami mikrokontrolerów. Przejdźmy teraz do konkretów.
Fusebity Atmega 8:
1. Fusebity grupy LOW (LF) - podstawowe wyjaśnienia.
BODLEVEL: (Brown-Out Detection Level): Włącza lub wyłącza obwód detekcji spadku napięcia zasilania, chroniąc przed resetem przy zbyt niskim napięciu zasilania (np. 2.7V, 4.0V, 6.0V)
BODEN: Włączenie/wyłączenie detektora spadku napięcia zasilania Brown-out
SUT1..0: Wybór czasu startu mikrokontrolera (opóźnienie stabilizacji zegara) domyśne ustaw. 10
CKSEL3..0: Wybór źródła taktowania (np. wewnętrzny oscylator 1/2/4/8 MHz lub kwarc zewnętrzny) domyślne ustaw. 0001
2. Fusebity grupy HIGH (HF) -wyjaśnienia i pojęcia
RSTDISBL: Wyłącza pin RESET jako wejście programowania
WDTON: Włącza/wyłącza Watchdog Timer. Włączenie powoduje, że licznik Watchdog jest zawsze aktywny, nawet po resecie
SPIEN: Włącza/wyłącza programowanie przez interfejs SPI
CKOPT: (Oscillator Options): Zmienia tryb pracy oscylatora (np. wzmacnia amplitudę drgań kwarcu dla poprawy stabilności przy wyższych częstotliwościach)
EESAVE: Powoduje zachowanie zawartości pamięci EEPROM podczas operacji kasowania układu (Chip Erase)
BOOTSZ1...0: Określenie rozmiaru sekcji Bootloader.(00 - 128 B) (11) 1024B
BOOTRST: Wybór wektora startowego (1 – mikrokontroler po resecie zaczyna pracę od adresu 0x0000 aplikacja) lub (0 - od początku sekcji bootloader)
3. fusebity grupy Extended (EF) - Atmega 8 nie ma tej grupy. Nie wszystkie mikrokontrolery AVR mają ten bajt fusebitów.
4. Fusebity grupy LOCK (Lock bity) - bity blokujące, specjalna grupa ustawień służąca do ochrony pamięci przed nieautoryzowanym odczytem lub nadpisaniem.
BLB12, BLB11 - ochrona sekcji Bootloadera. Działają analogicznie do powyższych, ale chronią samą sekcję Bootloader przed instrukcjami wykonywanymi z sekcji Application.
Mode 1 (11): Brak ograniczeń.
Mode 2 (10): Program główny nie może zapisywać do sekcji bootloadera.
Mode 3 (00): Program główny nie może zapisywać ani czytać sekcji bootloadera.
Mode 4 (01): Program główny nie może czytać z sekcji bootloadera.
BLB02, BLB01 - ochrona sekcji aplikacji. Te bity określają, czy kod znajdujący się w sekcji Bootloader może czytać lub zapisywać do sekcji Application (głównej części programu).
Mode 1 (11): Brak ograniczeń.
Mode 2 (10): Bootloader nie może zapisywać do sekcji aplikacji.
Mode 3 (00): Bootloader nie może zapisywać ani czytać (LPM/SPM) sekcji aplikacji.
Mode 4 (01): Bootloader nie może czytać z sekcji aplikacji.
LB2, LB1 - tryby ochrony ogólnej. Te bity decydują o dostępie do całej pamięci Flash i EEPROM przez programatory zewnętrzne (ISP/Równoległe). Wybrane ustawienia:
| LB2 | LB1 | Stan | Opis |
| 1 | 1 | No memory lock | Brak blokad. Można swobodnie programować i odczytywać układ. |
| 1 | 0 | Dalsze programowanie wyłączone | Zablokowana możliwość dalszego programowania (zapisywania) pamięci Flash i EEPROM. Odczyt jest nadal możliwy. |
| 0 | 0 | Dalsze programowanie i weryfikacja wyłączone | Pełna blokada. Nie można zapisać ani odczytać (zweryfikować) zawartości Flash i EEPROM przez zewnętrzny programator. |
Kluczowe zasady logiki LOCK bitów: Kolejność programowania: Lock bity należy programować na samym końcu, po wgraniu programu i ustawieniu fusebitów.
Bezpieczeństwo: Jeśli Twoim celem jest ochrona kodu przed skopiowaniem przez konkurencję, ustaw bity LB1 i LB2 na 0.
Odblokowanie: Jeśli zablokujesz procesor (00), programator nie pokaże zawartości pamięci. Aby wgrać nowy program, musisz wybrać funkcję „Chip Erase” w oprogramowaniu takim jak AVRDUDE lub Microchip Studio.
Domyślne dla Atmegi8 ustawienia fuse bitów: LF - E1, HF - D9, LOCK - FF.