MORGO ELEKTRONIKA



Kezdőlap | Kezdőknek | Kapcsolások | Kalkulátorok | Leírások | Letöltések | Linkek | Eladó cuccaim



MENÜ



LEÍRÁSOK



TÁMOGATÁS

Ha tetszik az oldal, kérlek támogasd egy minimális összeggel!


KÖZÖSSÉG

Üzenőfal




Nyomj egy tetszik gombot!


Share Oszd meg!



Küldj mailt!


  1









AVR - biztosíték (fuse) bitek





Sok hobbistát riaszt el az AVR-ek programozásától az úgynevezett fusebitek beállításainak nehézsége. Bár a letöltések között is találni egy interaktív PDF fájlt segítség képpen, és az engbedded.com oldalon is van egy jól használható fusebit kalkulátor, ezek mit sem érnek, ha nem vagyunk tisztában a biztosítékbitek mibenlétével, funkcióival. A helyzetet tovább bonyolítja a különböző programozó szoftverek beállításainak különbözősége. Ez utóbbi probléma megoldása az adott program súgójának tanulmányozása lehet.
A fusebitek megismerésében szertnék segíteni az alábbi írással. A leírás az ”AVR Tippek-trükkök” ingyenes tanfolyam része, teljes egészében Cseh Róbert (TavIR) munkája, az ő hozzájárulásával teszem közre változatlan szöveggel. Ha valakit érdekel a tanfolyam többi része, ITT tud feliratkozni rá.






Az eszközeink finomhangolása, működtetése szoftverből történik. Azonban van néhány olyan tulajdonságuk, amelyeket nem lehet szoftverből elérni. Ezeket az ún. biztosítékbitekkel konfiguráljuk.

Mi az a biztosítékbit?

A kérdés könnyű, ám a válasz kevésbé.
A belső flashmemória egyik speciális területe, ahol minden egyes bitnek önálló jelentése van. Némelyek minden chip esetén, néhányuk csak 1-1 chip esetén létezik. Itt a leckében csak a gyakoribbakat járjuk körbe...
Fontos! Egyszerre csak egy paramétert szabad változtatni és menteni. Ha valamit rosszul állítunk be és tetszhalott lett a chip: tudjuk, hogy mi történt.
Még fontosabb! Ha valaminek nem tudod a következményét, vagy nem tudod, hogy mire való: NE PISZKÁLD!

Arduino alatt nagy gondunk nincs az eszközzel, mert nem férünk hozzá a biztosítékbitekhez.
Készen kapjuk a chipet bootloaderrel felprogramozva és előre konfigurálva.
Bascom-AVR vagy egyéb más rendszerek alatt nekünk kell programfordításkor megadni, hogy milyen órajelről, milyen chipet használunk:
$crystal = 14745600
$regfile = ”M128def.dat”
GCC, WinAVR, AVR-Studio alatt erre a makefile állomány szolgál.
Fontos! A fordításkor illetve a programban megadott beállítások a fordítóprogramnak szólnak, nem a programozónak!
Fontos! A fordításként kapott HEX vagy BIN állomány semmiféle információt sem tartalmaz a chipről és a konfigurálásáról!


Alapbeállítások

Az első AVR chipek csak néhány egyszerű konfigurálást tartalmaztak. Ezeket hívták egyszerűen fusebit-nek (biztosítékbitnek). Ide tartozik:

Órajel
A korai chipek semmiféle teljes órajelgenerátorral nem rendelkeztek. Egyszerűen külső négyszögjelet vártak el, vagy rezonátort/kvarcot lehetett rájuk akasztani. A mai chipek órajele már lehet belső RC-tag által előállított (1-2-4-8MHz, 128kHz), külső RC-tagból származó vagy rezonátor/kvarcból kinyert rezgés. Ezek besorolása, konfigurálása sok lehetőséget biztosít. Ami beállítás vagy figyelmetlenség általában hibát okoz:
External clock = külső négyszögjel,
External quartz/resonator = külső kvarc!
Hibás órajel-beállítás esetén a chip ISP felületű programozáskor tetszhalott állapotba kerül! Ekkor általában megoldás lehet bármilyen órajel-generátor által előállított 1..16 MHz jel bekötése az órajelek XTAL1 kivezetésére.
Felmerül egy kérdés: Miért van ennyi féle órajel? Mert mindig az adott feladat határozza meg a pontosság, kalibrálhatóság, hőfok/páratartalom-függőség és költség alapon, hogy melyiket válasszuk.

CkOpt
A magas (~1cm) kvarcok esetén a berezgés nehezen indul. A CkOpt engedélyezésével a kvarc két oldala közt 4V feszültség alakul ki, míg a normál beállításkor ez 1V. Az első megváltoztatott jellemző magas kvarc esetén a CkOpt legyen!

CkOut
Egy belső kapun keresztül az órajel leválasztásra kerül. Így a kvarckivezetések melletti lábon az órajel elérhető. Így ideális megoldás ez kizárt IC-k órajel-generátorának létrehozására.

Extended Fuse
A biztosítékbitek száma idővel megnövekedett, a bővülő funkcióknak köszönhetően. Így előbb a High Fuse, majd az Extend Fuse is bevezetésre került.

Reset disable
Kis lábszámú chipek esetén minden láb számít! Itt van arra mód, hogy a reset kivezetést I/O lábként használjuk.
Fontos! Ha a reset-kivezetést I/O-ként konfiguráltuk, akkor ezután csak a nagyfeszültségű soros/párhuzamos égetővel programozhatjuk!

dW/JTAG enable/disable
A chipek futásidő alatti online monitorozását oldhatjuk meg a nagyobb chipeken a JTAG, a kisebbek esetén debugWire felületen keresztül.
Fontos! A debugWire a Reset kivezetésen át kommunikál, így bekapcsolása után sem Reset kivezetésként, sem I/O lábként nem használható!
Fontos! A JTAG kivezetés a nagyobb chipeken négy analóg bemenettel közös, így futásidő alatt ezek az analóg kivezetések nem használhatóak ADC funkcióra!

Preserve EEPROM / EESAVE
A Preserve EEPROM biztosítékbit mondja meg, hogy a chip törlésekor/újraírásakor a nemfelejtő memória tartalma megmaradjon-e. Ennek akkor van gyakorlati haszna, ha itt pl. kalibrációs adatokat tartunk, amit nem akarunk újra-meg-újra beírogatni...

BOD vagyis Brown-out Detector
Ez a funkció a tápfeszültséget figyeli. Az egyik korábbi leckében szó volt a memória korrumpálódásáról - alacsony tápfeszültség esetén (<1.6V). A BOD beállítható feszültségszint alatt a chipet RESET állapotban tartja, majd a feszültség visszatértekor a chip alaphelyzetből újraindul. Ökölszabály, hogy 5V rendszerfeszültség esetén a BOD 4.3V, míg 3.3V rendszernél 2.7V-ra állítandó.

Bootloader size és BootRst
A chipek önprogramozó képességét használjuk ki az emlegetett bootloaderrel. Maga a chip a feltöltött programról nem képes eldönteni, hogy szándékosan van a memóriaterület végén, vagy ténylegesen bootloaderként működik. Ezt kell konfigurálnunk. A BootRST bittel azt mondjuk meg, hogy a chip a főprogramot indítsa bekapcsoláskor a $0000 memóriacímről, vagy pedig a bootloader programot futtassa a Bootloader size által adott címtől. Ha a BootRST ki van kapcsolva, a bootloader méretbeállításnak semmiféle hatása nincsen.
Fontos! A bootloader mérete kötött. Jellemzően 256word...2kword méret közt lehet - de sokszor csak memóriacímre történik az utalás (ahol a bootloader blokk kezdődik).
Fontos! Miért word-ben van megadva a méret? Mert az AVR chip belül nem byte, hanem word alapú flash-memória szervezéssel bír!

Különleges biztosítékok: lockbit
A védelmi biztosítékbitek szerepe nem elhanyagolható. Ezzel megakadályozható a chip írása illetve a belső programtartalom kiolvasása.

Programming/Verification disable/enable
A chip programmemóriájának elérési módját adhatjuk meg. Ha nincs védelem bekapcsolva, akkor egyszerűen a program (Flash) és EEPROM tartalom kiolvasható. Azaz a chip egyszerűen klónozható. Megadható, hogy a beégetett tartalom csak ellenőrizhető legyen vagy akár ne legyen egyáltalán kiolvasható. Ez utóbbi két beállítás esetén a chip olyan adatsort ad vissza, mintha a chip üres lenne.

LPM/SPM enabe/disable
A chip bootflash illetve főprogram flash területén a flashmemória közvetlen írását/olvasását végző gépikódú utasítások engedélyezhetőek vagy tilthatóak. A bootrészen - ha használunk bootloadert - érdemes a flashkezelést tiltani. Így véletlenül sem tudjuk egy hibás programmal felülírni.

Mielőtt a chipet programozni kellene...
Fontos! A chip programozóra csatlakoztatása után - mielőtt bármi programozást megkezdenénk - a chipID kiolvasás legyen az első lépés! Így a kommunikációt ellenőrizhetjük le. A visszakapott chipID minden chiptípusra egyedi - gyakorlatilag a chip típusszámát jelenti.

Itt csak a gyakoribb biztosítékbiteket jártuk körbe. A kisebb chipeknek kevesebb, a nagyobb, komplexebb chipeknek több biztosítékbitje van. Ezek az adatlapokból ismerhetőek pontosan meg. A következő fejezet a már említett órajeleket járja körbe.

Róbert
TavIR-AVR ”oktatásfelelős” és AVR megszállott


Lap tetejére

Kezdőlap | Kezdőknek | Kapcsolások | Kalkulátorok | Leírások | Letöltések | Linkek | Eladó cuccaim
created by Morgo - 2012