Mundarija:

AVR mikrokontroller sug'urta bitlarini sozlash. LEDni miltillash dasturini mikrokontrollerning flesh xotirasida yaratish va yuklash: 5 qadam
AVR mikrokontroller sug'urta bitlarini sozlash. LEDni miltillash dasturini mikrokontrollerning flesh xotirasida yaratish va yuklash: 5 qadam

Video: AVR mikrokontroller sug'urta bitlarini sozlash. LEDni miltillash dasturini mikrokontrollerning flesh xotirasida yaratish va yuklash: 5 qadam

Video: AVR mikrokontroller sug'urta bitlarini sozlash. LEDni miltillash dasturini mikrokontrollerning flesh xotirasida yaratish va yuklash: 5 qadam
Video: Введение в AVR микроконтроллеры 2024, Iyun
Anonim
Image
Image

Bunday holda biz C kodida oddiy dastur tuzamiz va uni mikrokontroller xotirasiga yozamiz. Biz o'z dasturimizni yozamiz va Hex faylini kompilyatsiya qilamiz, bunda Atmel Studio integratsiyalashgan rivojlanish platformasi sifatida ishlatiladi. Biz AVRDUDE dasturchisi va dasturiy ta'minotidan foydalanib, sug'urta bitlarini sozlaymiz va olti burchakli faylni AVR ATMega328P mikrokontroller xotirasiga yuklaymiz.

AVRDUDE - bu Atmel AVR mikrokontrolderlarining chip xotiralarini yuklash va yuklash dasturi. U Flash va EEPROM -ni dasturlashi mumkin, va ketma -ket dasturlash protokoli tomonidan qo'llab -quvvatlanadigan bo'lsa, u sug'urta va qulf bitlarini dasturlashi mumkin.

1 -qadam: Atmel studiyasidan foydalanib dastur yozing va Hex faylini tuzing

Atmel studiyasidan foydalanib dastur yozing va Hex faylini tuzing
Atmel studiyasidan foydalanib dastur yozing va Hex faylini tuzing
Atmel studiyasidan foydalanib dastur yozing va Hex faylini tuzing
Atmel studiyasidan foydalanib dastur yozing va Hex faylini tuzing

Agar sizda Atmel Studio bo'lmasa, uni yuklab olishingiz va o'rnatishingiz kerak:

Ushbu loyihada C ishlatiladi, shuning uchun yalang'och holda bajariladigan loyihani yaratish uchun andozalar ro'yxatidan GCC C Executable Project variantini tanlang.

Keyinchalik, loyiha qaysi qurilma uchun ishlab chiqilishini ko'rsatish kerak. Ushbu loyiha AVR ATMega328P mikrokontroller uchun ishlab chiqiladi.

Atmel Studio dasturining asosiy manba muharriri maydoniga dastur kodini kiriting. Asosiy manba muharriri - bu oyna joriy loyihadagi manba fayllarining asosiy muharriri. Tahrirlovchining imlo tekshiruvi va avtomatik to'ldirish xususiyatlari mavjud.

1. Biz kompilyatorga aytishimiz kerakki, bizning chipimiz qanday tezlikda ishlaydi va u kechikishlarni to'g'ri hisoblay oladi.

#ifndef F_CPU

#define F_CPU 16000000UL // nazorat qiluvchi kristal chastotasini aytib berish (16 MGts AVR ATMega328P) #endif

2. Biz global o'zgaruvchilar va funktsiyalarni belgilaydigan boshqa fayllardan ma'lumotlarni kiritadigan kirish so'zini kiritamiz.

#include // sarlavhasi pinlar ustidan ma'lumotlar oqimini boshqarishni yoqish uchun. Pim, port va boshqalarni belgilaydi.

#include // header dasturda kechiktirish funksiyasini yoqish uchun

3. Kirish so'zidan so'ng main () funktsiyasi keladi.

int main (void) {

Main () funktsiyasi noyob va boshqa funktsiyalardan ajralib turadi. Har bir C dasturida aynan bitta main () funktsiyasi bo'lishi kerak. Main () - AVR sizning kodingiz birinchi marta ishga tushganda boshlanadi, shuning uchun bu dasturning kirish nuqtasi.

4. PORTB ning 0 -pinini chiqish sifatida o'rnating.

DDRB = 0b00000001; // PORTB1 -ni chiqish sifatida o'rnating

Biz buni Ma'lumotlar Yo'naltiruvchi B registriga ikkilik raqamni yozish orqali bajaramiz. Ma'lumotlarni yo'naltirish registri B bizga B registrining bitlarini kiritish yoki chiqarish imkonini beradi. 1 yozish ularni chiqishga majbur qiladi, 0 esa ularni kiritishga majbur qiladi. Chiqish vazifasini bajaradigan LEDni ulaganimiz sababli, biz PORT B ning 0 -pinini chiqish qilib, ikkilik raqamni yozamiz.

5. Loop.

vaqt (1) {

Bu bayon pastadir, ko'pincha asosiy tsikl yoki hodisa tsikli deb ataladi. Bu kod har doim to'g'ri; shuning uchun u cheksiz pastadirda qayta -qayta bajaradi. Hech qachon to'xtamaydi. Shunday qilib, agar mikrokontrollerdan quvvat o'chmasa yoki dastur xotirasidan kod o'chirilmasa, LED cheksiz yonadi.

6. PB0 portiga ulangan LEDni yoqing

PORTB = 0b00000001; // PB0 portiga ulangan LEDni yoqadi

Bu chiziq, PortB ning PB0 ga 1 beradi. PORTB-AVR chipidagi apparat registri bo'lib, u 8 ta pinli, PB7-PB0, chapdan o'ngga o'tadi. Oxiriga 1 qo'yish PB0 ga 1 beradi; bu PB0 balandligini o'rnatadi va uni yoqadi. Shunday qilib, PB0 piniga ulangan LED yonadi va yonadi.

7. Kechiktirish

_delay_ms (1000); // 1 soniya kechikish hosil qiladi

Ushbu bayonot 1 soniya kechikishni keltirib chiqaradi, shunda LED aynan 1 soniya yonadi va yonadi.

8. Barcha B pinlarini, shu jumladan PB0 ni o'chiring

PORTB = 0b00000000; // Barcha B pinlarini o'chirib qo'yadi, shu jumladan PB0

Bu chiziq barcha 8 Port B pinlarini o'chiradi, shuning uchun hatto PB0 ham o'chadi, shuning uchun LED o'chadi.

9. Yana bir kechikish

_delay_ms (1000); // yana 1 soniya kechikish hosil qiladi

U aynan 1 soniya davomida o'chadi, pastadirni qaytadan boshlashdan oldin va uni qayta yoqadigan chiziq bilan to'qnash kelguncha, jarayonni qayta -qayta takrorlaydi. Bu cheksiz sodir bo'ladi, shuning uchun LED doimiy ravishda yonadi va o'chadi.

10. Qaytish bayonoti

}

qaytish (0); // bu chiziqqa hech qachon etib bo'lmaydi}

Bizning kodimizning oxirgi qatori return (0) ifodasidir. Garchi bu kod hech qachon bajarilmasa ham, chunki abadiy cheksiz tsikl bor, chunki ish stoli kompyuterlarida ishlaydigan dasturlarimiz uchun operatsion tizim ularning to'g'ri ishlaganini yoki yo'qligini bilishi muhim. Shu sababli, bizning kompilyatorimiz GCC har main () kodini qaytish kodi bilan tugashini xohlaydi. Qaytish kodlari har qanday qo'llab -quvvatlanadigan operatsion tizimda ishlaydigan AVR kodi uchun kerak emas; Shunga qaramay, agar siz main (return) bilan tugamasangiz, derleyici ogohlantirish beradi.

Yakuniy bosqich - bu loyihani qurish. Bu bajariladigan fayl (.hex) faylini yaratish uchun barcha ob'ekt fayllarini kompilyatsiya qilishni va nihoyat bog'lashni bildiradi. Bu o'n oltilik fayl Project papkasida joylashgan Debug papkasida hosil bo'ladi. Bu olti burchakli fayl mikrokontroller chipiga yuklashga tayyor.

2 -qadam: Mikro tekshirgich sug'urta bitlarining standart konfiguratsiyasini o'zgartirish

Mikrokontroller sug'urta bitlarining standart konfiguratsiyasini o'zgartirish
Mikrokontroller sug'urta bitlarining standart konfiguratsiyasini o'zgartirish
Mikrokontroller sug'urta bitlarining standart konfiguratsiyasini o'zgartirish
Mikrokontroller sug'urta bitlarining standart konfiguratsiyasini o'zgartirish
Mikrokontroller sug'urta bitlarining standart konfiguratsiyasini o'zgartirish
Mikrokontroller sug'urta bitlarining standart konfiguratsiyasini o'zgartirish

Shuni esda tutish kerakki, ba'zi sigortalar bitni chipning ba'zi tomonlarini qulflash uchun ishlatilishi mumkin va uni g'isht qilib qo'yishi mumkin (uni yaroqsiz holga keltiradi)

ATmega328P -da jami 19 ta sug'urta bitlari ishlatiladi va ular uch xil sug'urta baytiga bo'lingan. Sug'urta bitlarining uchtasi "Kengaytirilgan sug'urta baytida", sakkiztasi "Sug'urta yuqori baytida" va yana sakkiztasi "Sug'urta past baytida" joylashgan. Qulf bitlarini dasturlash uchun ishlatiladigan to'rtinchi bayt ham mavjud.

Har bir bayt 8 bit va har bir bit alohida parametr yoki bayroqdir. Biz sozlash, sozlash emas, dasturlashtirilgan, dasturlashtirilmagan sigortalar haqida gapirganda, biz aslida ikkilikdan foydalanamiz. 1 - o'rnatilmagan, dasturlanmagan va nol - o'rnatilgan, dasturlashtirilgan degan ma'noni anglatadi. Sigortalarni dasturlashda siz ikkilik belgidan yoki odatda o'n oltilik belgidan foydalanishingiz mumkin.

ATmega 328P chiplari 8 MGts chastotali o'rnatilgan RC osilatoriga ega. Yangi chiplar bu to'plam bilan soat manbai sifatida yuboriladi va CKDIV8 sug'urta faol, natijada 1 MGts tizimli soat paydo bo'ladi. Ishga tushirish vaqti maksimal darajaga o'rnatildi va tanaffus vaqti yoqildi.

Yangi ATMega 328P chiplari odatda quyidagi sug'urta sozlamalariga ega:

Kam sug'urta = 0x62 (0b01100010)

Yuqori sug'urta = 0xD9 (0b11011001)

Kengaytirilgan sug'urta = 0xFF (0b11111111)

Biz 16MGts tashqi kristalli ATmega 328 chipidan foydalanamiz. Shuning uchun biz mos ravishda "Fuse Low Bayte" bitlarini dasturlashimiz kerak.

1. 3-0 bitlar osilator tanlovini boshqaradi va 0010 ning standart sozlamalari-biz xohlamagan ichki kalibrlangan RC osilatoridan foydalanish. Biz kam quvvatli kristalli osilatorning 8,0 dan 16,0 MGts gacha ishlashini xohlaymiz, shuning uchun 3-1 bitlari (CKSEL [3: 1]) 111 ga o'rnatilishi kerak.

2. 5 va 4-bitlar ishga tushirish vaqtini boshqaradi va 10-ning standart sozlamalari ishga tushirish va quvvatni tejashdan olti soatlik tsiklni ishga tushirishni kechiktirishga, shuningdek, 14 soatlik tsiklning qo'shimcha ishga tushirish kechikishidan va 65 millisekundga qayta o'rnatishdan iborat.

Kam quvvatli kristalli osilator uchun xavfsiz tomonda bo'lish uchun biz maksimal 16000 soatlik tsiklni o'chirishni va quvvatni tejashni xohlaymiz, shuning uchun SUT [1] ni 1 ga qo'yish kerak, qo'shimcha ishga tushirish kechikishi. 14 soat tsikli va 65 millisekund qayta tiklanadi, shuning uchun SUT [0] 1 ga o'rnatilishi kerak. Bundan tashqari, CKSEL [0] 1 ga o'rnatilishi kerak.

3. Bit 6 bizni qiziqtirmaydigan PORTB0 ga soat chiqishini boshqaradi. Shunday qilib, 6 -bitni 1 -ga qo'yish mumkin.

4. 7-bit 8-ga bo'lish operatsiyasini boshqaradi va 0-ning standart sozlamalari biz yoqtirmagan xususiyat yoqilgan. Shunday qilib, 7 bitni 0 dan 1 ga o'zgartirish kerak.

Shuning uchun, yangi sug'urta past bayti 11111111 bo'lishi kerak, bu o'n oltilik belgilarda 0xFF

"Fuse Low Bayte" bitlarini dasturlash uchun biz dasturchimizdan (https://www.instructables.com/id/ISP-Programmer-fo…) va AVRDUDE dasturidan foydalanishimiz mumkin. AVRDUDE-bu Atmel mikrokontrollerlaridan yuklash va yuklash uchun ishlatiladigan buyruq qatorli yordamchi dastur.

AVRDUDE -ni yuklab oling:

Birinchidan, biz AVRDUDE konfiguratsiya fayliga dasturchimizni tavsifini qo'shishimiz kerak. Windows -da konfiguratsiya fayli odatda AVRDUDE bajariladigan fayli bilan bir joyda joylashgan.

Matnni avrdude.conf konfiguratsiya fayliga joylashtiring:

# ISPProgv1

dasturchi id = "ISPProgv1"; desc = "ketma -ket port portlashi, reset = dtr sck = rts mosi = txd miso = cts"; turi = "serb"; connection_type = ketma -ket; tiklash = 4; sck = 7; mosi = 3; miso = 8;;

AVRDUDE -ni ishga tushirishdan oldin biz sxemaga muvofiq mikrokontrollerni dasturchiga ulashimiz kerak

DOS buyruq oynasini oching.

1. Avrdude qo'llab -quvvatlanadigan dasturchi ro'yxatini ko'rish uchun avrdude -c c buyrug'ini kiriting. Agar hamma narsa yaxshi bo'lsa, ro'yxatda "ISPProgv1" dasturchi identifikatori bo'lishi kerak.

2. Avrdude qo'llab -quvvatlanadigan Atmel qurilmalari ro'yxatini ko'rish uchun avrdude -c ISPProgv1 buyrug'ini kiriting. Ro'yxatda Atmel ATMega 328P uchun m328p qurilmasi bo'lishi kerak.

Keyin, avrdude -c ISPProgv1 -p m328p buyrug'ini kiriting, buyruq qaysi dasturchi ishlatilayotgani va Atmel mikrokontrolyori biriktirilganligini bildiradi. U ATmega328P imzosini o'n oltilik belgilarda taqdim etadi: 0x1e950f. U hozirda ATmega328P -da o'n oltilik belgilarda sug'urta bitli dasturlashni taqdim etadi; bu holda, sug'urta baytlari zavod parametrlari bo'yicha dasturlashtirilgan.

Keyin, avrdude -c ISPProgv1 –p m328p –U lfuse: w: 0xFF: m yozing, bu qanday dasturchi ishlatilayotgani va Atmel mikrokontroli nimaga ulanganligi haqida avrdude xabar berish va Sigortaning past baytini 0xFF ga o'zgartirish.

Endi soat signali kam quvvatli kristalli osilatordan kelishi kerak.

3 -qadam: Dasturni ATMega328P mikrokontroller xotirasiga yoqish

Dasturni ATMega328P mikrokontroller xotirasiga yoqish
Dasturni ATMega328P mikrokontroller xotirasiga yoqish
Dasturni ATMega328P mikrokontroller xotirasiga yoqish
Dasturni ATMega328P mikrokontroller xotirasiga yoqish

Birinchidan, ko'rsatma boshida biz yaratgan dasturning o'n oltilik faylini AVRDUDE katalogiga nusxalash.

Keyin, DOS buyruqlar oynasiga avrdude –c ISPProgv1 –p m328p –u –U buyrug'ini kiriting: w: [hex faylingizning nomi]

Buyruq olti burchakli faylni mikrokontroller xotirasiga yozadi. Endi mikrokontroller dasturimiz ko'rsatmalariga muvofiq ishlaydi. Keling, buni tekshirib ko'ramiz!

4 -qadam: Mikrokontroller dasturimiz ko'rsatmalariga muvofiq ishlashini tekshiring

Mikrokontroller dasturimiz ko'rsatmalariga muvofiq ishlashini tekshiring
Mikrokontroller dasturimiz ko'rsatmalariga muvofiq ishlashini tekshiring
Mikrokontroller dasturimiz ko'rsatmalariga muvofiq ishlashini tekshiring
Mikrokontroller dasturimiz ko'rsatmalariga muvofiq ishlashini tekshiring
Mikrokontroller dasturimiz ko'rsatmalariga muvofiq ishlashini tekshiring
Mikrokontroller dasturimiz ko'rsatmalariga muvofiq ishlashini tekshiring

Komponentlarni AVR miltillovchi LED sxemasining sxemasiga muvofiq ulang

Birinchidan, barcha AVR sxemalari kabi bizga kuch kerak. AVR chipining ishlashi uchun taxminan 5 volt quvvat etarli. Siz buni batareyadan yoki doimiy quvvat manbaidan olishingiz mumkin. Biz 7 -pinga +5V quvvatni ulaymiz va 8 -pinni non paneliga ulaymiz. Ikkala pin o'rtasida, biz quvvat manbai kuchini yumshatish uchun 0,1 mF sopol kondansatör joylashtiramiz, shunda AVR chipi tekis elektr uzatish liniyasini oladi.

10KΩ qarshilik qurilmaga quvvatni qayta o'rnatish (POR) ni ta'minlash uchun ishlatiladi. Quvvat yoqilganda, kondansatordagi kuchlanish nolga teng bo'ladi, shuning uchun qurilma asl holatiga qaytadi (reset faol emas), keyin kondansatör VCCga zaryad oladi va reset o'chiriladi.

Biz LEDning anodini AVR pin PB0 ga ulaymiz. Bu ATMega328P -ning 14 -pinidir. Bu LED bo'lgani uchun, biz yonib ketmasligi uchun LEDga keladigan oqimni cheklamoqchimiz. Shuning uchun biz LED bilan ketma -ket 330Ω qarshilikni joylashtiramiz. LEDning katodi erga ulanadi.

16 MGts kristalli Atmega328 mikrokontrollerining soatini ta'minlash uchun, 22pF kondansatkichlari esa kristalning ishlashini barqarorlashtirish uchun ishlatiladi.

Bu LEDni yoqish uchun zarur bo'lgan barcha ulanishlar. Quvvatlantirish manbai.

Ok. LED bir soniya kechikish bilan yonadi. Mikrokontroller ishi bizning vazifalarimizga mos keladi

5 -qadam: Xulosa

Tan olish kerakki, bu faqat LEDni o'chirish uchun uzoq jarayon edi, lekin haqiqat shundaki, siz katta to'siqlarni muvaffaqiyatli bartaraf qildingiz: AVR mikrokontrolerini dasturlash uchun apparat platformasini yaratish, Atmel Studio -ni integratsiyalashgan rivojlanish platformasi sifatida ishlatish, AVRDUDE -ni dasturiy ta'minot sifatida ishlatish. AVR mikrokontrollerini sozlash va dasturlash

Agar siz mening asosiy mikrokontrollerlar loyihalarimdan xabardor bo'lishni istasangiz, YouTube kanalimga obuna bo'ling! Videolarimni ko'rish va baham ko'rish - bu mening qilayotgan ishimni qo'llab -quvvatlashdir

YouTube FOG kanaliga obuna bo'ling

Tavsiya: