Mündəricat:

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
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

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

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
Video: Мощная ультразвуковая ванна своими руками. DIY ultrasonic bath. 2024, Iyun
Anonim
Image
Image

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

Yazma Proqramı və Atmel Studiyasından istifadə edərək Hex Faylını tərtib edin
Yazma Proqramı və Atmel Studiyasından istifadə edərək Hex Faylını tərtib edin
Yazma Proqramı və Atmel Studiyasından istifadə edərək Hex Faylını tərtib edin
Yazma Proqramı və Atmel Studiyasından istifadə edərək 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

Mikro nəzarətçi qoruyucu bitlərinin standart konfiqurasiyasının dəyişdirilməsi
Mikro nəzarətçi qoruyucu bitlərinin standart konfiqurasiyasının dəyişdirilməsi
Mikro nəzarətçi qoruyucu bitlərinin standart konfiqurasiyasının dəyişdirilməsi
Mikro nəzarətçi qoruyucu bitlərinin standart konfiqurasiyasının dəyişdirilməsi
Mikro nəzarətçi qoruyucu bitlərinin standart konfiqurasiyasının dəyişdirilməsi
Mikro nəzarətçi qoruyucu bitlərinin standart konfiqurasiyasının dəyişdirilməsi

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

Proqramı ATMega328P Mikrokontrolörünün Yaddaşına Yandırmaq
Proqramı ATMega328P Mikrokontrolörünün Yaddaşına Yandırmaq
Proqramı ATMega328P Mikrokontrolörünün Yaddaşına Yandırmaq
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

Proqramımızın Təlimatlarına uyğun olaraq Mikrokontrolörün İşini yoxlayın
Proqramımızın Təlimatlarına uyğun olaraq Mikrokontrolörün İşini yoxlayın
Proqramımızın Təlimatlarına uyğun olaraq Mikrokontrolörün İşini yoxlayın
Proqramımızın Təlimatlarına uyğun olaraq Mikrokontrolörün İşini yoxlayın
Proqramımızın Təlimatlarına uyğun olaraq Mikrokontrolörün İşini yoxlayın
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ə: