Mündəricat:
- Addım 1: Atmel Studiyasından istifadə edərək Proqram Yazın və Hex Faylını tərtib edin
- Addım 2: Mikro nəzarətçi Sigorta Bitlərinin Varsayılan Konfiqurasiyasını dəyişdirin
- Addım 3: Proqramı ATMega328P Mikrokontrolörünün Yaddaşına Yandırmaq
- Addım 4: Proqramımızın Təlimatlarına uyğun olaraq Mikrokontrolörün İşini yoxlayın
- Addım 5: Nəticə
Video: AVR Mikrokontrolör Fuse Bit Konfiqurasiyası. LED Yanıp sönən Proqramı Mikrokontrolörün Flash Yaddaşına Yaratmaq və Yükləmək .: 5 Addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
Bu halda C kodunda sadə bir proqram yaradıb mikrokontrolörün yaddaşına yazacağıq. İntellektual inkişaf platforması olaraq Atmel Studio -dan istifadə edərək öz proqramımızı yazıb hex faylını tərtib edəcəyik. Sigorta bitlərini konfiqurasiya edəcəyik və öz proqramçımız AVRDUDE -dən istifadə edərək AVR ATMega328P mikrokontrolörünün yaddaşına hex fayl yükləyəcəyik.
AVRDUDE - Atmel AVR mikrokontrolörlərinin çipdəki xatirələrini yükləmək və yükləmək üçün bir proqramdır. Flash və EEPROM proqramlaşdıra bilər və serial proqramlaşdırma protokolu ilə dəstəkləndiyi yerlərdə qoruyucu və kilid bitlərini proqramlaşdıra bilər.
Addım 1: Atmel Studiyasından istifadə edərək Proqram Yazın və Hex Faylını tərtib edin
Atmel Studio yoxdursa, onu yükləməli və quraşdırmalısınız:
Bu layihə C istifadə edəcək, buna görə də çılpaq sümüklərlə icra edilə bilən bir layihə yaratmaq üçün şablon siyahısından GCC C Yürütülebilir Layihə seçimini seçin.
Sonra, layihənin hansı cihaz üçün hazırlanacağını təyin etmək lazımdır. Bu layihə AVR ATMega328P mikrokontrolörü üçün hazırlanacaq.
Proqram kodunu Atmel Studio -nun Əsas Mənbə Redaktoru sahəsinə yazın. Əsas Mənbə Redaktoru - Bu pəncərə cari layihədəki mənbə faylları üçün əsas redaktordur. Redaktorun imla yoxlaması və avtomatik tamamlama xüsusiyyətləri var.
1. Kompilyatora çipimizin hansı sürətlə işlədiyini bildirməliyik ki, gecikmələri düzgün hesablaya bilsin.
#ifndef F_CPU
#define F_CPU 16000000UL // nəzarətçi kristal tezliyini izah edir (16 MHz AVR ATMega328P) #endif
2. Qlobal dəyişənləri və funksiyaları təyin edən digər fayllardan daxil etdiyimiz məlumatları qoyduğumuz yer, müqəddiməni daxil edirik.
Sancaqlar üzərində məlumat axını nəzarətini təmin etmək üçün #include // header. Sancaqlar, portlar və s.
Proqramda gecikmə funksiyasını aktivləşdirmək üçün #include // header
3. Girişdən sonra main () funksiyası gəlir.
int main (void) {
Main () funksiyası unikaldır və digər funksiyalardan ayrıdır. Hər bir C proqramının tam olaraq bir main () funksiyası olmalıdır. Main (), AVR ilk dəfə güc açıldıqda kodunuzu icra etməyə başladığı yerdir, buna görə də proqramın giriş nöqtəsidir.
4. PORTB -in 0 pinini çıxış olaraq təyin edin.
DDRB = 0b00000001; // PORTB1 -i çıxış olaraq təyin edin
Məlumat Yönləndirmə B -yə ikili nömrə yazaraq bunu edirik. Məlumat İstiqamət B Qeydiyyatı B registrinin bitlərini giriş və ya çıxış etməyə imkan verir. 1 yazmaq onları çıxışa çevirir, 0 isə onları girişə çevirir. Çıxış funksiyasını yerinə yetirmək üçün bir LED bağladığımızdan, PORT B -nin 0 pinini çıxış olaraq qoyaraq ikili bir rəqəm yazırıq.
5. Döngə.
isə (1) {
Bu ifadə tez -tez əsas döngə və ya hadisə döngəsi olaraq adlandırılan bir döngədir. Bu kod həmişə doğrudur; buna görə də sonsuz bir döngədə dəfələrlə icra edir. Heç dayanmır. Buna görə də, mikro nəzarət cihazından enerji kəsilmədikdə və ya kod proqram yaddaşından silinmədikdə LED sonsuzluqda yanıb -sönəcək.
6. PB0 portuna qoşulmuş LED -i yandırın
PORTB = 0b00000001; // PB0 portuna qoşulmuş LED -i yandırır
Bu xətt, PortB -in PB0 -a 1 verir. PORTB, AVR çipində soldan sağa gedən 8 pin, PB7-PB0 olan bir hardware qeydidir. Sonuna 1 qoyulması PB0 -a 1 verir; bu, onu açan PB0 -ni yüksək edir. Buna görə PB0 pininə əlavə edilmiş LED açılacaq və yanacaq.
7. Gecikmə
_delay_ms (1000); // 1 saniyəlik gecikmə yaradır
Bu ifadə 1 saniyə gecikmə yaradır ki, LED tam 1 saniyə yanar və yanar.
8. PB0 daxil olmaqla bütün B pinlərini söndürün
PORTB = 0b00000000; // PB0 daxil olmaqla bütün B pinlərini söndürür
Bu xətt bütün 8 Port B pinlərini söndürür, beləliklə PB0 da sönür, buna görə LED sönür.
9. Başqa bir gecikmə
_delay_ms (1000); // başqa 1 saniyəlik gecikmə yaradır
Döngəyə yenidən başlamazdan və yenidən açan xətlə qarşılaşmadan əvvəl prosesi bir daha təkrarlayaraq tam olaraq 1 saniyə sönür. Bu, LED -in daim yanıb sönməsi üçün sonsuz olur.
10. Qayıdış ifadəsi
}
qayıt (0); // bu xəttə əslində heç vaxt çatılmır}
Kodumuzun son sətri return (0) ifadəsidir. Bu kod heç vaxt yerinə yetirilməsə də, heç vaxt bitməyən sonsuz bir döngə olduğu üçün masa üstü kompüterlərdə işləyən proqramlarımız üçün əməliyyat sisteminin düzgün çalışıb çalışmadığını bilməsi vacibdir. Bu səbəbdən, tərtibçimiz olan GCC, hər main () kodunun bir qaytarma kodu ilə bitməsini istəyir. Qayıdış kodları hər hansı bir dəstəkləyici əməliyyat sistemində müstəqil işləyən AVR kodu üçün lazımsızdır; Buna baxmayaraq, main (return) ilə bitirməsəniz, tərtibçi xəbərdarlıq edəcək.
Son addım layihənin qurulmasıdır. Bu, icra olunan fayl (.hex) faylını yaratmaq üçün bütün obyekt fayllarının tərtib edilməsi və nəhayət əlaqələndirilməsi deməkdir. Bu hex fayl, Layihə qovluğunun içərisində olan Debug qovluğunda yaradılır. Bu altıbucaqlı fayl mikrokontrolör çipinə yüklənməyə hazırdır.
Addım 2: Mikro nəzarətçi Sigorta Bitlərinin Varsayılan Konfiqurasiyasını dəyişdirin
Bəzi qoruyucu bitlərin çipin müəyyən aspektlərini kilidləmək üçün istifadə edilə biləcəyini və potensial olaraq kərpic edə biləcəyini (istifadəyə yararsız hala gətirə biləcəyini) xatırlamaq vacibdir
ATmega328P -də istifadə olunan cəmi 19 qoruyucu bit var və onlar üç fərqli qoruyucu bayta ayrılır. Sigorta bitlərindən üçü "Genişləndirilmiş Sigorta Baytı" nda, səkkizi "Yüksək Sığorta Baytı" nda və daha səkkizi "Sığortalı Aşağı Bayt" da var. Kilid bitlərini proqramlaşdırmaq üçün istifadə olunan dördüncü bir bayt da var.
Hər bayt 8 bitdir və hər bit ayrı bir ayardır və ya bayraqdır. Ayarlama, qurma, proqramlaşdırma, proqramlaşdırılmamış sigortalardan bəhs edərkən əslində ikili istifadə edirik. 1, qurulmamış, proqramlaşdırılmamış və sıfır qurulmuş, proqramlaşdırılmış deməkdir. Sigortaları proqramlaşdırarkən ikili notasiyadan və ya daha çox onaltılı işarədən istifadə edə bilərsiniz.
ATmega 328P çipləri 8 MHz tezliyə malik RC osilatoruna malikdir. Yeni çiplər, bu qaynaq saatı olaraq və CKDIV8 qoruyucusu aktiv olaraq 1 MHz sistem saatı ilə birlikdə göndərilir. Başlanğıc müddəti maksimuma təyin olunur və fasilə müddəti aktivdir.
Yeni ATMega 328P çipləri ümumiyyətlə aşağıdakı qoruyucu parametrlərə malikdir:
Aşağı sigorta = 0x62 (0b01100010)
Yüksək qoruyucu = 0xD9 (0b11011001)
Genişləndirilmiş sigorta = 0xFF (0b11111111)
Xarici 16MHz kristallı ATmega 328 çipindən istifadə edəcəyik. Buna görə də "Fuse Low Byte" bitlərini buna uyğun olaraq proqramlaşdırmalıyıq.
1. 3-0 bitləri osilator seçiminə nəzarət edir və 0010-un standart ayarı, istəmədiyimiz kalibrli daxili RC osilatorundan istifadə etməkdir. Aşağı güclü kristal osilatörün 8.0-dan 16.0 MHz-ə qədər işləməsini istəyirik, buna görə 3-1 bitləri (CKSEL [3: 1]) 111 olaraq təyin olunmalıdır.
2. 5 və 4-cü bitlər başlanğıc vaxtını idarə edir və 10-un standart qəbulu, gücün azalması və enerjiyə qənaət edilməsindən altı saat dövrünün başlanğıc gecikməsi, üstəgəl 14 saat dövrünün əlavə başlanğıc gecikməsi və sıfırdan 65 milisaniyədir.
Aşağı güclü bir kristal osilatör üçün etibarlı tərəfdə olmaq üçün, gücün azalması və enerjiyə qənaət edilməsinin mümkün olan maksimum 16.000 saat dövrünün gecikməsini istəyirik, buna görə SUT [1] 1-ə əlavə olaraq başlanğıc gecikməsi əlavə edilməlidir. sıfırdan 14 saat dövrü və 65 milisaniyə, buna görə SUT [0] 1 olaraq təyin edilməlidir. Əlavə olaraq, CKSEL [0] 1 olaraq ayarlanmalıdır.
3. Bit 6, əhəmiyyət vermədiyimiz PORTB0 üçün saat çıxışını idarə edir. Beləliklə, bit 6 -ı 1 olaraq təyin etmək olar.
4. Bit 7, 8-ə bölmə əməliyyatını idarə edir və 0-un standart ayarı istəmədiyimiz xüsusiyyətə malikdir. Beləliklə, bit 7 -nin 0 -dan 1 -ə dəyişdirilməsi lazımdır.
Buna görə də, yeni Sigorta Aşağı Baytı 11111111 olmalıdır, onaltılıq qeyddə 0xFF -dir
"Fuse Low Byte" bitlərini proqramlaşdırmaq üçün proqramçımızdan (https://www.instructables.com/id/ISP-Programmer-fo…) və AVRDUDE proqramından istifadə edə bilərik. AVRDUDE, Atmel mikro nəzarətçilərindən yükləmək və yükləmək üçün istifadə olunan bir əmr satırı yardım proqramıdır.
AVRDUDE yükləyin:
Birincisi, AVRDUDE konfiqurasiya faylına proqramçımızın təsvirini əlavə etməliyik. Windows -da konfiqurasiya faylı ümumiyyətlə AVRDUDE -in icra olunan faylı ilə eyni yerdədir.
Mətni avrdude.conf konfiqurasiya faylına yapışdırın:
# ISPProgv1
proqramçı id = "ISPProgv1"; desc = "serial port vurma, sıfırlama = dtr sck = rts mosi = txd miso = cts"; növü = "serb"; connection_type = serial; sıfırlama = 4; sck = 7; mosi = 3; miso = 8;;
AVRDUDE -ə başlamazdan əvvəl, sxemə görə mikro nəzarətçini proqramçıya bağlamalıyıq
DOS sorğu pəncərəsini açın.
1. Avrdude -nin dəstəkləndiyi proqramçıların siyahısına baxmaq üçün avrdude -c c əmrini yazın. Hər şey qaydasındadırsa, siyahıda "ISPProgv1" proqramçı id olmalıdır
2. Avrdude -nin dəstəkləndiyi Atmel cihazlarının siyahısına baxmaq üçün avrdude -c ISPProgv1 əmrini daxil edin. Siyahıda Atmel ATMega 328P üçün m328p cihazı olmalıdır.
Sonra, avrdude -c ISPProgv1 -p m328p yazın, əmr hansı proqramçının istifadə edildiyini və Atmel mikro nəzarətçisinin nə bağlı olduğunu bildirir. ATmega328P imzasını onaltılı işarədə təqdim edir: 0x1e950f. Hal -hazırda ATmega328P -də olan sigorta biti proqramlaşdırmasını onaltılı olaraq da təqdim edir; bu halda, sigorta baytları zavod standartlarına görə proqramlaşdırılır.
Sonra, avrdude -c ISPProgv1 –p m328p –U lfuse: w: 0xFF: m yazın, hansı proqramçının istifadə edildiyini və Atmel mikro nəzarətçisinin nə bağlı olduğunu avrdude bildirmək və Sigortanın aşağı baytını 0xFF olaraq dəyişdirmək əmrdir.
İndi saat siqnalı aşağı güclü kristal osilatordan gəlməlidir.
Addım 3: Proqramı ATMega328P Mikrokontrolörünün Yaddaşına Yandırmaq
Əvvəlcə təlimatın əvvəlində hazırladığımız proqramın hex faylını AVRDUDE qovluğuna kopyalayın.
Sonra, DOS istək pəncərəsinə avrdude –c ISPProgv1 –p m328p –u –U flash əmrini daxil edin: w: [hex faylınızın adı]
Komanda mikro nəzarətçinin yaddaşına hex fayl yazır. İndi mikrokontrolör proqramımızın təlimatlarına uyğun işləyir. Gəlin yoxlayaq!
Addım 4: Proqramımızın Təlimatlarına uyğun olaraq Mikrokontrolörün İşini yoxlayın
Komponentləri AVR yanıb -sönən LED dövrəsinin sxematik sxeminə uyğun olaraq bağlayın
Birincisi, bütün AVR sxemlərində olduğu kimi gücə ehtiyacımız var. AVR çipinin işləməsi üçün təxminən 5 volt güc kifayətdir. Bunu ya batareyalardan, ya da DC enerji təchizatından əldə edə bilərsiniz. 7 pininə +5V güc bağlayırıq və 8 pinini çörək taxtasına yerə bağlayırıq. Hər iki sancağın arasına, AVR çipinin hamar bir elektrik xətti alması üçün enerji təchizatının gücünü yumşaltmaq üçün 0.1μF keramika kondansatörü yerləşdiririk.
10KΩ rezistoru cihaza Güc Açma Sıfırlamasını (POR) təmin etmək üçün istifadə olunur. Güc açıldıqda, kondansatör üzərindəki gərginlik sıfır olacaq, buna görə cihaz sıfırlanır (sıfırlama aktiv olduğu üçün), sonra kondansatör VCC -yə yüklənir və sıfırlama deaktiv ediləcək.
LED -in anodunu AVR pin PB0 -a bağlayırıq. Bu, ATMega328P -nin 14 -cü pinidir. Bir LED olduğu üçün yanmayan LED -ə axını məhdudlaşdırmaq istəyirik. Buna görə LED ilə birlikdə 330Ω rezistor yerləşdiririk. LED -in katodu yerə bağlanır.
16 MHz kristal Atmega328 mikrokontrolörünün saatı təmin etmək üçün istifadə olunur və 22pF kondansatörləri kristalın işini sabitləşdirmək üçün istifadə olunur.
Bunlar LED -i yandırmaq üçün lazım olan bütün əlaqələrdir. Enerji təchizatı.
Tamam. LED bir saniyə gecikmə ilə yanıb-sönür. Mikro nəzarətçinin işi vəzifələrimizə uyğundur
Addım 5: Nəticə
Etiraf etmək lazımdır ki, bu, sadəcə bir LED -in yanıb -sönməsi üçün uzun bir proses idi, amma həqiqət budur ki, böyük maneələri uğurla aradan qaldırmısınız: AVR mikro nəzarətçisini proqramlaşdırmaq üçün bir hardware platforması yaratmaq, Atmel Studio -nu inteqrasiya edilmiş inkişaf platforması kimi istifadə etmək, AVRDUDE -ni proqram təminatı kimi istifadə etmək. AVR mikrokontrolörünün qurulması və proqramlaşdırılması
Əsas mikrokontroller layihələrimdən xəbərdar olmaq istəyirsinizsə, YouTube -a abunə olun! Videolarımı izləmək və paylaşmaq, gördüklərimi dəstəkləməyin bir yoludur
YouTube FOG kanalına abunə olun
Tövsiyə:
Potensiometr ilə LED Yanıp Sönən Nəbzləri İdarə Edin: 6 Addım
Potensiometr ilə LED Yanıp Sönən Pulsları İdarə Edin: Bu təlimatda potensialiometr ilə LED Yanıp sönən pulsların necə idarə olunacağını öyrənəcəyik
Elektron Nişan LED Yanıp Sönən Robot Rozeti - Lehim Kit: 11 Addım
Elektron Nişan LED Yanıp Sönən Robot Rozeti - Lehim Kit: Bu məqalə PCBWAY.PCBWAY tərəfindən qürurla sponsorluq edilir və bütün dünyada insanlar üçün yüksək keyfiyyətli PCB hazırlanır. Özünüz üçün cəhd edin və PCBWAY -da çox yüksək keyfiyyətlə cəmi 5 dollara 10 PCB əldə edin, təşəkkürlər PCBWAY. İnkişaf etdirdiyim 1 nömrəli Robadge
ISU Tələbəsi olaraq Pulsuz Proqramı Necə Yükləmək olar (Microsoft, Adobe və Təhlükəsizlik Proqramı: 24 addım
ISU Tələbəsi olaraq Pulsuz Proqramı Necə Yükləmək olar (Microsoft, Adobe və Təhlükəsizlik Proqramı: Adobe üçün: 1 -ci addıma keçin. Microsoft üçün: 8 -ci addıma keçin. Təhlükəsizlik üçün: 12 -ci addıma keçin. Azure üçün: 16 -cı addıma keçin
CH340 UART Serial Dönüştürücü Kabelindən istifadə edərək Proqramı və ya Kodu Arduino Pro Mini -yə necə yükləmək olar: 4 addım
CH340 UART Serial Dönüştürücü Kabelindən istifadə edərək Proqramı və ya Arduino Pro Mini -yə Necə Yükləmək olar: USB TTL Serial kabelləri, USB ilə seriyalı UART interfeysləri arasında əlaqə təmin edən bir sıra USB konvertor kabelləridir. 5 volt, 3.3 volt və ya istifadəçi tərəfindən müəyyən edilmiş siqnal səviyyələrində əlaqə təmin edən bir sıra kabellər mövcuddur
LED -lərdən və AT Tiny -dən istifadə edərək, "Pırıltı, Parıltı, Kiçik Ulduz" oynayan Piezo ilə yanıb -sönən bir ulduz yaratmaq üçün: 6 addım
LED -lərdən və AT Tiny -dən istifadə edərək "Pırıltı, Parıltı, Kiçik Ulduz" oynayan Piezo ilə Yanıp Sönən Ulduz Yaratmaq: Bu dövrə, yanıb -sönən bir ulduz və " Parıltı, Parıltı, kiçik ulduz " Zəhmət olmasa dövrə və dövrə ümumi baxış üçün növbəti addıma baxın