- Постављање и захтеви хардвера
- Шема кола за ЛЕД повезивање са Нувотон Н76Е003
- Тајмери на Нувотон Н76Е003
- Регистри тајмера у Нувотону Н76Е003
- Типови времена у Нувотону Н76Е003
- Програмирање микроконтролера Нувотон Н76Е003 за тајмере
- Трептање кода и верификација излаза за функцију тајмера
У нашим претходним водичима за Нувотон микроконтролер користили смо основни ЛЕД програм за трептање као водич за почетак рада, а такође смо повезали ГПИО као улаз за повезивање тактилног прекидача. Помоћу овог водича потпуно смо свесни како да конфигуришемо пројекат Кеил и поставимо окружење за програмирање микроконтролера Н76Е003 Нувотон. Време је да употребите унутрашњу периферну јединицу микроконтролера и померите се мало даље помоћу уграђеног тајмера Н76Е003.
У нашем претходном упутству користили смо само софтверско кашњење да бисмо трепнули ЛЕД лампицом, па ћемо у овом упутству научити како да користимо функцију одложеног тајмера као и Тимер ИСР (Интеррупт Сервице Рутине) и трепћемо две појединачне ЛЕД. Такође можете погледати Водич за Ардуино тајмер и Водич за ПИЦ тајмер да бисте проверили како да користите тајмере са другим микроконтролерима. Не трошећи много времена, хајде да проценимо какву врсту хардверског подешавања требамо.
Постављање и захтеви хардвера
Како је захтев овог пројекта да научимо Тимер ИСР и функцију тајмера одлагања, користићемо две ЛЕД диоде, од којих ће једна трептати помоћу тајмера одлагања у вхиле петљи, а друга ће трептати унутар ИСР функције.
Будући да је ЛЕД доступан на развојној плочи Н76Е003, овај пројекат захтева једну додатну ЛЕД и отпорник за ограничавање струје да ограничи ЛЕД струју. Компоненте које су нам потребне -
- Било која боја ЛЕД диоде
- Отпорник 100Р
Да не спомињем, осим горе наведених компоненти, потребан нам је развојни одбор заснован на микроконтролеру Н76Е003, као и Ну-Линк програмер. Поред тога, за повезивање свих компоненти потребне су и жице за спајање и спојне жице.
Шема кола за ЛЕД повезивање са Нувотон Н76Е003
Као што видимо на доњој шеми, тест ЛЕД је доступан унутар развојне плоче и повезан је на порт 1.4. Додатни ЛЕД је повезан на порт 1.5. Отпорник Р3 служи за ограничавање ЛЕД струје. Крајње лево приказана је веза са програмским интерфејсом.
Тајмери на Нувотон Н76Е003
Пин дијаграм Н76Е003 се може видети у ниже имаге-
Као што видимо, сваки пин има различите спецификације и сваки пин се може користити у више сврха. Међутим, пин 1.5 који се користи као ЛЕД излазни пин, изгубиће ПВМ и друге функције. Али, то није проблем јер за овај пројекат није потребна друга функционалност.
Разлог изабирања пина 1.5 као излаза и пина 1.6 као улаза је најближа доступност ГНД и ВДД пинова за лако повезивање. Међутим, у овом микроконтролеру од 20 пинова, 18 пинова се може користити као ГПИО пин, а било који други ГПИО пинови могу се користити за излаз и сврхе уноса, осим пина 2.0 који се наменски користи за ресетовање улаза и не може се користити као оутпут. Сви ГПИО пинови могу се конфигурисати у доле описаном режиму.
Према табели података, ПкМ1.н и ПкМ2.н су два регистра која се користе за одређивање контролног рада И / О порта. Будући да користимо ЛЕД и потребан нам је пин као општи излазни пинови, зато ћемо користити квази-двосмерни режим за пинове.
Регистри тајмера у Нувотону Н76Е003
Тајмер је важна ствар за било коју јединицу микроконтролера. Микроконтролер се испоручује са уграђеном периферном јединицом тајмера. Нувотон Н76Е003 такође долази са 16-битном тајмер периферном опремом. Међутим, сваки тајмер се користи у различите сврхе, а пре употребе било ког интерфејса тајмера важно је знати о тајмеру.
Типови времена у Нувотону Н76Е003
Тајмер 0 и 1:
Ова два тајмера тимер0 и тајмер1 су идентична са 8051 тајмерима. Ова два тајмера могу се користити као општи тајмер или као бројачи. Ова два тајмера раде у четири начина. У режиму 0, ти тајмери ће радити у 13-битном режиму тајмера / бројача. У режиму 1 бит разлучивости та два тајмера биће 16-битни. У режиму 2, тајмери су конфигурисани као режим аутоматског поновног учитавања са 8-битном резолуцијом. У режиму 3, тајмер 1 се зауставља и тајмер 0 се може истовремено користити као бројач и тајмер.
Од ова четири режима, режим 1 се користи у већини случајева. Ова два тајмера могу користити Фсис (системску фреквенцију) у фиксном или унапред подешеном режиму (Фис / 12). Може се тактирати и са спољног извора сата.
Тајмер 2:
Тајмер 2 је такође 16-битни тајмер који се углавном користи за хватање таласног облика. Такође користи системски сат и може се користити у различитим апликацијама поделом фреквенције такта помоћу 8 различитих скала. Такође се може користити у режиму упоређивања или за генерисање ПВМ-а.
Као и тајмер 0 и тајмер 1, тајмер 2 се може користити у режиму аутоматског поновног учитавања.
Тајмер 3:
Тајмер 3 се такође користи као 16-битни тајмер и користи се за извор такта брзине преноса за УАРТ. Такође има функцију аутоматског поновног учитавања. Важно је користити овај тајмер само за серијску комуникацију (УАРТ) ако апликација захтева УАРТ комуникацију. У том случају је пожељно не користити овај тајмер због неусаглашеног поступка постављања тајмера.
Ватцхдог Тимер:
Ватцхдог Тимер се може користити као стандардни 6-битни тајмер, али се не користи у ту сврху. Употреба Ватцхдог тајмера као тајмера опште намене применљива је за апликације са малом потрошњом енергије где микроконтролер углавном остаје у режиму мировања.
Ватцхдог Тимер, као што му само име говори, увек проверава да ли микроконтролер ради исправно или не. У случају обешеног или заустављеног микроконтролера, ВДТ (Ватцхдог Тимер) аутоматски ресетује микроконтролер што осигурава да микроконтролер ради у континуираном протоку кода без заглављивања, вешања или заустављања.
Тајмер за аутоматско буђење:
Ово је још једна периферна опрема тајмера која опслужује наменски тајминг поступак исти као тајмер чувара. Овај тајмер периодично буди систем када микроконтролер ради у режиму мале снаге.
Овај периферни уређај тајмера може се користити интерно или помоћу спољних периферних уређаја за буђење микроконтролера из режима спавања. За овај пројекат користићемо Тајмер 1 и Тајмер 2.
Програмирање микроконтролера Нувотон Н76Е003 за тајмере
Постављање пинова као излаза:
Почнимо прво са излазним одељком. Користимо две ЛЕД диоде, једна је уграђена ЛЕД, названа Тест, и повезана је са портом П1.4 и спољном ЛЕД лампом повезаном са пином П1.5.
Због тога су ова два пина конфигурисана као излазни пин за повезивање те две ЛЕД диоде помоћу доњих исечака кода.
#дефине Тест_ЛЕД П14 #дефине ЛЕД1 П15
Ова два пина су постављена као квази-двосмерни пин у функцији подешавања.
воид сетуп (воид) {П14_Куаси_Моде; П15_Куаси_Моде; }
Подешавање функције тајмера:
У функцији подешавања, тајмер 2 је потребан да би се конфигурисао да добије жељени излаз. За ово ћемо подесити Т2МОД регистар са фактором дељења 1/128 сата и користити га у режиму одлагања са аутоматским поновним учитавањем. Ево прегледа регистра Т2МОД-
4,5 и 6-битни регистар Т2МОД подешавају делилац сата тајмера 2, а 7-битни режим аутоматског поновног учитавања. То се ради помоћу доњег реда -
ТИМЕР2_ДИВ_128; ТИМЕР2_Ауто_Релоад_Делаи_Моде;
Ове две линије су дефинисане у датотеци Фунцтион_дефине.х као
#дефине ТИМЕР2_ДИВ_128 Т2МОД- = 0к50; Т2МОД & = 0кДФ #дефине ТИМЕР2_Ауто_Релоад_Делаи_Моде Т2ЦОН & = ~ СЕТ_БИТ0; Т2МОД- = СЕТ_БИТ7; Т2МОД- = СЕТ_БИТ3
Сада ови редови постављају временску вредност потребну за Тимер 2 ИСР.
РЦМП2Л = ТИМЕР_ДИВ128_ВАЛУЕ_100мс; РЦМП2Х = ТИМЕР_ДИВ128_ВАЛУЕ_100мс >> 8;
Што је даље дефинисано у датотеци Фунцтион_дефине.х као-
ТИМЕР_ДИВ128_ВАЛУЕ_100мс 65536-12500 // 12500 * 128/16000000 = 100 мс
Дакле, 16000000 је кристална фреквенција од 16 МХз која поставља временско кашњење од 100 мс.
Испод два реда испразниће се бајтови Тајмер 2 Лов и Хигх.
ТЛ2 = 0; ТХ2 = 0;
Коначно, доњи код ће омогућити прекид тајмера 2 и покренути тајмер 2.
сет_ЕТ2; // Омогућавање прекида Тимер2 сет_ЕА; сет_ТР2; // Тимер2 покренут
Комплетна функција подешавања може се видети у доњим кодовима-
воид сетуп (воид) { П14_Куаси_Моде; П15_Куаси_Моде; ТИМЕР2_ДИВ_128; ТИМЕР2_Ауто_Релоад_Делаи_Моде; РЦМП2Л = ТИМЕР_ДИВ128_ВАЛУЕ_100мс; РЦМП2Х = ТИМЕР_ДИВ128_ВАЛУЕ_100мс >> 8; ТЛ2 = 0; ТХ2 = 0; сет_ЕТ2; // Омогућавање прекида Тимер2 сет_ЕА; сет_ТР2; // покретање тајмера2 }
Функција ИСР тајмера 2:
Функција Тимер 2 ИСР се може видети у доњем коду.
воид Тимер2_ИСР (воид) прекид 5 { цлр_ТФ2; // Обриши заставицу прекида Тимер2 ЛЕД1 = ~ ЛЕД1; // ЛЕД1 прекидач, повезан у П1.5; }
Трептање кода и верификација излаза за функцију тајмера
Код (дат у наставку) када је компајлиран вратио је 0 упозорења и 0 грешака, а ја сам га трептао користећи подразумевани начин трептања у Кеилу. Након трептања ЛЕД-диоде су трептале у дефинисаном кашњењу тајмера како је програмирано.
Погледајте доњи видео снимак за потпуну демонстрацију рада плоче за овај код. Надам се да сте уживали у водичу и научили нешто корисно ако имате питања, оставите их у одељку за коментаре испод. Наше форуме такође можете користити за постављање других техничких питања.