- Шта су осигурачи у АВР-у - детаљно објашњење
- Битови осигурача у Ардуину
- Компоненте потребне за испитивање осигурача у АВР-у
- Шема за испитивање битова осигурача у АВР-у
- Тестирање осигурача у АВР-у
У овом упутству ћемо говорити о осигурачима. Још док сам био на факултету и учио о свим цоол стварима у електроници, први пут сам чуо термин осигурач у АВР-у, моја почетна мисао на ту тему била је, ох! има нешто у АВР-у што ће пухати ако сам погрешио. Тада на Интернету није било доступних много ресурса. Прилично сам претраживао како бих сазнао да су се ови осигурачи односили на неке посебне битове у АВР микроконтролеру. Ови битови су попут сићушних прекидача унутар АВР-а и њиховим укључивањем / искључивањем можемо укључити / искључити неке посебне карактеристике АВР-а. Укључивање и искључивање значи подешавање и ресетовање.
Искористићемо ову прилику да разговарамо о свему што постоји о битовима осигурача у АВР-у. Ради једноставности, узећемо пример Ардуино плоче на којој се налази популарни АТмега328П микроконтролер. Овде ћете научити како поставити ове осигураче за укључивање и искључивање неких од ових карактеристика, што је врло корисно у стварним апликацијама. Па, кренимо одмах у то.
У нашим претходним постовима изградили смо много пројеката АВР микроконтролера попут Интерфацинг ГСМ модула са АВР микроконтролером и Интерфацинг ХЦ-05 са АВР микроконтролером. Можете их погледати ако желите да сазнате више о тим пројектима.
Шта су осигурачи у АВР-у - детаљно објашњење
Као што смо раније разговарали, осигурачи у микроконтролеру су попут малих прекидача који се могу укључити и искључити да би се омогућиле и онемогућиле разне функције АВР микроконтролера. Ово је део у којем се поставља следеће питање, па како поставити или ресетовати ове осигураче? Одговор на ово питање је једноставан: То радимо уз помоћ регистара осигурача.
У АТмега328П ИЦ има укупно 19 битова осигурача и подељени су у три бајта осигурача. Они су дефинисани као „Проширени бајтови осигурача“, „Бајт високог осигурача“ и „Бајт малог осигурача“.
Ако погледате Табелу 27 табеле података АТмега328 / П Рев: 7810Д – АВР – 01/15, можете сазнати све ситне детаље о битовима осигурача. Али доња слика ће вам дати бољу идеју о одељку са осигурачима у листу са подацима.
Сада када сте сазнали мало о битовима осигурача, идемо кроз таблицу података и сазнајмо све потребне детаље о овој ИЦ.
Проширени битови осигурача:
Једном када кликнете на картицу Осигурачи и померите се мало надоле, наћи ћете Табелу 27-5: која приказује табелу за „Проширени бајт осигурача“, познат под називом „ ЕФУСЕ“. Слика испод показује управо то.
У овој табели су само три употребљива бита, а остала три су резервисана. Ова три бита се баве нивоом откривања Бровноут-а. Као што можете видети у Напомени ако погледамо Табелу 28-5, можемо пронаћи више детаља о њој.
Као што видите у горњој табели, имамо табелу за откривање Бровноута. Детекција изостајања је функција која ресетује микроконтролер када напон напајања падне испод одређеног нивоа напона. У АТмега328П ИЦ можемо потпуно онемогућити откривање избацивања или га подесити на нивое који су приказани у горњој табели.
Бајтови високог осигурача:
Као што можете видети на доњој слици, табела 27-6: листа са подацима приказује битове виших осигурача ИЦ АТмега328П.
Високи осигурач баве различитим задацима унутар АТМЕГА328 микроконтролера. У овом одељку ћемо говорити о вишим битовима осигурача и њиховом раду. Почнимо са битовима БООТРСТ, БООТСЗ0 и БООТСЗ1. Ова три бита су одговорна за подешавање величине покретања; величина покретања односи се на количину меморије резервисане за инсталирање покретачког програма.
Учитавач је посебан софтвер који се покреће на врху микроконтролера и управља различитим задацима. Али у случају Ардуина, боотлоадер се користи за отпремање Ардуино скице унутар микроконтролера. У једном од наших претходних чланака, показали смо вам како да нарежете покретач у АТмега328П помоћу Ардуина. То можете проверити ако вас занима тема. Враћајући се на нашу тему, сврхе осталих битова у великом бајту су прилично јасне, бит ЕЕСАВЕ је да сачува ЕЕПРОМ меморију док се изводи циклус брисања чипа. ВДТОН бит треба да омогући или онемогући Ватцхдог Тимер.
Тајмер за надзор је посебан тајмер у АТмега328П ИЦ који има свој засебан сат и ради независно. Ако је тајмер чувара омогућен, потребно је да га очистите са одређеним временом, у супротном, тајмер чувара ће ресетовати микроконтролер. Ово је корисна функција која долази у склопу многих микроконтролера ако процесор заглави; чувар ће га ресетовати како би спречио било какву штету на крајњој апликацији.
Бит ДВЕН је ту да омогући жицу за отклањање грешака; ово је припремни протокол који је интерно уграђен у њихов хардвер и који се користи за програмирање и отклањање грешака у процесорима. Ако је ова функција омогућена, можете да флеширате и отклоните грешке у процесору помоћу једне жице која је прикључена. Али да бисте га користили, биће вам потребан посебан хардвер који је у припреми за Атмел.
Преостала два бита су они битови које требате избегавати уколико тачно не знате шта радите. То су РСТДИСБЛ бит-7 и СПИЕН бит-5. РСТДИСБЛ (Ектернал Ресет Дисабле - онемогућено спољно ресетовање) онемогућава спољни пин за ресетовање хардвера, а СПИЕН бит се користи за онемогућавање интерфејса за програмирање СПИ. Ако онемогућите било који од ова два бита, ваш АВР може у потпуности бити опечен; тако да је остављање њих самих добра идеја.
Бајтови са малим осигурачем:
Као што можете видети на доњој слици, табела 27-7: листа са подацима приказује доње осигураче битова АТмега328П ИЦ.
Овај бајт осигурача одговоран је за подешавање извора такта и неких других параметара сата унутар АВР-а. У овом одељку ћемо научити о свему томе.
Седми бит или застава ЦКДИВ8 могу се поделити тако да извор сата поделе са 8, ово је врло корисно, што бисте можда већ знали ако сте и сами покушали програмирати АВР. Следећи бит је бит ЦКОУТ и то је шести бит у бајту са малим осигурачем. Програмирањем би се излазио интерни тактни сигнал на ПОРТБ0 микроконтролера.
Битови-5 и бит-4 СУТ1 и СУТ0 контролишу време покретања микроконтролера. Ово спречава било какве акције покретања које се могу или не морају догодити пре него што напон напајања достигне прихватљиви најнижи ниво прага напона. И последња четири ЦКСЕЛ0 - 4 бита се користе за одабир извора сата микроконтролера. Табела приказана у наставку даје вам боље разумевање ова четири бита која су одговорна за подешавање извора такта. Ову табелу можете пронаћи у одељку Извор сата у техничком листу.
Пре него што наставимо даље, још једна ствар коју бих требало да прођем је табела за кашњење покретања осцилатора. Одлагањем покретања, мислимо на битове 4 и 5 доњег бајта осигурача. Кашњења треба подесити у зависности од услова у којима ће коло радити и типа осцилатора који користите. Подразумеване вредности су постављене на полако растућу снагу са 6 циклуса такта када се врши секвенца укључивања или искључивања. Даље, следи ново кашњење од 14 циклуса са 65 Мс кашњења након покретања.
Фуј! То је било пуно информација за сварити. Али пре него што наставимо даље, завршимо овај одељак брзом белешком.
Белешка:
Ако сте пажљиво погледали листу са подацима, сигурно сте приметили, програмирање бита осигурача значи да га поставите на ниско, тј. 0 (нула), што је супротно ономе што ми обично радимо да би порт био висок или низак. То морате имати на уму док конфигуришете осигураче.
Битови осигурача у Ардуину
Много смо говорили о осигурачима у горњем одељку, али у овом одељку, хајде да разговарамо о томе како их конфигурисати и како их записати у микроконтролер. За то ће нам бити потребан алат под називом Аврдуде. То је алат који се може користити за читање, писање и модификовање меморије у АВР микроконтролерима. Ради са СПИ и има дугачку листу подршке за различите типове програмера. алат можете преузети са доње везе. Такође, користићемо и наш омиљени микроконтролер Ардуино.
- Преузмите Аврдуде верзија 6.3 Виндовс-минг32
Сада, када имате Аврдуде, морате то да извучете и отворите командни прозор у тој фасцикли. Такође, ако планирате да га користите касније, можете да додате путању до фасцикле у одељак променљиве окружења Виндовс-а. Али ставићу га на радну површину и тамо отворим командни прозор. Када то урадимо, повезаћемо УСБасп програмер са нашим рачунаром и постарићемо се да имамо одговарајући управљачки програм за наш УСБасп програмер. Једном када то учинимо, спремни смо за почетак и прво ћемо прочитати подразумевану вредност осигурача. Да бисте то урадили, потребно је да покренете следећу команду.
аврдуде.еке -ц усбасп -п м328п -У лфусе: р: лов_фусе_вал.ткт: х -У хфусе: р: хигх_фусе_вал.ткт: х -У ефусе: р: ект_фусе_вал.ткт: х
Ако је све у реду, ова наредба ће прочитати бајтове осигурача и ставити их у три одвојене текстуалне датотеке. Слика испод ће вам дати бољу идеју о процесу.
Као што видите, Аврдуде је прочитао битове осигурача на Ардуино нано-у и сачувао их у три одвојене текстуалне датотеке. Сада смо их отворили и добили три вредности; за ЕФУСЕ: 0кФД, за ХФУСЕ: 0КСДА, за ЛФУСЕ: 0кФФ. Ово је била подразумевана вредност осигурача коју смо добили за Ардуино нано. Сада, претворимо ове битове у бинарне и упоредимо их са њиховом подразумеваном вредношћу из листа са подацима. Табела у наставку показује управо то.
Ради погодности, битови осигурача записани су у хексадецималним вредностима, али ако их претворимо у бинарне вредности и упоредимо са подацима, знаћемо шта се догађа. Почнимо са бајтом доњег осигурача. Као што видите из горњег низа, постављено је на 0КСФФ, а бинарна вредност би била 0Б11111111.
Поређење бајтова доњег осигурача са Ардуином:
Бајт са малим осигурачем |
Бит Но. |
Подразумевана вредност у АВР-у |
Подразумевана вредност Ардуина |
ЦКДИВ8 |
7 |
0 (програмирано) |
1 (непрограмирано) |
ЦКОУТ |
6 |
1 (непрограмирано) |
1 (непрограмирано) |
СУТ1 |
5 |
1 (непрограмирано) |
1 (непрограмирано) |
СУТ0 |
4 |
0 (програмирано) |
1 (непрограмирано) |
ЦКСЕЛ3 |
3 |
0 (програмирано) |
1 (непрограмирано) |
ЦКСЕЛ2 |
2 |
0 (програмирано) |
1 (непрограмирано) |
ЦКСЕЛ1 |
1 |
1 (непрограмирано) |
1 (непрограмирано) |
ЦКСЕЛ0 |
0 |
0 (програмирано) |
1 (непрограмирано) |
Бајт вишег осигурача постављен је на 0КСДА у бинарном облику који је 0Б11011010.
Виши бајт осигурача у бинарном систему:
Бајт високог осигурача |
Бит Но. |
Подразумевана вредност у АВР-у |
Подразумевана вредност Ардуина |
РСТДИСБЛ |
7 |
1 (непрограмирано) |
1 (непрограмирано) |
ДВЕН |
6 |
1 (непрограмирано) |
1 (непрограмирано) |
СПИЕН |
5 |
0 (програмирано) |
0 (програмирано) |
ВДТОН |
4 |
1 (непрограмирано) |
1 (непрограмирано) |
ЕЕСАВЕ |
3 |
1 (непрограмирано) |
1 (непрограмирано) |
БООТСЗ1 |
2 |
0 (програмирано) |
0 (програмирано) |
БООТСЗ0 |
1 |
0 (програмирано) |
1 (непрограмирано) |
БООТРСТ |
0 |
1 (непрограмирано) |
0 (програмирано)) |
Поставка за проширени бајт осигурача постављена је на 0КСФД, у бинарном облику је 0Б11111101.
Проширени бајт осигурача у бинарном систему:
Проширени бајт осигурача |
Бит Но. |
Подразумевана вредност у АВР-у |
Подразумевана вредност Ардуина |
- |
7 |
1 |
1 |
- |
6 |
1 |
1 |
- |
5 |
1 |
1 |
- |
4 |
1 |
1 |
- |
3 |
1 |
1 |
БОДЛЕВЕЛ2 |
2 |
1 (непрограмирано) |
1 (непрограмирано) |
БОДЛЕВЕЛ1 |
1 |
1 (непрограмирано) |
0 (програмирано) |
БОДЛЕВЕЛ0 |
0 |
1 (непрограмирано) |
1 (непрограмирано) |
Ово је крај овог одељка. Од сада смо научили много о АВР микроконтролеру и његовим битовима осигурача. Дакле, хајде да завршимо овај чланак стављајући нашу теорију на тест мењањем и експериментисањем са неким битовима осигурача у Ардуино Нано-у.
Компоненте потребне за испитивање осигурача у АВР-у
Много смо разговарали о осигурачима у горњем делу. Али да бисмо наставили даље у чланку, требају нам неке хардверске компоненте и неки софтверски алати. У овом одељку ћемо говорити о њима. Списак потребних компоненти са сликама приказан је испод.
- Табла - 1
- Ардуино Нано - 1
- УСБасп АВР програмер - 1
- УСБ кабл - 1
- АВР 10-пински у 6- пински претварач - 1
- Аврдуде (софтверски алат за програмирање АВР-а)
- ЛЕД - 1
- 330Р отпорник - 1
- Помоћни каблови
Шема за испитивање битова осигурача у АВР-у
Постављање хардверског тестирања приказано је доле у овом подешавању. Повезали смо Ардуино Нано са рачунаром помоћу УСБ кабла, а на рачунар смо повезали и УСБасп програмер. Циљ овог чланка је програмирање битова осигурача у АВР-у. Из тог разлога смо повезали УСБасп програмер са Ардуином. Слика испод ће вам дати бољу идеју о подешавању.
Тестирање осигурача у АВР-у
Поставке тестирања приказане су у наставку. Као што видите, повезали смо Ардуино и УСБасп програмер на УСБ мог лаптопа.
Сада отворимо Ардуино ИДЕ и отпремимо основну скицу трептаја. Садржај основне скице трептања сам по себи је објашњен, па нисам изнео детаље о њој.
На видео снимку ћете видети да лед на пин број 13 трепће како треба. Сада подесимо поставке осигурача и подесимо га на подразумеване вредности. И као што смо раније видели у техничком листу; ЕФусе је 0кФФ; ХФУСЕ је Д9; ЛФУСЕ је: 62. Хајде сада да га конфигуришемо са Аврдуде, флешујемо и видимо шта ће се догодити. Код који ћемо користити је-
аврдуде -ц усбасп -п м328П -У лфусе: в: 0к62: м -У хфусе: в: 0кд9: м -У ефусе: в: 0кфф: м
Једном када ово урадим, видећете да ће ЛЕД трептати изузетно споро, јер смо израчунали и програмирали вредност за такт од 16 МХз, а сада је након сагоревања осигурача то само интерни РЦ осцилатор од 1 МХз. Због тога ЛЕД трепће тако споро. Покушајмо сада још једном да поставимо скицу. Видећемо да Ардуино издаје грешку и да код није отпремљен. Зато што смо променом осигурача побркали и подешавања покретачког програма. То можете видети на доњој слици.
Да бисмо то поправили и вратили Ардуино као што је био раније, потребно је само да поново нарежемо покретачки програм за Ардуино. Да бисте то урадили, идите на Алати -> Програмер - УСБасп , а након што то учинимо, можемо поново да пређемо на алате и можемо да кликнемо на опцију нарезивања покретачког програма. Ово ће поново спалити основни покретачки програм на вашем Ардуину и све ће се вратити као што је било раније.
Након што је боотлоадер враћен у Ардуино, вратио се у првобитно стање и последња слика приказује трепћућу ЛЕД диоду након што је боотлоадер поново спаљен.
И ово означава крај овог чланка. Надам се да сте уживали у чланку и научили нешто ново. Ако имате било каквих питања у вези са чланком, не устручавајте се да додате коментар испод.