despre Fyuz

Acum, ca de ce am fost condus la eșecuri firmware.
Faptul că celula de memorie are atmegi responsabil pentru opțiunile de configurare ale tuturor MK - biți Fyuz.

biți Pro fyuz, ca de obicei, poate fi citit la DiHalta.
Aș adăuga că biții MC ATmega8 Fyuz aranjate în două octet - Senior Fyuz-octet (_fuses ridicat) și mai tineri Fyuz-byte (low_fuses)
Și Atmega168 există, de asemenea, o suplimentare Fyuz-byte (extended_fuses)

În cazul în care programarea MK provoacă un accident, apoi cu o anumită probabilitate (am fost de cateva ori =) în aceste celule pot ajunge în coșul de gunoi, rezultând în galyutsinirovaniyu sau inoperabil.
Acestea sunt cusute comenzi speciale pentru fiecare 3 octeți + 1bayt de date ( „scrie în cazul în care“ + „pentru a scrie“), adică, probabilitatea ca interferență se va potrivi exact unul dintre ele este mic, dar atunci când programator firmware-ul nesigure (sau în condiții de interferență puternice) în mod direct Fyuz biți, probabilitatea de a obține în coșul de gunoi lor a crescut semnificativ (ceea ce facem servi o comandă pentru a înregistra Fyuz și în cazul în care într-un fel miracol rupt prin poherit date de ghidare traseu mai ușor (acestea pot fi arbitrare) și MK fericit shavaet zgomot eter)

Cel mai neplăcut Fyuz:

RSTDISBL celulă
scris, să-l „0“ face rezet de ieșire în picior normală și
Flash IC pentru SPI va fi imposibil (prima programare trebuie să fie „presat la sol“ RESET - un fișier „0“)

SPIEN celulă
scris ea, „1“ este interzisă prin programarea SPI. Ei scriu ca
programare prin portul serial, această casetă nu este disponibilă, așa că nu părea amenințătoare, dar verificați nehochetsya =)

Celulele CKOPT și CKSEL
responsabil pentru momentul de MC și poate sta până la o astfel de poziție încât
controlerul va aștepta semnal de ceas extern sau să nu fie în măsură să se agită cuarț dumneavoastră.

Primul și al doilea tratat numai programmatrom paralel (și JTAG poate ajuta)
Al doilea tratat „calendarul de degetul mare“ (de cateva ori am ajutat =). Dab în XTAL1 (la atmegi8 - 9 picioare), cu un ac (sau o șurubelniță neizolat) și shote ca de obicei - prin SPI (nu prima dată, va =) - puteți utiliza cu siguranță un ceas extern, dar este dacă este sau nu este prea leneș pentru a face =)
Eșecurile în timpul programării Fyuz de repaus, de blocare-biți (biți responsabil pentru EEPROM de protecție) și a bootloader poate provoca probleme de tratament simplu (prin SPI) reinserția.

Procesul butlodera firmware constă în patru etape:

Deblocarea secțiunea bootloader în general, în mod implicit, toate de memorie și astfel atmegi
disponibil pentru citire / scriere.

Instalarea fyuz biți - reglează MC pentru a lucra în Arduino.

Firmware fapt butlodera

biți record de blocare. protejarea secțiunea încărcător a auto-reinscriptibil (în general, bootloader poate modifica sau chiar să se îndure)

atmega8.bootloader.programmer (implicit: STK500) protocolul utilizat butloderom.

atmega8.bootloader.path (implicit: ATmega8) calea în cazul în care fișierul este butlodera

atmega8.bootloader.file (implicit: ATmegaBOOT.hex) de fapt, bootloader

Acum, partea distractivă:

atmega8.bootloader.unlock_bits (Implicit: 0x3F) valoarea scrisă la blocare-octet pentru a debloca secțiunea butlodera. Se șterge toți biții de blocare în adică 1 permite modificarea secțiunii de aplicare și butlaodera.

atmega8.bootloader.high_fuses (implicit: 0xCA) valoarea este scrisă senior Fyuz-bytes.

atmega8.bootloader.low_fuses: valori (implicite 0xDF) sunt scrise în octet scăzut Fyuz

atmega8.bootloader.lock_bits (Implicit: 0x0F) valoarea scrisă la secțiunea de blocare-octet pentru blocarea butlodera - nu citire / scriere secțiunea bootloader (programator desigur poți, dar nu agresiv sau sinucidere bootloader schita nu poate =)

Luați în considerare ceea ce este scris în biți Fyuz MK: