Tez avr sxemasi. Tiny AVR mikrokontrollerlarining sug'urta bitlarining konfiguratsiyasini tiklash. Yuqori voltli ketma-ket dasturlash rejimida mikrokontroller pimlarini ulash

MK ATMEL dasturlashda yangi boshlanuvchilar uchun FastAVR universal rivojlanish kengashi shunga o'xshash o'nga yaqin dizaynlarni tahlil qilish asosida ishlab chiqilgan. Kengash - bu ularning ko'pchiligining ortiqcha funktsiyalari yoki boshqalarning haddan tashqari ibtidoiy xususiyatlari o'rtasidagi oqilona murosa. Turli mikroprotsessorli tizimlar bilan ishlash tajribasiga ega bo'lgan holda, quyida men o'z fikrlarimni sharhlab beraman - u yoki bu taxta tuguni qanday yaratilgan. Siz ular bilan rozi bo'lasizmi yoki yo'qmi, sizga bog'liq, lekin kelajakda ular AVRni o'zlashtirganlar uchun qisman foydali bo'lishi mumkin ...

Dizayn Microelectronics -ning ishlanmalari va qo'llanmalariga asoslangan (http://www.mikroe.com/ru/). Ammo EasyAVR platalarida (va faqat bitta emas) mikroprotsessor texnologiyasiga yangi kelganlarni xilma-xilligi va ish sifati bilan o'ziga jalb etadigan juda ko'p komponentlar mavjud; aslida, dasturlarning 5-6 misolini muvaffaqiyatli tuzib, tajriba orttirgandan so'ng, ularning yarmi keraksiz bo'lib qoladi. O'zingiz hukm qiling - nima uchun sizga bortdagi har bir portga ulangan bir nechta LED va tugma kerak? Bularning barchasi, siz port pinlarini qanday boshqarishni va indikatorlarni miltillashni o'rganmaguningizcha, va bu juda tez sodir bo'ladi ;-) Bunday holda, taxtada 4 ta LED va kalit mavjud, boshlash uchun bu etarli. .

Shunday qilib, disk raskadrovka kengashining imkoniyatlari:

  • ATmega-ni qo'llab-quvvatlash uchun qo'shimcha qurilmalarning asosiy to'plami: RS-232 konvertori, signalizator, SPI EEPROM, LCD va LED ko'rsatkichlari, o'rnatilgan soat generatori + kvarts, PS-2 klaviaturasi, ADC-tester, mantiq testerlari;
  • uyda takrorlash imkoniyati, lazerli dazmollash texnologiyasi uchun optimallashtirilgan bir tomonlama bosilgan elektron karta, kichik o'lchamli;
  • barcha komponentlardan faqat DIP -paketlarda foydalanish - tajribalar paytida ularni osongina almashtirishga yoki protsessorning o'zini boshqa sxemalar uchun dasturlashga imkon beradi (masalan, JTAG uchun);
  • qurilmalarning oddiy prototiplarini yaratish va ularni tuzatish uchun to'liq funktsional etarlilik;
  • standart SPI dasturchisi STK-200 ulagichi, dasturchiga tanlangan quvvat manbai, tashqi JTAG ulanish imkoniyati;
  • taxtani JTAG ICE rejimida oddiy qayta almashtirish orqali yoqish imkoniyati;
  • MC ning barcha portlarini joylashtirishning chiziqli texnologiyasi tufayli har qanday kombinatsiyada bortli tashqi qurilmalarni mustaqil ravishda almashtirish imkoniyati;
  • har qanday tashqi tashqi qurilmalarni osongina ulash va DIP-40-dagi ATmega resurslaridan 100% foydalanish qobiliyati, barcha portlarga bir oz kirish mumkin, bundan tashqari, tashqi qurilmalar uchun taxtaning barcha ichki periferiyalaridan foydalanish mumkin (masalan, soat generatori yoki LED ko'rsatkichlari;

Bularning barchasi taxtani o'zgartirish yoki lehimlashni talab qilmaydi. Bu. MKni o'rganishning dastlabki bosqichida FastAVR imkoniyatlari etarli. O'z dasturiy ta'minotini yaratgandan so'ng, ko'chishga qaror qilganlar, o'zlariga kerak bo'lgan narsani mustaqil ravishda hal qilishlari va o'z tashqi qurilmalari bilan dizayn prototipini tuzishlari mumkin bo'ladi. Yana bir bor takrorlayman - kengash AVR MK ni o'rganishni boshlash uchun tuzilgan, boshqa maqsadlar qo'yilmadi. Hujjatlarning paydo bo'lishi ko'plab yangi boshlanuvchilar tomonidan ushbu turdagi nazoratchilarni o'zlashtirishga bo'lgan qiziqish bilan bog'liq yoki hali qaerdan boshlash haqida o'ylayapti. Tabiiyki, siz test taxtasidan boshlashingiz kerak ;-)

MK AVR-o'zini o'zi boshqaradigan kontrollerlar, lekin protsessor butun tizim emas. Unga xizmat ko'rsatadigan yoki u tomonidan boshqariladigan "kublar" o'z -o'zidan kelajakdagi tuzilmalarning alohida bloklari sifatida qaralishi mumkin. Ularni asosiy taxtada birlashtirib, kerakli natijaga erishish uchun ularni birlashtirish mumkin. Dastlab, boshqaruv paneli ATmega8 asosida ishlab chiqilgan u arzon va AVRning deyarli barcha xususiyatlariga ega. Biroq, maslahatlarga quloq solgan holda, men pulni tejamaslikka qaror qildim va mikrokontrollerni DIP paketidagi maksimal darajaga - ATmega16 yoki 32 ga qo'yishga qaror qildim. Ikkala MCUning pinouti bir xil. Bunday echimning narxi hech bo'lmaganda disk raskadrovka davomida ulanishingiz mumkin bo'lgan kirish / chiqish portlari sonidan yuz baravar ko'p to'lanadi. AVR-ning barcha avlodlari uchun pastdan yuqoriga moslik sizga yanada kuchli chip yordamida dasturlarni yozish va disk raskadrovka qilish, so'ngra maqsadli chip uchun kompilyatsiya qilish imkonini beradi. Etarli flesh -resurs sizga Mega -ni qayta dasturlash imkoniyatlarining cheklanishiga "osilmaslikka" imkon beradi, ayniqsa, agar siz etarli darajada mashq qilsangiz, MKni oxirgi marta yonib turadigan ishchi tuzilmaga yuborishingiz mumkin (JTAG ICE - bu birinchi da'vogar)

Kengashni ishlab chiqarish uchun sizga har qanday elektron muhandisning shkaflarida etarli bo'lgan, kam bo'lmagan "keraksiz" kompyuter kerak bo'ladi. Komponentlarning aksariyati eski yoki ishlamay qolgan IBM PC platalaridan yoki kompyuter texnologiyalaridan foydalaniladi, yaqinda bunday temir tobora yaroqsiz bo'lib, tashlanib yoki ishlatilmay yotib ketadi. Chunki SMD kichik narsalar bilan deyarli hech narsa qilish mumkin emas (muammoni va vaqtni hal qiling ...), men bunday qurilmalarni butunlay quritgich yoki elektr pechka bilan lehimlayman.

FastAVR -ning asosiy tavsifi quyida blokirovka qilingan:

Oziqlanish. O'rnatilgan 78 (M) 05 regulyatori taxtani boshqa uskunalardan olinadigan keng tarqalgan 9-12V adapterlardan quvvatlantirish imkonini beradi, ular odatda bo'sh. Oddiy ulanishda bu etarli (Mega-16/32 + LCD + RS232 + TXO), 7-segmentli bortli LEDni yoki juda shovqinli tashqi atrofni (murakkab dasturchi) ishlatganda stabilizator allaqachon qizib ketgan. . + 5V tashqi stabilizatsiyalangan kuchlanishni pin-3 X1 orqali ulash mumkin (anakart sovutgichlarining ulagichi ishlatiladi). Avval VCC_SEL guruhining JP1-JP2 o'tish moslamalarini o'chirib qo'yishingiz kerak. Ushbu turdagi X1 bir nechta sabablarga ko'ra tanlangan, asosiysi shundaki, siz deyarli har doim mavjud bo'lgan turli adapterlardan yoki laboratoriya quvvat manbai bilan platani quvvatlantirish uchun adapter yasashingiz kerak. O'tkaziladigan ferrit choklari (balun) FB1, FB2 filtrli impulsli shovqin va yuqori chastotali shovqin. VD1, VD2 diodlari "ortiqcha ortiqcha" dan himoyalangan. VCC_EXT va GND_EXT jumperlari bortning bir nechta joylariga o'rnatilgan. Ular orqali, tashqi qurilmalarni ulashda, besleme zo'riqishini va umumiy "erni" olib tashlash juda oson.

Tashqi xotira standart I2C EEPROM 24cXXXda amalga oshiriladi. AVR-ning o'zida doimiy xotira mavjud bo'lsa-da, ko'p dizaynlarda hajmi yoki manbasi tufayli tashqi chip afzal bo'lishi mumkin. Kommutatsiya sxemasi standart, kristall manzili 0x01.

HL2-HL5 portlari holatining chiziqli LED ko'rsatkichlari 4 ta alohida LEDda ishlab chiqariladi. AVR bilan tajriba boshlash uchun bu etarli, men ularning ko'pini oqlanmagan, aksincha bezak deb bilaman. LEDlar "1" log portiga yozish paytida yonadi. port holati signalni teskarisiz ko'rsatiladi, bu qulay va tushunarli.

LCD ko'rsatkich paneliga ulanish 2 ta ulagich orqali amalga oshiriladi, 8 va 4 bitli rejimlardan foydalanish mumkin. Ulardan birinchisi - 34 -pinli X2 (3,5 dyuymli disklar) sizga kerakli uzunlikdagi disklardan standart siqilgan kabellardan foydalanishga imkon beradi, mos ravishda indikatorning o'zida pinli o'tish simini (pinli blokni) payvandlash yaxshiroqdir. har xil ko'rsatkichlarni qo'rqmasdan tezda o'zgartirish imkonini beradi AVR portlariga ulanish X10 pin-bloki orqali amalga oshiriladi, shuning uchun LCD ulanish rejimiga qo'shimcha ravishda siz MK pinlarini moslashuvchan tanlashingiz mumkin. Tekshirgichning erkin portlariga osongina moslashing, hatto ularni turli guruh portlaridan birma -bir "tering", bu disk raskadrovka qilinadigan ma'lum prototipga mos kelganda yoki yangi ishlab chiqarilgan bosilgan elektron karta simlarni ulashda qulayroq bo'lib chiqadi. .


Ko'p hollarda LCD indikatoridan foydalanish narx, o'lcham yoki ishonchlilik nuqtai nazaridan oqlanmasligi mumkin. Masalan, eng oddiy zaryadlovchi yoki taymerda 2 xonali LED ko'rsatkichi yaxshi ishlashi mumkin. Menda balandligi 14 mm bo'lgan baland tipdagi ikkita 7-segmentli displeylar ham umumiy anodli, ham umumiy katodli (ishdan chiqqan kassa apparatlari va 486 ta kompyuter bloklari) bo'lib chiqdi. VT1-VT4-dagi 2-zarbali tugmachalarni har qanday turdagi ko'rsatkichlarni ulash uchun ishlatishim kerak edi va shunga ko'ra, indikatorning o'zi uchun rozetkani, kelajakda miyamni zanjir bilan ushlamaslik uchun.

ATmega portlariga barcha periferik ulanishlar, yuqorida aytib o'tilganidek, X3-X6 chiziqli pinli bloklar orqali amalga oshiriladi. Asosan, disk raskadrovka qilingan taxtalarda men IDC-10 (2x5) ulagichlaridan foydalanishni kuzatdim. Bu holda ularning yagona afzalligi - ulanish paytida joylarni chalkashtirib yubormaslik uchun "kalit" ning mavjudligi. Bu erda bu usulning afzalliklari tugaydi va kamchiliklari boshlanadi - hatto 8 -bitli portlar bilan ishlash ingl. pinlar ketma-ket joylashtirilmagan, o'rnatilgan periferik qurilmalarni pastadirdan tashqari ulash mumkin emas. Pin-bloklardan foydalanish mutlaqo teskari natijani beradi, bundan tashqari, standart o'tish-o'tish moslamasi orqali yuqoridan kelgan signallarni boshqarish oson, masalan, mantiqiy zond yoki osiloskop yordamida, atrofga chayqalishning hojati yo'q. pinlarni tasodifan "qisqartirish" dan qo'rqib, port oyoqlarini o'qing. Bunga ulanishning maksimal arzonligi va qayta ishlatilishini qo'shing, chunki taxtaga lehimlangan ulagichga qaraganda kabelni yoki o'tish joyini almashtirish ancha oson. Bundan tashqari, hozirda sotuvda, hatto bizning orqamizda ham siz bunday ulagichlarni topishingiz mumkin (yoki eski tizim bloklaridan foydalaning), bu esa ulagichlarni birlashtirishni oson va tezlashtiradi (rasm):


Ovoz uchun, anakartdan qariyb 80 Ohm qarshilikka ega bo'lgan umumiy ovozli signal ishlatiladi. Signal juda baland emas, lekin monitoring uchun etarli (R23 chegarada allaqachon tanlangan). Men alohida kalit o'rnatmaganman, xohlovchilar uni TEMP deb nomlangan prototiplash joylarida sotishlari mumkin. Biroz maslahat - tovush bilan ishlaganda, signal ishlab chiqarish protsedurasining oxirida buyruq berishni unutmang, bu PD7 chiqishini "0" jurnaliga qaytaradi, aks holda, avlod to'xtaganidan keyin "1" bo'lishi mumkin. chapda va karnay orqali oqim davom etaveradi, bu umumiy iste'mol AVR sabablariga ko'ra yaxshi emas.

Portlar uchun mantiqiy signallar ustasini yig'ish uchun 4-bitli DIP-switch SW4 ishlatiladi. Bu erda raqam bilan bog'liq vaziyat LEDlarga o'xshaydi. Chunki avr kirishlari ichki biriktirilgan basseyn-qarshiliklarga ega, shuning uchun quvvat manbaiga "tortishish" ni o'rnatishga hojat yo'q. R18-R21 rezistorlarida MC portlarini tasodifan chiqishga o'tish xatolaridan himoya yig'iladi. 1.03 va undan yuqori versiyalarida, agar u yo'qolsa, o'tish moslamasini o'tish moslamalari bilan almashtirish mumkin. Yaqinda men tezda taxtadan JTAG ICE yasashim kerak edi. Shu munosabat bilan, 1.4 rev -da, RN1 rezistorli matritsasi kiritildi, bu apparatga bir nechta nazoratchi kirishlar bo'yicha "1" ligigasini yaratishga imkon beradi. Agar sizga bu kerak bo'lmasa, siz RN1 -ni o'rnatishni o'tkazib yuborishingiz mumkin.

MC soati CL_SEL pin guruhi tomonidan tanlangan va uni tashqi kristalli rezonator Z1 (faqat JP37, JP38 o'rnatilgan), G1 (16 MGts) ajralmas kristalli osilatori yoki bo'linuvchidan bajarish mumkin: 2 va: 4 . Bu. kvartsdan tashqari, protsessor 16, 8, 4 MGts chastotalarda ishlay oladi. Siz disk raskadrovka qilinayotgan dasturning tezligini bashorat qilishingiz yoki maxsus soat bilan standart soat chastotasini olishingiz mumkin. kvarts. Asosan, TXO bo'lmagan taqdirda, bu chastotada 16 MGts gacha bo'lgan har qanday boshqa generatordan foydalanish mumkin. Jeneratör, shuningdek, mikrokontrolderning noto'g'ri tikilgan sigortalari tufayli MKni "ko'tarishda" sizga foydali bo'lishi mumkin, bu holda soat chastotasi muhim emas.

RS-232 dan UART darajali ketma-ket konvertor AVR-ga asoslangan tizimlarning ko'pchiligining doimiy xususiyatidir. Bu erda "g'ildirakni qayta kashf qilish" shart emas, standart MAX232 etarli. Faqat RX-TX signallari ishtirok etadi, bu ko'pchilik ilovalar uchun etarli. JP31-JP32-dagi moslashuvchan simlardan foydalanib, yo'lni yon tomondan ishlatmasdan, apparat oqimini boshqarish uchun CTS-RTS-ni ulash mumkin. Maksimal MAX232, TI MAX232 va SIPEX SP3232 m / c sinovdan o'tgan sxemasi - mos keladigan har qanday analogni pinoutga qo'ying.

Tashqi matritsali klaviatura alohida taxtada tayyorlanishi va uni halqa bilan MK ga ulash mumkin (men manipulyatorlardan sichqonchani ishlatishga qaror qildim, qoida tariqasida, har doim 2 mikrik ishlaydi). Nosozliklarni tuzatish kartasining o'zi ikkita PS-2 ulagich blokiga ega. IBM kompyuterining standart klaviaturasi hech qanday uskuna o'zgartirmasdan, tabiiyki, AVR -dan tegishli dasturiy ta'minot yordamida ulanishi mumkin. Ikkinchi ulagich bepul, sizning ixtiyoringiz bilan foydalaning. Qoida tariqasida, klaviatura tuzatiladigan prototipga qarab juda aniq narsa, shuning uchun o'ylab ko'rganimdan so'ng, men hatto eng oddiy tugmachalarni ham taxtaga qo'ymaslikka qaror qildim. Men taxta variantlarini simlar va sinovdan o'tkazgandan so'ng joylashtiraman.

HL7 indikatori o'rnatilgan PWM boshqaruv apparati bilan tajribalar uchun o'rnatiladi.

X7 elektron ketma-ket ketma-ket dasturlash uchun ulagich STK-200 ga muvofiq ishlab chiqariladi. Dasturchi uchun quvvat tanlangan holda JP43 orqali tanlanishi mumkin. Menimcha, PonyProg -dan eng oddiy dasturchi LAL aloqasi bilan 74ALS (LS, F) 244 buferida ishlatiladi. Hamma narsa XP SP2 bilan ishlaydigan Core2Duo + i965chipsetda sinovdan o'tkazildi, hech qanday muammo tug'ilmadi. Dasturchi disk raskadrovka kartasidan ulagich orqali quvvatlanadi va ulardan foydalanish oson, chunki oddiy rejimdagi buferlar Z holatiga "o'tadi" va FastAVR ishlashiga mutlaqo xalaqit bermaydi. JTAG adapterini elektron dasturlash va real vaqtda disk raskadrovka uchun ulash, shuningdek, C portining mos keladigan chiziqli pinli bloki orqali taxtani o'zgartirmasdan ham mumkin.

Yana bir nechta kerakli elementlarni eslatib o'tish kerak:

Tashqi tiklash sxemasi, bu AVR uchun juda oddiy. Uni JP42 orqali o'chirib qo'yish mumkin, garchi dasturchi bilan birgalikda ishlash hech qanday xalaqit bermasa. Qayta tiklash usuli sug'urta orqali standart kirish -chiqish porti sifatida qayta dasturlashtirilishi va tashqi qurilmalar uchun ishlatilishi mumkin, lekin shuni yodda tutingki, bu holda kristalni X7 orqali qayta dasturlash mumkin emas.

Potentsiometr tomonidan yoqilgan o'zgaruvchan qarshilik R27-bu o'rnatilgan ADC bilan tajribalar uchun kuchlanish sozlamasi, undan chiqishni MKning har qanday analog kirishiga etkazib berish mumkin. Kichkina eslatma - e'tibor bering, agar siz bu rezistorni biron sababga ko'ra o'rnatmasangiz, umumiy GND avtobusining normal o'tishi uchun o'tish joyini (nuqta chiziqli rasmda) qo'yganingizga ishonch hosil qiling!

PCBning o'zi va uning dizayni haqida bir oz. Yuqorida aytib o'tilganidek, taxta bir tomonlama. Hozircha men lazer bilan dazmollash texnologiyasi yordamida tayyorlangan 2 nusxani tekshirdim (biri siyoh kartonidan fotografik qog'ozga, ikkinchisi o'z-o'zidan yopishqoq). agar xohlasangiz, hammasi amalga oshishi kerak ;-) Agar siz fotografik usuldan foydalanish haqida o'ylasangiz, zo'r! O'tish chiziqlari "taqiqlangan zonalar" va standart 16-pinli halqalarni (GAME-PORT dan barlar) foydalanishni hisobga olgan holda ajratiladi, hatto bitta o'ta qatorga ulangan bo'lsa ham. Ferrit bo'g'iqlari bo'lmasa (men 286 ta eski anakartlardan yoki yonib ketgan monitorlardan foydalanaman), siz o'tish moslamalarini xavfsiz qo'yishingiz mumkin. Panelni barcha chiplar ostiga qo'yishingizni maslahat beraman, shunda keyinchalik taxtani maydalash shart emas. HL6 indikatoriga kalitlardan 2 ta o'tish moslamasini unutmang.

TTL / CMOS mantig'ini tekshirish interfeysi shunday ko'rinadi, iloji boricha sizga nima bo'lganini aytib berishga harakat qilaman.

Umuman olganda, taymerda taqqoslash registri mavjud OCR ** va taymerdagi qiymat taqqoslash registrining qiymatiga mos kelganda OCR ** 2 narsa bo'lishi mumkin:

  • To'xtatish
  • Tashqi taqqoslash pinining holatini o'zgartirish OK **

Endi biz sozlashimiz mumkin PWM hisoblagich qiymatni hisobga olganda OCR ** biz tanlagan oyog'idagi kuchlanish OK **taymer oxirigacha sanab va hisoblashni boshlaganda, avval kuchlanishni 0 dan 5 gacha o'zgartiramiz, chiqishda to'rtburchaklar pulslar bo'ladi.

3 ta ish rejimi mavjudPWM

STS(o'yinda qayta o'rnatish) - Buni chaqirish mumkin CHIM taymer qiymatni hisobga olganda puls-chastotali simulyatsiya qilingan signal OCR ** qiymatni o'zgartiradi va o'zgartiradi OK **aksincha. Shunday qilib, ish aylanishi PWM har doim bir xil.

Bu aniq davrlarni hisoblash yoki ma'lum vaqtdan keyin uzilishlarni yaratish kerak bo'lganda ishlatiladi.

Tez PWM(tez PWM) - hisoblagich 0 dan 255 gacha sanaladi, shundan so'ng u 0 ga qaytariladi.

Taymer qiymati xuddi shunday bo'lganda OCR ** mos keladigan chiqish 0 ga qaytariladi, nollanganda 1 ga o'rnatiladi.

Ko'pincha odatdagidek ishlatiladi PWM.

To'g'ri PWM(Aniq fazali PWM) - bu rejimda hisoblagich 0 dan 255 gacha sanaladi va keyin nolga qaytadi. Birinchi o'yinda OCR ** chiqish 0 ga qaytariladi, 2 ta o'yinda (hisoblagich orqaga qaytganda) 1 o'rnatiladi.

Ular vazifa aylanishi o'zgarganda faza adashmasligi uchun ishlatiladi.



Agar biz chiqish bilan ishlashni xohlasak OC1A bitlarni joylashtiring COM1A1 COM1A0
Odatda "/" OR degan ma'noni anglatadi. TCNT1= OCR1A uchun PWM chekinish to'g'risida OC1A

Taymer / hisoblagichning ishlash tartibi- taymer / hisoblagichning ish rejimi.

Yuqori- chiqish qiymati almashtiriladigan TCNT1 qiymati OK **.

TOV1 bayrog'i yoqilgan- GIFR registr biti qanday qiymatlarda o'rnatiladi

Biz oxirgi jadvaldan kerakli rejimni tanlaymiz, qaramang Yuqori. 2 ta jadvaldan oxirgi 2 variantdan birini tanlang. Faqat registrlarda kerakli bitlarni tartibga solish kifoya.

#F_CPU 8000000ULni belgilang #qo'shing #qo'shing int main () (DDRD = 0xFF; OCR1A = 0xC0; // Bu qiymat bilan solishtiring OCR1B = 0x40; // PWM va taymer sozlamalari TCCR1A | = (1<CS10 1 -ni o'rnating, u taymer chastotasini qanday o'rnatish haqida MK chastotasi bilan hisoblaydi

AVR 8-bitli mikrokontrollerlar uchun eng yaxshi Basic-ga o'xshash til kompilyatorlaridan biri.

FastAVR ishlab chiqish muhiti qulay, puxta o'ylangan interfeys bilan tavsiflanadi va unga muharrir, montajchi, kompilyator va mikrokontroller dasturchisi kiradi. Dasturda dasturlarni tuzish va disk raskadrovka jarayonini osonlashtirish uchun mo'ljallangan buyruqlarni ajratish, do'stona interfeys va boshqa ko'plab echimlar mavjud. FastAVR o'n olti bitli emas, sakkiz bitli manzilni ishlatadi va juda ixcham kodni yaratish orqali boshqa kompilyatorlar bilan taqqoslaydi (ayniqsa, 256 baytdan kam RAMga ega bo'lgan kontrollerlar uchun). Bundan tashqari, dastur LCD uchun belgilar generatori, taymerlar kalkulyatori, terminalning qo'shimcha qo'shimcha funktsiyalariga ega. AVR qo'llab -quvvatlanadigan mikrokontroller qurilmalari ro'yxatiga quyidagilar kiradi: 2313, 2323, 2333, 4433, 8515, 8535, ATiny13, ATiny26, ATmega163, Atmega8, Atmega16, Atmega32, ATmega64, ATmega128 va boshqalar.

FastAVR-da ishlatiladigan til qo'shimcha foydali funktsiyalar (I2C, 1-simli, LCD va boshqalar) bilan sezilarli darajada yaxshilangan tanish asosiy buyruqlardan iborat. Tuzuvchi dasturlarning o'qilishini yaxshilash uchun tuzilgan dasturlashni qo'llab -quvvatlaydi. Bu dastur faol muharrir oynasida joylashgan dasturni bepul Atmel assambleyasi (dasturlar to'plamiga kiritilgan) yordamida standart AVR yig'ish kodiga yig'adi. Kompilyatsiya natijasida va manba matnida xatolar bo'lmasa, * .asm kengaytmasi bo'lgan fayl yaratiladi. Dasturlash muhiti ishlab chiqarilgan kodni montaj tilida chiqaradi, bu tajribali ishlab chiquvchilar uchun foydalidir.

FastAVR ketma-ket yoki parallel AVR tekshirgichlari uchun amalda mavjud bo'lgan elektron dasturchilarning har qandayidan foydalanishi mumkin. Dasturning manba kodi bu dasturiy ta'minot o'rnatilgan muharririda ramzlar ko'rinishidagi oddiy matn kabi yoziladi. Dastlabki matnni ko'rsatish bilan bir qatorda FastAVR muharriri dasturni mustaqil ravishda tuzatadi, buyruqlar, o'zgaruvchilar va boshqa ma'lumotlarni rang bilan ajratib ko'rsatadi. Shuningdek, u matn bloklarini tekislash qobiliyatini qo'llab -quvvatlaydi. Dastur kodini har qanday odatiy muharrirda ko'rish va tahrir qilish mumkin. Shunga qaramay, dasturni yozishda FastAVR sintaksisi tomonidan o'rnatilgan bir qator qoidalarga amal qilish kerak. Masalan, har bir dasturda kompilyator ishlatilgan boshqaruvchining turini, soat tezligini va dasturlar to'plamining hajmini ko'rsatishi kerak. Bunday maxsus buyruqlar (metadirektiflar) montaj kodiga aylantirilmaydi.

AVR mikrokontrollerlar oilasi ma'lumotlar va kodlarni xotiraning turli sohalarida saqlaganligi sababli, FastAVR dasturi bilan ishlashda ishlab chiquvchilar ma'lumotlar qaysi xotira joyida joylashganligini aniqlab olishlari kerak. Tuzuvchi dastur kodini avtomatik ravishda joylashtiradi.

FastAVR dasturi Sloveniyadan Bojan Ivancich tomonidan yaratilgan va MicroDESIGN mahsulotidir. Afsuski, muallif o'z loyihasidan voz kechdi, uning sayti ishlamayapti va qo'llab -quvvatlash telefonlari javob bermayapti. Ilovaning o'zi anchadan beri yangilanmagan va natijada kompilyator Atmel kontrollerlarining so'nggi modellarini qo'llab -quvvatlamaydi.

FastAVR dasturi to'langan. Ro'yxatdan o'tish kodini kiritmasdan, ishlab chiqish muhiti faqat demo rejimida ishga tushiriladi, bu esa sezilarli cheklovlarga ega. Hozirda ilovani quyidagi havoladan yuklab olish mumkin. Taqdim etilgan yig'ilishga dasturning so'nggi ishchi versiyasi, ingliz tilidagi yordam fayllari, misollar kiradi.

Bu mahsulot ingliz tilida yozilgan. Buning uchun ruslashtiruvchi yo'q.

FastAVR Microsoft Windows ostida ishlaydi. Dastur 98SE, NT4, 2000 va XP operatsion tizimlarida to'g'ri ishlaydi.

Ushbu qurilma - Attiny fusebit doktori - Atmel Tiny mikrokontrollerlarining Fuse -bit konfiguratsiyasini (zavod sozlamalari, texnik tavsifga muvofiq) qayta tiklashga imkon beradi. Yuqori kuchlanishli ketma -ket dasturlash interfeysi (HVSP) bo'lgan barcha mikrokontrollerlarni qo'llab -quvvatlaydi:

  • 8 boshli paketda: ,,;
  • 14 boshli to'plamda:,;
  • maxsus adapteri bo'lgan 20 ta qo'rg'oshinli paketda:,.

Agar sizga ATtiny mikrokontrolerlarining sug'urta bit konfiguratsiyasini tiklash uchun qurilma kerak bo'lsa, loyihani ko'rib chiqing:.

Qurilmani ishlab chiqarish juda oddiy va qimmat komponentlarni o'z ichiga olmaydi. Asos mikrokontroller, shuningdek bir nechta rezistorlar va tranzistorlar (,), +5 V kuchlanish regulyatori (7805T). Ta'kidlash joizki, qurilmani quvvatlantirish uchun +12 V chiqish zo'riqishida barqarorlashtirilgan quvvat manbai talab qilinadi (bu yuqori voltli dasturlash rejimini ishga tushirish uchun muhim).

Mikrokontrollerning sug'urta-bitlarini dasturlashda Shuni yodda tutish kerakki, ichki 4 MGtsli osilator 8 ga bo'linmasdan ishlatiladi. Va siz "tez ko'tariladigan quvvat" opsiyasini yoqishingiz mumkin.

Sxematik diagramma

Bosilgan elektron karta

O'rnatilgan komponentlar bilan taxta

Yuqori voltli ketma-ket dasturlash rejimida mikrokontroller pimlarini ulash

Mikrokontroller (bemor) konfiguratsiyasini tiklash Ishga tushirish tugmasini bosish bilan boshlanadi. Vaziyatni ko'rsatish uchun ikkita LED mavjud, ularning holatlari quyidagilarni bildiradi:

  • yashil LED yonadi- sug'urta bit konfiguratsiyasi tiklandi. Agar Lock-bit o'rnatilgan bo'lsa, u holda faqat joriy bit konfiguratsiyasining zavod parametrlariga mosligi tekshiriladi va agar u mos kelsa, yashil LED yonadi;
  • qizil LED yonadi- mikrokontroller imzosini o'qishdagi xato: o'qish mumkin emas, rozetkada mikrokontroller yo'q yoki imzo qurilma ma'lumotlar bazasidagi mos kelmaydi;
  • yashil LED yonadi- imzo to'g'ri, sug'urta bitlarining konfiguratsiyasi noto'g'ri. Qulf bitlari o'rnatildi, Flash o'chirilishi kerak;
  • miltillovchi qizil LED- imzo to'g'ri, qulf bitlari o'rnatilmagan, lekin negadir sug'urta bitlarini yozib bo'lmaydi, 10 urinishdan keyin tekshirish muvaffaqiyatsiz bo'ladi.

Sug'urta bitlarini tiklash qurilmasi yuqori voltli ketma -ket dasturlash protokoliga muvofiq ishlaydi. Dastlab, jarayon boshlanganda, tiklangan mikrokontroller (bemor) yuqori voltli xotira dasturlash rejimiga o'tadi, keyin chip imzosi o'qiladi va qurilmaning u bilan ishlash qobiliyati tekshiriladi. Shundan so'ng, agar foydalanuvchi ko'rsatgan bo'lsa, o'chirish operatsiyasi amalga oshiriladi. Keyingi qadam-qulf bitlarini o'qish va agar ular o'rnatilmagan bo'lsa, "bemor" mikrokontroller-bemor modeliga mos keladigan sug'urta bitlarining yangi konfiguratsiyasini oladi. Shundan so'ng, Fuse-bit sozlamalari (tekshirish) tekshiriladi va agar sinov muvaffaqiyatli bo'lsa, qurilma o'z ishini tugatadi. Aks holda, qurilma yozish-tekshirish Fuse-bit tsiklini 10 marta takrorlaydi.

Kengashda ikkita chip (o'tish) "chip o'chirish" va "noma'lum imzo" mavjud:

  • chip o'chirish- chipning barcha flesh-xotirasini o'chirish imkoniyatini beradi. Agar qulf bitlari o'rnatilgan bo'lsa, bu kerak, ya'ni. qulflash bitlari tozalanmaguncha sug'urta bitlarini tuzatishning iloji yo'q. Jumper -ni o'chirishga ruxsat beriladi.
  • noma'lum imzo- noma'lum chip imzosi - juda kam uchraydigan hodisa, lekin shunga qaramay, chip o'z imzosini o'chirib tashlagan. Imzo, kalibrlash baytlari va boshqa ma'lumotlar chip tuzilmasida doimiy saqlanishi mumkin emas, dasturlash paytida elektr ta'minoti beqaror bo'lsa, ular tasodifan shikastlanishi (o'chirilishi) mumkin. Odatda, bunday hollarda, olingan imzo qiymatlari FF FF FF, lekin chip yaxshi ishlaydi, Flash xotirani o'qish va yozish mumkin. Agar o'qilgan imzo qurilmaning biron bir ma'lumotlar bazasiga (FF FF FF va 00 00 00 qiymatlarini o'z ichiga olgan holda) mos kelmasa, bu o'tish moslamasi yoqilganda, qurilma universal sug'urta bitli konfiguratsiyasini yozadi. Umumjahon konfiguratsiya shuni ko'rsatadiki, provayder qayta tiklanadi (SPIEN bitini yoqadi) va mikrokontroldagi Reset pinining ishlashi (RSTDISBL bitini o'chirish), osilator parametrlariga ta'sir qilmaydi. Bunday harakatlar yordamida mikrokontroller yana tiklanishi mumkin bo'ladi, lekin an'anaviy SPI dasturchisi yordamida.

Diqqat! ATtiny11 yoki ATtiny15 mikrokontrolderlari bilan "noma'lum imzo" variantini ishlatmang.

Ilova:

  1. Loyiha fayllari (Eagle 5.4.0 formati), sxematik diagramma va bosilgan elektron karta chizig'i (pdf, png), .hex fayli va .bin fayli mikrokontroller dasturlash uchun -.
  2. Mikrokontroller uchun yangilangan dasturiy ta'minot (2 -versiya): manba kodi (BASCOM v.1.11.9.0), .hex fayli va .bin fayli mikrokontroller dasturlash uchun -.

Ko'pincha, PWM yordamida har qanday qurilmaning boshqaruvini (akkor lampochka, dvigatel, isitish elementi yoki oddiy LED) ishlatish zarur bo'ladi.

Ehtimol, bu nima ekanligini va PWM boshqaruvining go'zalligi nima ekanligini tushuntirishga hojat yo'q, Internetda juda ko'p ma'lumotlar mavjud va men bu mavzuni yaxshiroq chaynashga qodir emasman. Shuning uchun, darhol ishga kirishamiz, ya'ni Bascom-AVR asboblari yordamida Attiny2313-da PWM-ni ishga tushiramiz.

AVR mikrokontrolleridagi PWM taymer-hisoblagichlarda ishlaydi, Tiny2313 mikrokontrolderlarida atigi 2 ta taymer bor: 8 bitli taymer0 255 gacha va 16 bitli taymer1 65535 gacha sanashga qodir. Har taymer ikkita PWM kanalini boshqaradi, shuning uchun hamma narsa mumkin. 4 ta PWM kanaliga ega bo'lgan qo'shimcha qurilmalarda.

PWM kanallari soni va har bir kanalning bit kengligi haqidagi ma'lumotlarni mikrokontroldagi ma'lumotlar sahifasida topish mumkin.

Shunday qilib, Attiny2313 bortida Timer0 tomonidan quvvatlanadigan ikkita 8-bitli PWM kanallari bor va Timer1 taymeri tomonidan boshqariladigan yana ikkita kanal 8 dan 10 bitgacha programlanadigan bit kengligiga ega. Ma'lumotlar varag'ida bu oyoqlar quyidagicha imzolanadi:

Bascom -da PWM yaratish uchun Timer1 -ni sozlash uchun quyidagi qatorni yozing:

Konfiguratsiya taymeri1 = Pwm, Pwm = 8, Pwm = Tozalash, B Pwm = Tozalash, Old daraja = 64

Pwm = 8 PWM bit kengligi tanlangan, Timer1 uchun, yuqorida yozilganidek, u ham Pwm = 9 yoki Pwm = 10 bo'lishi mumkin.

Taqqoslang A / B Pwm = Tozalash / Tozalash Bu erda biz har bir PWM kanali uchun faol holatni sozlaymiz (A va B).

Prescale = 64 - taymerni to'ldirish chastotasini oldindan bo'linishi uchun javobgar bo'lgan tanish taymer konfiguratsiya chizig'i, bu holda bo'luvchi PWM chastotasini o'rnatadi. Biz o'z xohishimiz bilan Prescale = 1 | 8 | 64 | 256 | 1024 ni o'zgartirishimiz mumkin


Ishlab chiqarilgan signalning ish aylanishi OCR1A va OCR1B taqqoslash registrlariga yozadigan qiymatimiz bilan belgilanadi (bizda bitta taymerda ikkita PWM kanali bor, bu erda A va B kanallari uchun bitta registr). Hisob registrining qiymati doimiy ravishda bu registrlardagi qiymatlar bilan taqqoslanadi (u erda taymerdan nusxa ko'chiriladi), ular mos kelganda, oyog'i m faol holatga o'tadi va hisob registri hisoblashni davom ettiradi. uning maksimal qiymati. Maksimal hisoblagandan so'ng, taymer teskari yo'nalishda hisoblashni boshlaydi va hisoblash registri va taqqoslash registri qiymatlari yana bir -biriga to'g'ri kelganda, mikrokontroller oyog'ida teskari o'tish sodir bo'ladi (quyidagi rasmga qarang) )



Biz uchun OCR1A va OCR1B taqqoslash registrlari shunchaki o'zgaruvchilar bo'lib, biz ularga qandaydir qiymat qo'yishimiz mumkin. Masalan, bu kabi:


OCR1A = 100
OCR1B = 150


Qulaylik uchun Bascom bu registrlar uchun boshqa nom beradi: PWM1A va PWM1B, shuning uchun oldingi satrlar quyidagilarga teng bo'ladi:


PWM1A = 100
PWM1B = 150

Keling, Taqqoslash / Tushirish faol holat konfiguratsiyasi taqqoslash registrining qiymatiga qarab PWM chiqishida sodir bo'layotgan narsalarga qanday ta'sir qilishini ko'rib chiqaylik.

Chiqish A Pwm = Clear Down ni taqqoslash sifatida konfiguratsiya qilinganida, chiqishning faol holati yuqori bo'ladi va OCR (PWM) registrining qiymati oshgani sayin, bu oyoqdagi mutanosib kuchlanish kuchayadi. Aksincha, agar chiqish Pwm solishtiring = Tozalash kabi tuzilgan bo'lsa, hamma narsa ro'y beradi. Bularning barchasi quyidagi rasmda yaxshi tasvirlangan.



Bu taqqoslash registrlarining qiymatlari biz tanlagan PWM kanalining qaysi bit kengligiga bog'liq. PWM = 8 (8-bitli PWM) bilan 0 dan 255 gacha qiymat mumkin; PWM = 9 da 0 dan 511 gacha; PWM = 10 bilan 0 dan 1023. Bu erda menimcha hamma narsa aniq.


Endi kichik bir misol: diagrammada ko'rsatilganidek, LEDlarni mikrokontrollerga ulang (quvvat manbai diagrammada ko'rsatilmagan)


Keling, kichik dastur yozaylik:


$ billur = 4000000

Konfiguratsiya taymeri1 = Pwm, Pwm = 9, Pwm = Tushirish, B Pwm = Clear Up, Precale = 8 ni solishtiring.
PORTB.3 = Chiqish
PORTB.4 = Chiqish

Incr Pwm1a "OCR1A taqqoslash registri qiymatini muammosiz oshiring
Incr Pwm1b "OCR1B taqqoslash registri qiymatini muammosiz oshiring

Kutish 20 "kechikish qo'shing

Loop

Oxiri

Dasturni tekshirgichga kompilyatsiya qilib, yondirgandan so'ng, LEDlarning biri (D1) ravshanlikka ega bo'ladi, ikkinchisi (D2) muammosiz o'chadi.


Agar biz hozir PWM chiqishida osiloskopni qo'ysak, u holda o'zgaruvchan ish tsikli bilan tasvirni ko'rishimiz mumkin (OC1Ada ko'k signal, OC1Bda qizil):


Taymer 0 konfiguratsiyasi PWM ishlab chiqarish deyarli bir xil, faqat taymer0-8 bitli taymer, shuning uchun bu taymer tomonidan ishlab chiqarilgan PWM har doim 8 bitli kenglikka ega bo'ladi.

Config Timer0 = Pwm, A Pwm ni solishtiring = Tozalash, B Pwm = Tushirish, Prescale = 64



Endi LEDlar bilan o'xshash misol, lekin hozir biz Timer0 yordamida pwm hosil qilamiz:


$ regfile = "attiny2313.dat"
$ billur = 4000000

Config Timer0 = Pwm, Pwm bilan solishtiring = Tozalash, B Pwm = Tozalash, Prescale = 8
PORTB.2 = Chiqish
PORTD.5 ​​= Chiqish

Incr Pwm0a " OCR0A registrining qiymatini muammosiz oshiring
Incr Pwm0b ​​" OCR0B registrining qiymatini muammosiz oshiring

Kutish 20 "kechikish qo'shing

Loop

Oxiri

Diagrammada ko'rsatilganidek, LEDlarni Timer0 PWM chiqishiga ulang:

Bu erda hamma narsa bir xil: birinchi LED (D1) asta -sekin yorqinlikka ega bo'ladi, ikkinchisi (D2) muammosiz o'chadi.


PWM ishlab chiqarish chastotasini hisoblash

Agar siz PWM ishlab chiqarish chastotasini bilmoqchi bo'lsangiz, unda buni qilish qiyin emas. Quyidagi formulaga qarang:

PWM chastotasi = (kvarts chastotasi / oldindan hisoblagich) / (registr registri o'lchami * 2)

Masalan, bir nechta qiymatlarni sanaymiz:

1. Kvarts chastotasi = 4000000 Hz, oldindan hisoblagich = 64, PWM kengligi 10 bit => registr registri o'lchami = 1024

PWM chastotasi = (4000000/64) / (1024 * 2) = 122 Gts

2. Kvarts chastotasi = 8 000 000 Gts, oldindan hisoblagich = 8, PWM kengligi 9 bit => registr registri o'lchami = 512

PWM chastotasi = (8000000/8) / (512 * 2) = 976,56 Gts

3. Kvarts chastotasi 16000000 Gts, oldindan hisoblagich = 1, PWM kengligi 8 bit => hisoblash registrining o'lchami = 256

PWM chastotasi = (16000000/1) / (256 * 2) = 31250 Gts

Maqola sizga yoqdimi? Do'stlar bilan bo'lishish uchun: