Мазмұны:

AVR микроконтроллерінің сақтандырғыш биттерінің конфигурациясы. Жарық диодты жыпылықтайтын микроконтроллердің флэш -жадына құру және жүктеу: 5 қадам
AVR микроконтроллерінің сақтандырғыш биттерінің конфигурациясы. Жарық диодты жыпылықтайтын микроконтроллердің флэш -жадына құру және жүктеу: 5 қадам

Бейне: AVR микроконтроллерінің сақтандырғыш биттерінің конфигурациясы. Жарық диодты жыпылықтайтын микроконтроллердің флэш -жадына құру және жүктеу: 5 қадам

Бейне: AVR микроконтроллерінің сақтандырғыш биттерінің конфигурациясы. Жарық диодты жыпылықтайтын микроконтроллердің флэш -жадына құру және жүктеу: 5 қадам
Бейне: АВТОМАТИЧЕСКИЙ ВВОД РЕЗЕРВА - Как собрать схему АВР? Как работает схема АВР? Для чего нужно АВР? 2024, Маусым
Anonim
Image
Image

Бұл жағдайда біз C кодында қарапайым бағдарлама құрамыз және оны микроконтроллердің жадына жазамыз. Біз Atmel студиясын интеграцияланған даму платформасы ретінде пайдалана отырып, өз бағдарламамызды жазамыз және он алтылық файлды құрастырамыз. Біз AVRDUDE бағдарламашысы мен бағдарламалық жасақтамасын пайдалана отырып, сақтандырғыш биттерді конфигурациялаймыз және он алтылық файлды AVR ATMega328P микроконтроллерінің жадына жүктейміз.

AVRDUDE - бұл Atmel AVR микроконтроллерлерінің чиптік жадын жүктеуге және жүктеуге арналған бағдарлама. Ол Flash және EEPROM бағдарламалай алады, ал сериялық программалау протоколы қолдау көрсететін жерлерде сақтандырғыш пен құлыптау биттерін бағдарламалай алады.

1 -қадам: Atmel студиясын пайдаланып бағдарлама жазу және он алтылық файлды құрастыру

Atmel студиясын қолдана отырып, Hex файлын құру және жазу бағдарламасы
Atmel студиясын қолдана отырып, Hex файлын құру және жазу бағдарламасы
Atmel студиясын қолдана отырып, Hex файлын құрастыру және жазу бағдарламасы
Atmel студиясын қолдана отырып, Hex файлын құрастыру және жазу бағдарламасы

Егер сізде Atmel Studio болмаса, оны жүктеп, орнату керек:

Бұл жоба C қолданады, сондықтан орындалатын жобаны құру үшін шаблондар тізімінен GCC C Executable Project опциясын таңдаңыз.

Әрі қарай, жобаның қай құрылғы үшін жасалатынын көрсету қажет. Бұл жоба AVR ATMega328P микроконтроллері үшін әзірленетін болады.

Бағдарлама кодын Atmel Studio бағдарламасының Негізгі редактор аймағына енгізіңіз. Негізгі редактор - бұл терезе ағымдағы жобадағы бастапқы файлдардың негізгі редакторы болып табылады. Редакторда емлені тексеру және автоматты түрде аяқтау мүмкіндіктері бар.

1. Біз компиляторға біздің чиптің қандай жылдамдықпен жұмыс істейтінін айтуымыз керек, ол кідірістерді дұрыс есептей алады.

#ifndef F_CPU

#анықтау F_CPU 16000000UL // контроллердің кристалды жиілігін айту (16 МГц AVR ATMega328P) #endif

2. Біз ғаламдық айнымалылар мен функцияларды анықтайтын басқа файлдардан ақпаратты енгізетін преамбуланы қосамыз.

түйіндер бойынша деректер ағынын басқаруды қосу үшін #include // header. Ілгектерді, порттарды және т.б.

Бағдарламада кідіріс функциясын қосу үшін #include // header

3. Преамбуладан кейін main () функциясы келеді.

int main (жарамсыз) {

Main () функциясы бірегей және басқа функциялардан ерекшеленеді. Әрбір C бағдарламасында бір main () функциясы болуы керек. Main () - бұл AVR коды бірінші рет қосылған кезде орындала бастайды, сондықтан бұл бағдарламаның кіру нүктесі.

4. PORTB 0 түйреуішін шығыс ретінде орнатыңыз.

DDRB = 0b00000001; // PORTB1 шығыс ретінде орнатыңыз

Біз мұны екілік санды Data Data Register регистріне жазу арқылы жасаймыз. Data B регистрі В регистрінің биттерін енгізу немесе шығаруға мүмкіндік береді. 1 жазу оларды шығаруға мүмкіндік береді, ал 0 оларды енгізуге мәжбүр етеді. Біз жарықдиодты шығыс ретінде қосатындықтан, екілік санды жазамыз, ПОРТ В 0 штырын шығыс етіп шығарамыз.

5. Цикл.

уақыт (1) {

Бұл мәлімдеме цикл болып табылады, оны көбінесе негізгі цикл немесе оқиға циклы деп атайды. Бұл код әрқашан дұрыс; сондықтан ол шексіз циклде қайта -қайта орындалады. Ол ешқашан тоқтамайды. Сондықтан, егер микроконтроллерден қуат өшірілмесе немесе бағдарлама жадынан код өшірілмесе, жарық диоды шексіз жыпылықтайды.

6. PB0 портына бекітілген жарықдиодты қосыңыз

PORTB = 0b00000001; // PB0 портына бекітілген жарықдиодты қосады

Бұл жол PortB PB0 -ге 1 береді. PORTB-сол жақтан оңға қарай жүретін PB7-PB0 8 түйреуіштен тұратын AVR чипіндегі аппараттық регистр. Соңына 1 қою PB0 -ге 1 береді; бұл PB0 жоғары орнатады, ол оны қосады. Сондықтан PB0 түйреуішіне бекітілген жарық диоды қосылады және жанады.

7. Кешігу

_кешіктіру (1000); // 1 секундтық кідіріс жасайды

Бұл мәлімдеме 1 секундтық кідірісті тудырады, осылайша жарық диоды 1 секундқа қосылады.

8. Барлық В штырларын өшіріңіз, соның ішінде PB0

PORTB = 0b00000000; // Барлық B түйреуіштерін өшіреді, соның ішінде PB0

Бұл желі В портының барлық 8 түйреуішін өшіреді, сондықтан тіпті PB0 сөнеді, сондықтан жарық диоды өшеді.

9. Тағы бір кідіріс

_кешіктіру (1000); // тағы 1 секундтық кідіріс жасайды

Ол дәл 1 секундқа өшеді, циклды қайтадан бастар алдында және қайтадан қосылатын сызықты кездестіре отырып, процесті қайталайды. Бұл шексіз болады, сондықтан жарық диоды үнемі жыпылықтайды және өшеді.

10. Қайтару туралы мәлімдеме

}

қайтару (0); // бұл жолға ешқашан жетуге болмайды}

Біздің кодтың соңғы жолы - return (0) операторы. Бұл код ешқашан орындалмаса да, ешқашан бітпейтін шексіз цикл болғандықтан, біздің компьютерлерде жұмыс істейтін бағдарламалар үшін операциялық жүйенің олардың дұрыс жұмыс істегенін білуі маңызды. Осы себепті GCC, біздің компилятор, әрбір main () қайтару кодымен аяқталғанын қалайды. Қайтару кодтары кез келген қолдайтын операциялық жүйеде тәуелсіз жұмыс істейтін AVR кодын қажет етпейді; дегенмен, егер сіз main (return) арқылы аяқтамасаңыз, компилятор ескерту береді.

Соңғы кезең - бұл жобаны құру. Бұл орындалатын файлды (.hex) жасау үшін барлық объектілік файлдарды құрастыруды және түпкілікті байланыстыруды білдіреді. Бұл он алтылық файл Project қалтасындағы Debug қалтасында жасалады. Бұл он алтылық файл микроконтроллер чипіне жүктеуге дайын.

2 -қадам: Микроконтроллер сақтандырғыштарының әдепкі конфигурациясын өзгерту

Микроконтроллер сақтандырғыштарының әдепкі конфигурациясын өзгерту
Микроконтроллер сақтандырғыштарының әдепкі конфигурациясын өзгерту
Микроконтроллер сақтандырғыштарының әдепкі конфигурациясын өзгерту
Микроконтроллер сақтандырғыштарының әдепкі конфигурациясын өзгерту
Микроконтроллер сақтандырғыштарының әдепкі конфигурациясын өзгерту
Микроконтроллер сақтандырғыштарының әдепкі конфигурациясын өзгерту

Кейбір сақтандырғыш биттерді чиптің кейбір аспектілерін құлыптау үшін қолдануға болатынын және оны кірпіштендіруі мүмкін екенін есте ұстаған жөн (оны жарамсыз етеді)

ATmega328P -де барлығы 19 сақтандырғыш биті бар және олар үш түрлі сақтандырғыш байтқа бөлінген. Сақтандырғыштардың үшеуі «Ұзартылған сақтандырғыш байтында», сегізі «Сақтандырғыштың жоғары байтында» және тағы сегізі «Сақтандырғыштың төмен байтында» сақталған. Құлыптау биттерін бағдарламалау үшін қолданылатын төртінші байт бар.

Әр байт - 8 бит және әр бит - бөлек параметр немесе жалауша. Біз орнату, орнату емес, бағдарламаланған, бағдарламаланбаған сақтандырғыштар туралы айтатын болсақ, біз шын мәнінде екілік файлды қолданамыз. 1 - орнатылмаған, бағдарламаланбаған және нөл - орнатылған, бағдарламаланған дегенді білдіреді. Сақтандырғыштарды бағдарламалау кезінде екілік немесе он алтылық белгілерді қолдануға болады.

ATmega 328P чиптерінде жиілігі 8 МГц жиіліктегі RC осцилляторы бар. Жаңа чиптер осы жиынтықпен сағат көзі ретінде және CKDIV8 сақтандырғышы белсенді түрде жеткізіледі, нәтижесінде 1 МГц жүйелік сағат пайда болады. Іске қосу уақыты максимумға орнатылады және күту уақыты қосылады.

Жаңа ATMega 328P чиптерінде келесі сақтандырғыш параметрлері бар:

Төмен сақтандырғыш = 0x62 (0b01100010)

Жоғары сақтандырғыш = 0xD9 (0b11011001)

Ұзартылған сақтандырғыш = 0xFF (0b11111111)

Біз 16 МГц сыртқы кристалды ATmega 328 чипін қолданатын боламыз. Сондықтан бізге сәйкесінше «Fuse Low Byte» биттерін бағдарламалау қажет.

1. 3-0 биттері осциллятордың таңдауын бақылайды, ал әдепкі 0010 параметрі-біз қаламаған калибрленген ішкі RC осцилляторын қолдану. Біз аз қуатты кристалды осциллятордың 8,0-ден 16,0 МГц-ге дейін жұмыс істеуін қалаймыз, сондықтан 3-1 биттері (CKSEL [3: 1]) 111-ге орнатылуы керек.

2. 5-ші және 4-ші биттер іске қосу уақытын басқарады, ал 10-дың әдепкі параметрі-сөндіру мен қуатты үнемдеудің алты сағаттық циклінің іске қосылуының кешігуіне, сонымен қатар 14 сағаттық циклдің қосылуының қосымша кідірісіне және қалпына келтіруден 65 миллисекундқа арналған.

Төмен қуатты кристалды осциллятордың қауіпсіз жағында болу үшін біз қуатты өшіру мен қуатты үнемдеудің 16 000 сағаттық циклінің максималды кешігуін қалаймыз, сондықтан SUT [1] 1-ге орнатылуы керек, сонымен қатар қосымша іске қосу кідірісі 14 сағаттық цикл мен 65 миллисекунд қалпына келтірілген, сондықтан SUT [0] мәнін 1 -ге қою керек. Сонымен қатар, CKSEL [0] мәнін 1 -ге қою керек.

3. 6 -разряд бізге мән бермейтін PORTB0 сағаттық шығысын басқарады. Сонымен, 6 -битті 1 -ге қоюға болады.

4. 7-бит 8-ге бөлу жұмысын басқарады және 0-дің әдепкі параметрінде біз қосқысы келмейтін функция қосылған. Сонымен, 7 -битті 0 -ден 1 -ге өзгерту қажет.

Сондықтан жаңа сақтандырғыш төмен байт 11111111 болуы керек, ол он алтылық жүйеде 0xFF болады

«Сақтандырғыш байттың» биттерін бағдарламалау үшін біз өз бағдарламашымызды (https://www.instructables.com/id/ISP-Programmer-fo…) және AVRDUDE бағдарламалық жасақтамасын қолдана аламыз. AVRDUDE-бұл Atmel микроконтроллерлерінен жүктеу және жүктеу үшін қолданылатын пәрмен жолы.

AVRDUDE жүктеп алыңыз:

Алдымен біз AVRDUDE конфигурация файлына бағдарламашымыздың сипаттамасын қосуымыз керек. Windows жүйесінде конфигурация файлы әдетте AVRDUDE орындалатын файлымен бір жерде болады.

Avrdude.conf конфигурация файлындағы мәтінді қойыңыз:

# ISPProgv1

бағдарламашы id = «ISPProgv1»; desc = «сериялық порттың жарылуы, ысыру = dtr sck = rts mosi = txd miso = cts»; түрі = «серб»; connection_type = сериялық; қалпына келтіру = 4; sck = 7; mosi = 3; miso = 8;;

AVRDUDE іске қоспас бұрын, схемаға сәйкес, микроконтроллерді бағдарламашыға қосуымыз керек

DOS шақыру терезесін ашыңыз.

1. avrdude қолдайтын бағдарламашы тізімін қарау үшін avrdude -c c пәрменін енгізіңіз. Егер бәрі жақсы болса, тізімде «ISPProgv1» бағдарламашы идентификаторы болуы керек

2. Avrdude қолдау көрсетілетін Atmel құрылғыларының тізімін қарау үшін avrdude -c ISPProgv1 пәрменін енгізіңіз. Тізімде Atmel ATMega 328P үшін m328p құрылғысы болуы керек.

Әрі қарай, avrdude -c ISPProgv1 –p m328p теріңіз, команда avrdude -ге қандай бағдарламашының қолданылатынын және Atmel микроконтроллерінің не қосылғанын айтады. Ол ATmega328P қолтаңбасын он алтылық жүйеде ұсынады: 0x1e950f. Ол қазіргі уақытта ATmega328P -те сақтандырғыш биттік бағдарламалауды он алтылық жүйеде ұсынады; бұл жағдайда сақтандырғыш байттары зауыттық әдепкі бойынша бағдарламаланған.

Әрі қарай, avrdude -c ISPProgv1 –p m328p –U lfuse: w: 0xFF: m деп теріңіз, бұл avrdude -ге қандай бағдарламашы қолданылып жатқанын және Atmel микроконтроллері не қосылғанын және сақтандырғыштың төмен байтын 0xFF -ге өзгерту туралы бұйрық.

Енді сағат сигналы төмен қуатты кристалды осциллятордан келуі керек.

3 -қадам: Бағдарламаны ATMega328P микроконтроллерінің жадына жазу

Бағдарламаны ATMega328P микроконтроллерінің жадына жазу
Бағдарламаны ATMega328P микроконтроллерінің жадына жазу
Бағдарламаны ATMega328P микроконтроллерінің жадына жазу
Бағдарламаны ATMega328P микроконтроллерінің жадына жазу

Алдымен, нұсқаулықтың басында жасаған бағдарламаның он алтылық файлын AVRDUDE каталогына көшіріңіз.

Содан кейін, DOS шақыру терезесінде avrdude –c ISPProgv1 –p m328p –u –U пәрменін теріңіз: w: [он алтылық файлыңыздың атауы]

Пәрмен он алтылық файлды микроконтроллердің жадына жазады. Енді микроконтроллер біздің бағдарламаның нұсқауларына сәйкес жұмыс істейді. Оны тексеріп көрейік!

4 -қадам: Микроконтроллердің жұмыс істеуін біздің бағдарламаның нұсқауларына сәйкес тексеріңіз

Біздің бағдарламаның нұсқауларына сәйкес микроконтроллердің жұмысын тексеріңіз
Біздің бағдарламаның нұсқауларына сәйкес микроконтроллердің жұмысын тексеріңіз
Біздің бағдарламаның нұсқауларына сәйкес микроконтроллердің жұмысын тексеріңіз
Біздің бағдарламаның нұсқауларына сәйкес микроконтроллердің жұмысын тексеріңіз
Біздің бағдарламаның нұсқауларына сәйкес микроконтроллердің жұмысын тексеріңіз
Біздің бағдарламаның нұсқауларына сәйкес микроконтроллердің жұмысын тексеріңіз

AVR жыпылықтайтын жарық диодты схемасының схемасына сәйкес компоненттерді қосыңыз

Біріншіден, бізге барлық AVR схемалары сияқты қуат қажет. AVR чипінің жұмыс істеуі үшін шамамен 5 вольт қуат жеткілікті. Мұны батареядан немесе тұрақты ток көзінен алуға болады. Біз 7 -істікке +5В қуатын қосамыз, ал 8 -түйреуішті тақтаға қосамыз. Екі түйреуіштің арасында біз AVR чипі тегіс электр желісін алу үшін қуат көзінің қуатын тегістеу үшін 0,1 мкФ керамикалық конденсаторды орналастырамыз.

10KΩ резисторы құрылғыны қуатты қосуды қалпына келтіруді (POR) қамтамасыз ету үшін қолданылады. Қуат қосулы кезде конденсатордағы кернеу нөлге тең болады, сондықтан құрылғы қалпына келтіріледі (бастапқы қалпына келтіру белсенді емес), содан кейін конденсатор ВКС зарядталады және қалпына келтіру өшіріледі.

Біз жарықдиодты анодты AVR PIN PB0 қосамыз. Бұл ATMega328P 14 -ші түйреуіш. Бұл светодиоды болғандықтан, біз светодиодқа түсетін токты шектегіміз келеді, сондықтан ол жанбайды. Сондықтан біз 330 Ом резисторды светодиодымен қатар орналастырамыз. Жарықдиодты катод жерге қосылады.

16 МГц кристалы Atmega328 микроконтроллерінің сағатын қамтамасыз ету үшін қолданылады, ал кристаллдың жұмысын тұрақтандыру үшін 22pF конденсаторлары қолданылады.

Бұл светодиодты жарықтандыру үшін қажет барлық қосылымдар. Нәр беруші.

Жарайды ма. Жарық диоды бір секундтық кідіріспен жыпылықтайды. Микроконтроллердің жұмысы біздің міндеттерге сәйкес келеді

5 -қадам: Қорытынды

Рас, бұл жарық диодты жыпылықтау үшін ұзақ процесс болды, бірақ шындық мынада: сіз үлкен кедергілерді сәтті жойдыңыз: AVR микроконтроллерін бағдарламалау үшін аппараттық платформа құру, Atmel Studio -ны интеграцияланған даму платформасы ретінде пайдалану, AVRDUDE бағдарламалық қамтамасыз ету ретінде AVR микроконтроллерін конфигурациялау және бағдарламалау

Егер сіз менің микроконтроллердің негізгі жобаларынан хабардар болғыңыз келсе, менің YouTube -ке жазылыңыз! Бейнелерімді көру мен бөлісу - бұл менің жасаған ісімді қолдау

YouTube FOG каналына жазылыңыз

Ұсынылған: