• AVR mikrodenetleyicilerinin cihazı ve programlanması. Mikrodenetleyici ve nasıl yenileceği. Bellek yongası nedir ve yongaların nasıl programlanacağı

    Bu yaklaşıma kategorik olarak karşıyım. Genellikle her şey biter - ya hiçbir şey olmadan ya da yardım ricasıyla tıkanmış forumlar. Birisine yardım edilse bile, o zaman %90'da elektronik sitelerinde bir daha asla çıkmayacaktır. Kalan %10'luk kısımda ise forumları yalvarışlarla doldurmaya devam ediyor, önce tekmeleyecekler, sonra üzerine çamur dökecekler. Bu %10'luk dilimin %9'u elenir. O zaman iki seçenek vardır: ya aptal bir kafaya gelir ve yine de başlangıca gider ya da özellikle ihmal edilmiş versiyonlarda, kaderi, nasıl çalıştığı hakkında tek bir düşünce olmadan başkalarının tasarımlarını kopyalamaktır. İkincisinden arduinolar sıklıkla doğar.

    Bence sıfırdan başlamanın yolu, bir mikrodenetleyici ise çevre birimlerini ve özelliklerini incelemektir. Önce bacakların nasıl sallanacağını, ardından zamanlayıcıları, ardından arayüzleri ele almak daha doğrudur. Ve ancak o zaman FAT'inizi yükseltmeye çalışın. Evet, hızlı değil, evet, zaman ve çaba gerektirecek, ancak uygulama gösteriyor ki, bu yolu ne kadar kısaltmaya çalışırsanız çalışın, çözülmesi gereken sorunlar yine de ortaya çıkacak ve bu temel olmadan çok daha fazla zaman geçireceksiniz.

    Sadece sıcak ve yumuşak karıştırmayın. Öncelikle tüm kuralların istisnaları var, daha önce ellerinde mikrodenetleyici tutmamış ama çok kısa sürede deneyimli radyo amatörlerini geride bırakabilen insanları şahsen gördüm, onları hesaba katmıyoruz. İkincisi, şemaları kopyalayarak başlayan ve hemen anlayan kişilerle karşılaştım, ancak bu aynı zamanda kuralın bir istisnasıdır. Üçüncüsü, arduinolar arasında deneyimli programcılar var, bu sadece bir platform, ancak bu daha çok bir istisna.

    Genel kitleden bahsedecek olursak, o zaman işler tam da başta anlattığım gibidir: Temel konularla ilgilenme isteksizliği, en iyi ihtimalle, bu konulara geri dönmeniz gereken anı geciktirir. En kötü durumda, hızla bilginizin tavanına varırsınız ve sorunlarınız için her zaman başka birini suçlarsınız.

    2. Bir sorunu çözmeden önce, "direnci lehimlemek" için saçma bir noktaya kadar ezin, yardımcı olur, kontrol edilir. Küçük görevlerin çözülmesi çok daha kolaydır. Büyük bir görev bir dizi küçük eyleme bölündüğünde, geriye kalan tek şey onları tamamlamaktır. Size çılgınca gelse de başka bir iyi tavsiye verebilirim - bir defter alın ve yapacağınız her şeyi ona yazın. Hatırlayacağımı düşünüyorsun ama hayır. Diyelim ki bugün keyfim yerinde ve ücreti nasıl tahsil edeceğimi düşünüyorum. Eylem planını yazın: gidin bir direnç satın alın, kabloları hazırlayın, ekranı monte edin. Sonra her şeyi unutursun, bir defter açarsın ve bakarsın - evet, bugün hava kesip biçmek, ben bir binek yapacağım. Veya tahtayı topluyorsunuz ve son bileşeni lehimlemek için zaten kaldı, ancak dirençlerin bittiği orada değildi, bu yüzden lehimlemeden önce yazardım, sonra hatırladım.

    3. En azından ilk aşamalarda kod oluşturucular, standart dışı özellikler ve diğer basitleştiriciler kullanmayın. Kişisel örneğimi verebilirim. AVR'yi aktif olarak kullanırken, CAVR kodojenini kullandım. Herkes onun kaka olduğunu söylese de bana tamamen uydu. Çanlar sürekli çaldı, kütüphanelerde, sözdiziminde, taşımada sorunlar vardı ama reddetmek zordu. Nasıl çalıştığını anlamadım, sadece kutuları nerede ve nasıl işaretleyeceğimi biliyordum.

    STM32'nin gelişiyle tabutuma bir kazık çakıldı, üzerlerine sürünmek gerekiyordu ve ardından sorunlar ortaya çıktı. Hafifçe söylemek gerekirse sorunlar, aslında mikrodenetleyicilerde ve C dilinde sıfırdan ustalaşmam gerekiyordu. Geçmişteki hataları bir daha tekrarlamadım. Bunun bir kereden fazla işe yaradığını söylemeliyim. O zamandan beri diğer platformlarla çalışma şansım oldu ve hiçbir zorluk yaşamadım, yaklaşım kendini haklı çıkarıyor.

    Tüm geliştiriciler ve basitleştiricilerle ilgili olarak, çok iyi bir karşılaştırma vardı, raylar üzerinde dönen tekerlekli sandalyeler gibiler, gidip eğlenebilirsiniz, ancak götürüldüğünüz yere kalkamazsınız - oraya varacaksınız.

    4. C dilini öğrenin. Oh, ne sıklıkla acemi radyo amatörlerinin şişkayı iyi bildikleriyle övündüklerini duyuyorum. Benim için bu yemek haline geldi, bu tür muhataplara danışmayı her zaman severim. Genellikle dili hiç bilmedikleri hemen ortaya çıkar. Görünen basitliğe rağmen, onu gerçekten iyi tanıyacak çok fazla insanla tanışmadığımı söyleyebilirim. Temel olarak, herkes onu sorunları çözmek için gerektiği kadar tanıyor.

    Ancak bence sorun şu ki, olasılıkları bilmeden kendinizi ciddi şekilde sınırlandırıyorsunuz. Bir yanda daha güçlü donanım gerektiren optimal çözümler değil, diğer yanda bakımı zor olan okunamayan kod. Bence kodun okunabilirliği ve sürdürülebilirliği en önemli yerlerden biri ve C dilinin tüm özelliklerini kullanmadan bunun nasıl başarılabileceğini hayal etmek benim için zor.

    Yeni başlayanların çoğu dili öğrenmekten çekinir, bu nedenle herkes gibi değilseniz, hemen diğer yeni başlayanlardan iki adım daha yüksek olursunuz. Ayrıca dili nerede öğreneceğinizin de hiçbir önemi yoktur. Mikrodenetleyici bence buna pek uygun değil. Bir çeşit Visual studio veya Qt Creator koymak ve sorunları komut satırında çözmek çok daha kolay.

    Mülakatlar sırasında verilen dil testlerini çalışmak da iyi bir yardımcı olacaktır. Eğer kazarsan, birçok yeni şey öğrenebilirsin.

    5. Assembler öğrenmek? Ondan korkmak ve putlaştırmak gerekli değildir. Assembler'da bir program yazabilirseniz hemen bir mikrodenetleyici gurusu olacağınızı düşünmenize gerek yok, nedense bu yaygın bir yanılgıdır. Her şeyden önce, bir araçtır. Kullanmayı düşünmüyorsanız bile, yine de en az birkaç program yazmanızı şiddetle tavsiye ederim. Bu, mikrodenetleyicinin çalışmasını ve programların iç yapısını anlamayı büyük ölçüde kolaylaştıracaktır.

    6. Veri sayfasını okuyun. Birçok geliştirici bunu ihmal ediyor. Veri sayfasını inceleyerek, bu geliştiricilerin iki adım üzerinde olacaksınız. Bunu yapmak son derece yararlıdır, öncelikle bu kaynaktır, hangi siteleri okursanız okuyun, çoğu durumda veri sayfasındaki bilgileri genellikle hatalar ve yetersiz ifadelerle tekrar ederler. Ek olarak, şu anda düşünmediğiniz ancak gelecekte işinize yarayabilecek bilgiler olabilir. Bir tür hata ortaya çıkabilir ve evet, bunun veri sayfasında söylendiğini hatırlayacaksınız. Amacınız iyi bir geliştirici olmaksa, bu aşamadan kaçınılamaz, veri sayfalarını okumak zorunda kalacaksınız, bunu ne kadar erken yapmaya başlarsanız, büyüme o kadar hızlı olacaktır.

    7. Çoğu zaman insanlar Rusça bir veri sayfası göndermek ister. Datashit - gerçek olarak algılanması gereken şey budur, en doğru bilgi. Orada bile hatalar göz ardı edilmez. Buna çevirmenin hataları da eklenirse o da bir insandır, belki bilerek bile değil, sadece mühürlenmek içindir. Ya kendi vizyonu var, bir şeyi gözden kaçırabilir, ona göre önemli değil ama belki de sizin için son derece önemli. Çok popüler olmayan bileşenler için belgeler bulmanız gerektiğinde durum özellikle komik hale gelir.

    Kanımca, bu sorunların tüm katmanını önceden ortadan kaldırmak, daha sonra yakalamaktan çok daha kolaydır. Bu nedenle, kategorik olarak çevirilere karşıyım, tek gerçek tavsiye, orijinaldeki veri sayfalarını ve kılavuzları okumak için İngilizce çalışmaktır. Dil seviyeniz sıfır bile olsa çevirmen programları yardımıyla bir cümlenin anlamını anlayabilirsiniz.

    Bir deney yaptım: bir öğrenci, veri sayfası ve Google çevirmeni mevcuttu. Deney No. 1: öğrenciye bir veri sayfası verildi ve gerekli değerleri bağımsız olarak bulma görevi verildi, sonuç "evet, nasıl yapabilirim", "evet, İngilizce bilmiyorum", "Bulmadım" hiçbir şey / anlamadım” denemediğini söyleyen tipik ifadeler. Deney No. 2: Aynı öğrenciye aynı veri sayfası ve aynı görev verildi, tek fark onun yanına oturmamdı. Sonuç - 5 dakika sonra, gerekli tüm değerleri, kesinlikle benim katılımım olmadan, İngilizce bilgisi olmadan kendisi buldu.

    8. Tekerleği yeniden icat edin.Örneğin, yeni bir şey inceliyorsunuz, diyelim ki bir transistör, Horowitz Amca kitabının sayfalarından otoriter bir şekilde transistörün güçlendiğini belirtiyor, her zaman - İNANMAYIN. Elimize bir transistör alıp devrede açıyoruz ve durumun gerçekten böyle olduğundan emin oluyoruz. Kitaplarda anlatılmayan bir dizi sorun ve incelik var. Onları ancak elinize aldığınızda ve toplamaya çalıştığınızda hissedebilirsiniz. Aynı zamanda bir sürü geçen bilgi edinir, incelikleri öğreniriz. Ayrıca pratik olmayan herhangi bir teori çok daha hızlı unutulacaktır.

    İlk aşamada, bir yöntem bana çok yardımcı oldu - önce devreyi kurup nasıl çalıştığını görün ve sonra kitapta bir gerekçe bulmaya çalışın. Aynısı yazılım kısmında da var, hazır bir program olduğunda onu anlamak ve hangisinin neyden sorumlu olduğu kod parçalarını ilişkilendirmek daha kolay.

    İzin verilenin ötesine geçmek, daha fazla / daha az voltaj uygulamak, daha fazla / daha az direnç yapmak ve devredeki değişiklikleri izlemek de önemlidir. Bütün bunlar beyinde kalır ve gelecekte faydalı olacaktır. Evet, bu bileşenlerin tüketimi ile doludur, ancak bunun kaçınılmaz olduğunu düşünüyorum. İlk başta oturdum ve her şeyi ateşledim ama şimdi, şu veya bu mezhep koymadan önce, o eğlenceli zamanları ve yanlış mezhep koymanın sonuçlarını hep hatırlıyorum.

    9. Geliştiricilerin yerinde ben olsam bunu nasıl yapardım? Daha iyisini yapabilir miyim? Kendinize her seferinde bu soruları sorun, öğrenmede ilerlemenize çok yardımcı olur. Örneğin, 1wire, i2c, spi, uart arayüzlerini inceleyin ve sonra nasıl farklı olduklarını düşünün, daha iyi yapılabilir miydi, bu neden her şeyin böyle olduğunu ve başka türlü olmadığını anlamanıza yardımcı olacaktır. Ayrıca ne zaman ve hangisinin uygulanmasının daha iyi olduğunun da farkında olacaksınız.

    10. Teknolojinin ötesine geçin. Bu tavsiyenin çok ince bir çizgisi olması önemlidir. Hayatta öyle bir aşama vardı ki, her kapıdan “FPGA'yı bilmek gerekir”, “ama FPGA'da yapılabilir” sesleri duyuluyordu. Resmi olarak, FPGA'ları çalışmak gibi bir hedefim yoktu, ancak geçmek imkansızdı. Bu konuya alışmak için biraz zaman verildi. Zaman boşuna geçmedi, mikrodenetleyicilerin iç yapısı ile ilgili bir takım sorularım oldu, pilelerle konuştuktan sonra cevaplarını aldım. Pek çok benzer örnek var, şu ya da bu şekilde edindiğim tüm bilgiler er ya da geç işe yaradı. Tek bir işe yaramaz örneğim yok.

    Ama söylendiği gibi, teknoloji konusunun ince bir çizgisi var. Her şeyi üstlenmek zorunda değilsin. Elektronikte birçok yön vardır. Belki analogu seviyorsunuz, belki dijitali, belki de bir güç kaynağı uzmanısınız. Net değilse, o zaman kendinizi her yerde deneyin, ancak uygulama, ilk başta belirli bir şeye konsantre olmanın daha iyi olduğunu gösterir. Birkaç yöne basmanız gerekse bile, bunu adım adım yapmak daha iyidir, önce bir şeyi itin.

    11. Acemi bir radyo amatörüne programlamayı veya devre yapmayı daha çok sevdiğini sorarsanız, cevap %99 olasılıkla programlama olacaktır. Aynı zamanda, bu programcılar zamanlarının çoğunu LUT / fotodirençli kartlar üretmek için harcarlar. Sebepler genellikle anlaşılırdır, ancak çoğu zaman tahta yapmak için tahta yapmaktan oluşan bir tür deliliğe dönüşür.

    İnternette, programlamaya giden neredeyse tek yol, bir PCB üreticisi Jedi olmaktır. Ben de bu yoldan geçtim ama her seferinde kendime neden sorusunu soruyorum? Kendime birkaç tahta aldığımdan beri, her durumda, her seferinde ev yapımı tahtalar olmadan nasıl yaşayabileceğimi düşünüyorum. Benim tavsiyem, bir damla bile şüphe varsa, o zaman rahatsız etmemek ve hazır bir hata ayıklama panosu almak daha iyidir ve programlamaya zaman ve para harcamak daha iyi olur.

    12. Bir sonraki tavsiye, özellikle acı verici, gerçekten tartışmak istemiyorum ama yapmalıyım.Çoğu zaman bana yy için xxx ovmanın pahalı olduğunu, nereden daha ucuza alacağınızı söyleyerek yazıyorlar. Bu ortak bir soru gibi görünüyor, ancak genellikle parasızlıkla ilgili bitmeyen şikayetlere dönüştüğü için genellikle hemen geriliyorum. Her zaman bir sorum var: neden beşinci noktayı yırtıp işe gitmiyorum? En azından aynı McDuck'ta, en azından bir şantiye için bir ay dayanın, ancak daha sonra birkaç tahta satın alabilirsiniz, bu da gelecek yıl için yeterli olacaktır. Evet, küçük kasaba ve köylerde iş bulmanın, büyük bir şehre taşınmanın zor olduğunu biliyorum. Uzaktan çalışın, genel olarak dönmeniz gerekir. Şikayet etmenin bir anlamı yok, durumdan bir çıkış yolu var, kim ararsa onu bulur.

    13. Aynı kumbaraya enstrümanla ilgili çok acı bir soru ekleyeceğim. Araç, cihazları olabildiğince çabuk geliştirmenize izin vermelidir. Nedense birçok geliştirici zamanlarına değer vermiyor. Tipik bir örnek, birçok işverenin tasarruf etmeyi sevdiği ucuz terminal sıkmadır. Sorun şu ki, düzgün kıvrılmıyor bile, bu nedenle teller düşüyor. Zaman kaybetmek için sırasıyla bir dizi ek manipülasyon yapmanız gerekir. Ama bildiğiniz gibi, bir aptal üç kat öder, bu nedenle harcanan zaman ve kıvrımın kalitesiz olması nedeniyle kıvırıcının düşük fiyatı kat kat artacaktır.

    Ucuz = kötü, hayır demiyorum - hepsi duruma bağlı. Bir kıvırıcı örneğine geri döneceğim, onu herhangi bir şeyle kıvırdığım bir zaman vardı, bu yüzden sık sık sorunlar ortaya çıktı. Tahtayı başlattığınızda ve çalışmadığında özellikle tatsız, uzun bir hata aramasından sonra, kötü kıvrılmış bir tel nedeniyle bunun bir utanç olduğunu anlıyorsunuz. Normal sıkma ortaya çıktığından beri bu sorunlar olmamıştır. Evet, iç kurbağa vırakladı ve bedeli yüzünden boğuldu, ama bu kararından asla pişman olmadı. Tek söylemek istediğim, normal bir enstrümanla çalıştıktan sonra kesinlikle kötü bir enstrümana dönmek istemiyorum, bunu tartışmak bile istemiyorum. Pratikte görüldüğü gibi, şüpheniz varsa araçlardan tasarruf etmemek daha iyidir - birini test etmeye, incelemeleri, incelemeleri okumaya götürün.

    14. Bir web sitesi başlatın, üzerine her şeyi yazabilirsiniz, tıpkı notlar gibi. Uygulama, işverenlerin onu hala okumadığını, ancak gerçeğin kendisinin büyük bir etkisi olduğunu gösteriyor.

    15. İnce soru: uzmanlaşmış yüksek eğitim gerekli mi?İnsanların kesinlikle hiçbir eğitim almadan çalıştıkları ve deneyim ve bilgilerine dayanarak herhangi bir mezuna ışık tutabilecekleri birkaç vakadan fazlasını biliyorum. Aslında uzmanlık eğitimim yok, bundan rahatsızlık duyar mıyım? Bir dereceye kadar, evet.

    En başta, mikrodenetleyiciler benim için bir hobiyken, sadece seviyemi ölçmek için çeşitli üniversitelerden dönem ödevleri ve diplomalarda çok yardımcı oldum. Üniversitenin adı ne olursa olsun seviyenin genel olarak düşük olduğunu rahatlıkla söyleyebilirim. Böyle bir diploma yazmak için birkaç yıl okumak gerekli değildir. Bunu kendi başınıza çok kısa sürede başarabilirsiniz. Yine de, öğrencilerin 2. veya 3. yılda aldıkları bir konuyu bildikleri ama benim bunu bilmediğim anlar oldu. Tüm bu bilgiler kendi kendine eğitimle telafi edilmiş olsa da, bununla zaman kaybetmemek yine de daha iyi olacaktır.

    Kağıt uğruna üniversite. Zorunlu eğitim gerektiren bir iş teklif ettikleri durumlar da olduğunu söyleyebilirim ve o anda evrak olmaması çok yazık oldu. Ancak genel olarak tarih, çoğu işverenin gazetenizi umursamadığını gösteriyor.

    Bir sonraki nokta genellikle dikkate alınmaz, bu çevredir. Unutmayın ki birlikte okuduğunuz insanlar sizin kuşağınızdır, onlarla çalışmanız mümkündür. Bir sektörde faaliyet gösteren firma sayısı oldukça sınırlıdır. Uygulama, büyük şehirlerde bile herkesin ve herkesin birbirini en ince ayrıntısına kadar bildiğini gösteriyor.

    Diğer bir nokta da olasılıklar. Genellikle üniversitelerin kendi yetenekleri vardır - ekipman, belki bazı bölümler, belki bir tür yurt dışı çalışma programları, en ufak bir fırsat varsa bu kullanılmalıdır. Bir üniversitede hiç umut görmüyorsan, başka bir üniversiteye git, dünya bir üniversite ile bitmiyor.

    Özetlemek gerekirse, tavsiye şudur: En ufak bir fırsat bile varsa, çalışmaya gitmelisiniz, profili takip ettiğinizden emin olun, en azından biraz şans varsa, o zaman her yere tırmanın ve pantolonunuzu arkaya oturtmamalısınız. masanın. Tanıdıklar edinin, aynı zamanda evde pratik yapın, kendinizi geliştirin.

    16. 20, 30, 40, 50 yaşında programlamaya başlamak için çok mu geç? Diğer insanların uygulamaları, yaşın hiç de bir engel olmadığını gösteriyor. Nedense çoğu, gençlerin hırsları nedeniyle yapmak istemedikleri koca bir iş katmanı olduğu gerçeğini hesaba katmıyor. Bu nedenle işverenler onu sürükleyecek olanları almayı tercih ediyor. Bu senin yakalama şansın ve sonra her şey sana bağlı.

    Ve son ipucu. Birçok radyo amatörü asosyal, sinirli ve asabidir - bunu işin ayrıntıları olarak kabul edin. Nezaket ve pozitif saçın, iyi bir insan olun.

    9


    Modern amatör radyo, mikrodenetleyiciler olmadan hayal edilemez ve bu açıktır. Son yıllarda, çeşitli üreticilerin mikrodenetleyicileri, insan faaliyetinin çeşitli alanlarında yaygınlaştı. Genellikle en beklenmedik cihazlarda ve tasarımlarda bulunabilirler. Etrafımızdaki süreçlerin bilgisayarlaşmasına ve otomasyonuna tanık oluyoruz. Gerçek şu ki, programlamanın temelleri hakkında bilgi sahibi olmadan modern rekabetçi cihazlar yaratmak neredeyse imkansız hale geldi ...

    Bu makaleyi okuyorsanız, muhtemelen mikrodenetleyicilerin nasıl çalıştığını anlama arzunuz var ve büyük olasılıkla sorularınız var:

    4. Hangi literatürü incelemeli?

    Bu soruları cevaplamaya çalışalım.

    1. İş için hangi mikrodenetleyici seçilmeli?

    8 bitlik mikrodenetleyiciler, radyo amatörleri arasında çok popülerdir. RESİM Mikroçip Teknolojisi ve AVR Atmel, 16-bit MSP430 TI firmalarının yanı sıra 32 bit mikrodenetleyiciler, mimariler KOL.

    Sanayide, biraz farklı bir şekilde, geniş bir farkla ilk sırada yer alan Renesas Elektronik ikincisinde serbest ölçek, üçüncüde SAMSUNG, sonra gidin Mikroçip Ve TI, sonra diğerleri.
    Popülerlik, fiyat ve mevcudiyet ile belirlenir, teknik bilgilerin mevcudiyeti ve yazılım desteğinin maliyeti önemli bir rol oynar.

    8-bit AVR mikrodenetleyicileri, aileleri inceleyeceğiz ATMEGA 8 ve 16 serisi. Seçim, yine mevcudiyet, birçok amatör gelişimin varlığı ve büyük miktarda eğitim materyali ile belirlendi. Çeşitli yerleşik bileşenlerin varlığı ve bu ailenin işlevselliği.

    2. Seçilen mikrodenetleyiciyi programlamak için hangi geliştirme ortamını kullanmalıyım?

    AVR için çeşitli entegre geliştirme ortamları (IDE, Integrated Development Environment) oluşturulmuştur.
    IDE programcılar tarafından yazılım (SW) geliştirmek için kullanılan ve aşağıdakileri içeren bir yazılım araçları sistemidir:
    Metin düzeltici,
    derleyici ve/veya yorumlayıcı,
    otomasyon araçları oluşturmak
    hata ayıklayıcı

    En yaygın olanlar AVRStudio, ATmelStudio, WINAVR, CodeVision, IAR Gömülü Çalışma Tezgahı.
    Program yazmak için ücretsiz kullanacağız ATmelStudio IDE sürüm 6 Ve daha yüksek.
    Kayıttan sonra Atmel Studio'yu resmi web sitesinden indirebilirsiniz (kayıt tamamen ücretsizdir ve sizi hiçbir yükümlülük altına sokmaz!)

    ATmelStudio, hem birleştiricide hem de C'de projeler oluşturmanıza ve programlar yazmanıza olanak tanır.

    Başlangıçta her zaman bir soru vardır: Etkili programlar yazmak için hangi programlama dilini seçmeli?

    Basitçe cevaplayacağım: en az iki montaj ve C dili yazabilmeniz gerekir. Assembler, hızlı ve kompakt alt programlar ve makrolar, çeşitli aygıt sürücüleri yazmanız gerektiğinde basitçe gereklidir. Ancak SI bilgisi olmadan karmaşık algoritmalar üzerine kurulu büyük bir proje oluşturmanız gerektiğinde, özellikle hata ayıklama sırasında çok fazla zaman harcanabilir ve PIC18 veya STM gibi başka bir platforma aktarmak isterseniz, çözülemez bir sorun haline gelir.
    Ek olarak, artık donanım bilgi işlem platformları var. arduino, üzerinde çalışmak C++ dili bilgisi gerektirir.
    Bu nedenle hem Assembler'de hem de C'de program yazacağız.

    Havya veya breadboard kullanmadan çalışmanızın sonucunu görsel olarak görmek için programı kurmanız yeterlidir. Proteus.

    3. Denetleyici nasıl yanıp söner ve bunlarla rahat çalışmak için hangi ek cihazlara ve aksesuarlara ihtiyaç vardır?

    Datagorian kullanıyoruz. Ek olarak, çıkış voltajı 5 volt olan bir güç kaynağı olan devre tahtaları satın almanız gerekecektir. 5 volt zener diyot kullanarak düşük dalgalanmalı PSU olarak kullanabilirsiniz.
    Belki zamanla, Igor ve ben bir hata ayıklama panosu montajı için bir proje sunacağız.

    4. Hangi literatürü incelemeli?

    Ve burada, örneğin:
    Assembler'da pratik AVR programlama. Reviç, 2011
    1000 ve bir mikrodenetleyici devresi Vol. 1-2. Ryumik, 2010-2011
    MK AVR Kitap 1-2'de 10 pratik cihaz. Kravçenko, 2008-2009
    MK AVR'de cihaz geliştiricisi için kendi kendine kullanım kılavuzu. Belov, 2008
    MK AVR aileleri Tiny ve Atmega. Efstifeyev, 2008
    CodeVisionAVR. Yeni başlayanlar için bir rehber. Lebedev, 2008
    Cihazların, tristörlerin, rölelerin mikroişlemci kontrolü. Belov, 2008
    Analog arayüzler MK. Komiser, Top, 2007
    MK AVR'de cihazlar yaratıyoruz. Belov, 2007
    Amatör radyo uygulamasında MK AVR. ATTINY2313'ün tam analizi. Belov, 2007
    MK ile ağ ve ağlar arası veri alışverişi. Git, 2007
    MK AVR. yeni başlayanlar için pratik. Hartov, 2007
    AVR Şemalarının, algoritmalarının, programlarının uygulanması. Baranov, 2006
    AVR mikrodenetleyicileri. Giriş dersi. Morton, 2006
    AVR ile ölçüm, kontrol ve düzenleme. Trompet, 2006
    AVR ve PIC MK için C dilinde programlama. Shpak, 2006
    MK'de cihaz tasarlama. Belov, 2005
    MK - çok basit, ciltler 1-3. Frunze, 2002-2003
    C Programlama Dili, 2. baskı. Kernigan, Ritchie, 2009
    ATMEL mikro denetleyicilerinin S. Prokopenko dilinde programlanması, 2012

    5. Çevrimiçi olarak nerede soru sorabilir ve belirli yanıtlar alabilirim?

    Mikrodenetleyicilerle ilgili konuların bir şekilde ele alındığı bizim veya diğer forumlarımızda soru sorabilirsiniz. Forumlardaki en önemli şey, net bir şekilde cevap almak için soruları doğru bir şekilde formüle etmektir. Soyut sorular hoş karşılanmaz ve büyük olasılıkla bir cevap yerine sert eleştiriler alırsınız veya sorunuz dikkate alınmaz!

    Şimdi favorimiz olan ATMEGA 8 mikrodenetleyicimize daha yakından bakalım.

    8-bit yüksek performanslı düşük güçlü AVR mikrodenetleyici
    Aşamalı RISC mimarisi
    130 yüksek performanslı talimat, çoğu talimat bir saat döngüsünde yürütülür
    32 adet 8 bitlik genel amaçlı çalışma kaydı
    Tamamen statik çalışma
    Yaklaşan 16 MIPS (16 MHz'de) performansı
    Dahili 2 döngü çarpanı

    Uçucu olmayan program ve veri belleği
    8 KB Sistem İçi Kendinden Programlanabilir Flaş
    1000 silme/yazma döngüsü sağlar
    Bağımsız kilit bitlerine sahip ek önyükleme kodları sektörü
    Eşzamanlı okuma/yazma modu (Yazarken Oku) sağlanır
    512 bayt EEPROM
    100.000 silme/yazma döngüsü sağlar
    1 KB yerleşik SRAM
    Kullanıcı yazılımını korumak için programlanabilir kilit

    Gömülü Çevre Birimleri
    Ayrı ön ölçekleyicili iki adet 8 bitlik zamanlayıcı/sayaç, biri karşılaştırma modlu
    Ayrı ön ölçekleyici ve yakalama ve karşılaştırma modlarına sahip bir adet 16 bitlik zamanlayıcı/sayaç
    Ayrı jeneratörlü gerçek zamanlı sayaç
    Üç PWM kanalı
    8 kanallı analogdan dijitale dönüştürücü (TQFP ve MLF paketlerinde)
    10 bit hassasiyetle 6 kanal
    6 kanallı analogdan dijitale dönüştürücü (PDIP paketinde)
    10 bit hassasiyetle 4 kanal
    8 bit hassasiyetle 2 kanal
    Bayt yönelimli 2 telli seri arayüz
    Programlanabilir Seri USART
    Seri arayüz SPI (master/slave)
    Ayrı yerleşik osilatör ile programlanabilir bekçi köpeği zamanlayıcısı
    Dahili analog karşılaştırıcı

    Özel mikrodenetleyici işlevleri
    Açılışta sıfırlama ve programlanabilir güç kesintisi voltaj dedektörü
    Dahili kalibre edilmiş RC osilatörü
    Dahili ve harici kesme kaynakları
    Beş düşük güç modu: Boşta Kalma, Güç Tasarrufu, Güç Kapatma, Bekleme ve ADC gürültü azaltma

    I/O Pinleri ve Paketleri
    23 programlanabilir G/Ç hattı
    28 uçlu PDIP paketi, 32 uçlu TQFP paketi ve 32 uçlu MLF paketi

    Çalışma voltajları
    2,7 - 5,5V (ATmega8L)
    4,5 - 5,5V (ATmega8)

    çalışma frekansı
    0 - 8 MHz (ATmega8L)
    0 - 16 MHz (ATmega8)

    ATMEGA16 ve 8 arasındaki farklar
    16 KB Sistem İçi Kendinden Programlanabilir Flaş

    JTAG arabirimi (IEEE 1149.1 uyumlu)
    JTAG standardı ile uyumlu periferik tarama özelliği
    Gelişmiş satır içi hata ayıklama desteği
    JTAG arabirimi üzerinden programlama: Flash, EEPROM bellek, atlama telleri ve kilit bitleri

    Dört kanallı PWM / PWM

    8 kanallı 10 bit A/D dönüştürücü
    8 dengesiz kanal
    7 farklı kanal (yalnızca TQFP paketi)
    1x, 10x veya 200x programlanabilir kazançlı 2 farklı kanal (yalnızca TQFP paketi)

    Altı güç kapatma modu: Boşta, Güç tasarrufu, Güç kapatma, Bekleme, Uzatılmış Bekleme ve ADC gürültü azaltma

    32 programlanabilir G/Ç hattı

    40 uçlu PDIP paketi ve 44 uçlu TQFP paketi

    atmelstudio

    Yeni başlıyorsanız, AtmelStudio programını atmel.com resmi sayfasından indirip yüklemeniz gerekir.
    AtmelStudio programını kurduktan sonra proje oluşturmaya başlayabilirsiniz.
    Proje- bu, derlemeden sonra mikrodenetleyicinin belleğine yazacağınız, hata ayıklayacağınız ve flash edeceğiniz programınızdır.

    Bir proje oluşturmak için programı açmanız gerekir, bir açılış ekranı görünecektir,

    ve proje oluşturma sayfası açılacak

    Yeni bir proje oluşturmak için tıklayın Yeni proje...
    Bu durumda, programlama dilini, projenin adını, konumunu, proje dosyalarını içeren paketin adını ve diğer çapraz projelerde daha sonra kullanmak üzere bir dizin oluşturma olasılığını seçebileceğiniz yeni bir pencere açılacaktır. . Birleştiricide programlayacağımız bir proje oluşturmak için - seçmeniz gerekir - montajcı, ardından projenin adını ve konumunu değiştirin ve TAMAM.

    Bir sonraki pencere görünecektir

    Seçmek megaAVR, 8 bit ve ihtiyacımız olan mikrodenetleyiciyi bulduk, seçtik ATmega8. Açılış ekranının sağ tarafında bu mikrodenetleyici ile çalışan cihazların bir listesi beliriyor ve bunlardan birine bağlanabiliyoruz. Seçmek TAMAM.

    Programı düzenlemenize ve hata ayıklamanıza izin veren metin düzenleyici sayfası görünür. Sayfa temizken oluşturulma zamanı ve tarihi ile proje dosyasının adı, kullanıcı adı belirtilir. Ek bir giriş-çıkış aygıtı penceresi, bir program derleme rapor penceresi vardır. şimdi biz


    Assembler ile programlayabiliriz.
    Benzer şekilde C dilinde programlama için proje oluşturulur.

    Mikrodenetleyici programlama

    giriiş

    Bölüm 2. Programlama ortamları. Mikrodenetleyici bağlantı şemaları

    Bölüm 3. Programın mikrodenetleyici üzerinde pratik uygulaması

    Kullanılan kaynakların listesi

    giriiş

    Konunun alaka düzeyi. Mikrodenetleyiciler, insan yaşamının her alanında, onu çevreleyen cihazlarda kullanılmaktadır. Bağlantı kolaylığı ve mükemmel işlevsellik. Mikrodenetleyici programlamanın yardımıyla donanım teknolojisinin birçok pratik sorunu çözülebilir.

    işin amacı. Pratik bir örnek temelinde, mikrodenetleyici kullanımının avantajlı özelliklerini, bunların çeşitli cihazlarda uygulanmasına olan ihtiyacı gösterin.

    Mikrodenetleyicinin (MC) tek bir mikro devrede bulunan bir bilgisayar olduğunu varsayabiliriz. Bu nedenle ana çekici nitelikleri: küçük boyutlar; yüksek performans, güvenilirlik ve çok çeşitli görevleri yerine getirmek için uyarlanabilme yeteneği.

    Mikrodenetleyici, merkezi işlem birimine (CPU) ek olarak, bellek ve çok sayıda giriş / çıkış aygıtı içerir: analogdan dijitale dönüştürücüler, seri ve paralel bilgi aktarım kanalları, gerçek zamanlı zamanlayıcılar, darbe genişliği modülatörleri (PWM), programlanabilir puls üreteçleri, vb. Ana amacı, çok çeşitli cihazlarda yerleşik otomatik kontrol sistemlerinde kullanılmasıdır: kredi kartları, kameralar, cep telefonları, stereolar, televizyonlar, video kaydediciler ve video kameralar, çamaşır makineleri, mikrodalga fırınlar, hırsız alarm sistemleri, benzinli motor ateşleme sistemleri, lokomotif elektrikli tahrikler, nükleer reaktörler ve çok daha fazlası. Gömülü kontrol sistemleri o kadar büyük bir fenomen haline geldi ki, aslında ekonominin Gömülü Sistemler (gömülü sistemler) adı verilen yeni bir kolu oluştu.

    Büyük bir işlevselliğe sahip olan ATMEL MC'ler oldukça yaygındır.

    MC'nin kullanımı iki aşamaya ayrılabilir: ilki, kullanıcının bir program geliştirip bunu doğrudan çipe aktardığı programlama aşamasıdır ve ikincisi, tasarlanmış aktüatörlerin programlanabilir MC ile koordinasyonudur. Mikroişlemcinin çalışmasını görsel olarak simüle eden bir simülatör olan ilk aşamada programın hata ayıklamasını önemli ölçüde kolaylaştırın. İkinci aşamada, hata ayıklama için, genellikle ortalama bir kullanıcının erişemeyeceği karmaşık ve pahalı bir cihaz olan bir devre içi öykünücü kullanılır.

    Aynı zamanda, gerçek aktüatörlerle birlikte bazı ucuz mikrodenetleyicilerin programlanmasının öğretilmesi konularına literatürde çok az ilgi gösterilmiştir.

    Basitlik, netlik ve düşük maliyet ile karakterize edilen bir programlayıcı düzeninin geliştirilmesi, hem kristallerin programlanması hem de geniş bir kullanıcı yelpazesinin MC programlamanın temellerinde görsel eğitimi için gerekli hale gelir.

    Bölüm 1. Amaç ve kapsam, mimarileri

    Mikrodenetleyici, tek bir çip üzerindeki bir bilgisayardır. Çeşitli elektronik cihazları kontrol etmek ve mikrodenetleyiciye gömülü programa göre aralarında etkileşim kurmak için tasarlanmıştır. Kişisel bilgisayarlarda kullanılan mikroişlemcilerin aksine, mikrodenetleyiciler yerleşik ek aygıtlar içerir. Bu cihazlar mikrodenetleyicinin mikroişlemci çekirdeğinin kontrolü altında görevlerini yerine getirirler.

    En yaygın gömülü aygıtlar arasında bellek aygıtları ve giriş/çıkış (G/Ç) bağlantı noktaları, iletişim arabirimleri, zamanlayıcılar, sistem saatleri yer alır. Bellek cihazları, rasgele erişim belleği (RAM), salt okunur bellek (ROM), yeniden programlanabilir ROM (EPROM), elektriksel olarak yeniden programlanabilir ROM (EEPROM) içerir. Zamanlayıcılar hem gerçek zamanlı saati hem de kesme zamanlayıcılarını içerir. I/O olanakları arasında seri iletişim portları, paralel portlar (G/Ç hatları), analogdan dijitale dönüştürücüler (A/D), dijitalden analoğa dönüştürücüler (D/A), Sıvı Kristal Ekran (LCD) sürücüleri, veya Vakumlu Floresan Ekran (VFD) sürücüleri . Gömülü cihazlar, herhangi bir harici elektrik devresine ihtiyaç duymadıkları için daha güvenilirdir.

    Bir mikrodenetleyiciden farklı olarak, bir denetleyiciye genellikle bir mikro denetleyici temelinde oluşturulmuş bir kart denir, ancak çoğu zaman "mikrodenetleyici" terimi kullanılırken, basitlik için "mikro" öneki atılarak bu cihazın kısaltılmış adı kullanılır. Ayrıca, mikrodenetleyicilere atıfta bulunurken, "çip" veya "mikroçip", "kristal" (çoğu mikrodenetleyici tek bir silikon kristal üzerinde yapılır), MK kısaltmaları veya İngilizce mikrodenetleyici - MC kelimelerini bulabilirsiniz.

    mikrodenetleyici programı mikro devre elektronik

    Mikrodenetleyiciler çok sayıda modern endüstriyel ve ev aletinde bulunabilir: takım tezgahları, arabalar, telefonlar, televizyonlar, buzdolapları, çamaşır makineleri. ve hatta kahve makineleri. Mikrodenetleyici üreticileri arasında Intel, Motorola, Hitachi, Microchip, Atmel, Philips, Texas Instruments, Infineon Technologies (eski Siemens Semiconductor Group) ve diğerleri yer alır. Modern mikro devrelerin üretimi için ultra temiz odalar gereklidir.

    Mikrodenetleyicilerin ana sınıflandırma özelliği, aritmetik mantık birimi (ALU) tarafından işlenen verilerin bit derinliğidir. Bu temelde, 4-, 8-, 16-, 32- ve 64-bit'e ayrılırlar. Bugün, küresel mikrodenetleyici pazarının en büyük payı sekiz bitlik cihazlara aittir (değer açısından yaklaşık %50). Bunları, sinyal işleme sistemlerinde kullanıma odaklanan (grupların her biri pazarın yaklaşık% 20'sini kaplar) 16-bit ve DSP mikrodenetleyicileri (DSP - Dijital Sinyal İşlemcisi - dijital sinyal işlemcisi) takip eder. Her grup içinde, mikrodenetleyiciler CISC ve RISC cihazlarına ayrılır. En çok sayıda grup CISC mikrodenetleyicileridir, ancak son yıllarda RISC mimarisinin yeni yongalar arasındaki payında bir artışa yönelik açık bir eğilim olmuştur.

    Saat frekansı veya daha doğrusu veri yolu hızı, birim zamanda kaç tane hesaplama yapılabileceğini belirler. Genel olarak, bir mikrodenetleyicinin performansı ve güç tüketimi artan saat frekansı ile artar. Mikrodenetleyicinin performansı MIPS (Million Instructions per Second - saniyede bir milyon talimat) cinsinden ölçülür.

    Kontrolör terimi, İngilizce to control - to yönetmek kelimesinden oluşturulmuştur. Bu cihazlar, mekanik veya optik cihazlardan elektronik analog veya dijital cihazlara kadar çeşitli çalışma prensiplerine dayalı olabilir. Mekanik kontrol cihazları, elektronik kontrol ünitelerine kıyasla düşük güvenilirliğe ve yüksek maliyete sahiptir, bu nedenle gelecekte bu tür cihazları düşünmeyeceğiz. Elektronik analog cihazlar, çalışma sırasında maliyetlerini artıran sürekli ayarlama gerektirir. Bu nedenle, bu tür cihazlar bugüne kadar neredeyse hiç kullanılmamıştır. Günümüzde en yaygın kontrol devreleri, dijital mikro devreler temelinde oluşturulmuş devrelerdir.

    Kontrol edilmesi gereken cihazın maliyetine ve boyutlarına bağlı olarak kontrolör gereksinimleri de belirlenir. Kontrol nesnesi, otomatik telefon santralleri, hücresel iletişim sistemlerinin baz istasyonları veya radyo röle iletişim hatları gibi onlarca metrelik bir alanı kaplıyorsa, evrensel bilgisayarlar denetleyici olarak kullanılabilir. Bu durumda kontrol, bilgisayarın dahili portları (LPT, COM, USB veya Ethernet) üzerinden gerçekleştirilebilir. Bu tür bilgisayarlarda, güç açıldığında, evrensel bilgisayarı bir denetleyiciye dönüştüren bir kontrol programı girilir.

    Evrensel bir bilgisayarın denetleyici olarak kullanılması, yeni iletişim sistemlerini hızlı bir şekilde geliştirmeyi, bunları kolayca yükseltmeyi (yalnızca programı değiştirerek) ve ayrıca hazır toplu (ve dolayısıyla ucuz) birimleri kullanmayı mümkün kılar.

    Kontrolörün, sallama koşullarında çalışma, geniş bir sıcaklık aralığı, agresif ortamlara maruz kalma gibi özel gereksinimleri varsa, o zaman evrensel bilgisayarların endüstriyel versiyonları kullanılmalıdır. Doğal olarak, bu bilgisayarlar geleneksel evrensel bilgisayarlardan çok daha pahalıdır, ancak yine de denetleyici donanımı geliştirmenize gerek kalmaması nedeniyle sistem geliştirme süresinden tasarruf etmenizi sağlar.

    Bu makaleyi (veya daha doğrusu bir dizi makaleyi ...) Atmel mikrodenetleyicilerine ayırmaya karar verdim. Tabii ki, bu konu hileli ... AMA! Kendi deneyimlerimden biliyorum ki, bunların arasında gerçeği bilmek çok ama çok zor, üzgünüm, BADDACK! Bu nedenle, "Mikrodenetleyici" adı verilen bu korkunç canavarı tanımaya hevesli olanların kafalarına en azından biraz netlik getirmeye karar verdim.

    Bu nedenle, bu makalenin amacı, sıfırdan bir mikro denetleyiciye dayalı bir cihaz oluşturma sürecinin tamamını açıklamak ve mümkünse göstermektir. Yani, bir fikirden (örneğin, saygın tarafından açıklanana benzer bir Yeni Yıl flaşörünü monte etmeye karar verdik. alx32 makalede ...) bezdeki enkarnasyondan önce. Tabii ki, tüm ara aşamaları atlayarak: bir problem belirlemek, bir MC seçmek, bir koşum takımı seçmek, bir algoritma formüle etmek, bir program yazmak, hata ayıklamak, bir pano oluşturmak ve en uzun zamandır beklenen lansman !!!

    Güncelleme: Dosyalar eklendi. Bu yüzden, görev: Belirli bir düzende (sırayla olsun), N'inci sayıda LED (8 adet olsun) yakabilen bir cihaz oluşturmamız gerekiyor.
    (bu başlangıç ​​içindir……..)


    Şimdi programlamaya başlayabilirsiniz. Herhangi bir şey yazabilirsiniz, ancak yeni başlayanlar için dili tercih etmenizi tavsiye ederim. C, Çünkü programlama daha kolay ve anlaşılırdır. Şahsen ben derleyiciyi kullanıyorum Code Vision AVR(dosya arşivindedir), özellikle bu derleyici için programların başka listeleri verilecektir.

    Algoritmaya karar verin. Belli bir süre sonra MK çıkışlarından birini açmamız gerekiyor.

    Farklı şekillerde açıp kapatabilirsiniz.:
    - her çıktıya ayrı ayrı değer atayın;
    - tüm çıkışların değerlerini bir kerede kaydedin.

    Değerler (sıra) elde edilebilir:
    - tüm komutları manuel olarak yazarak;
    - bir diziden;
    - matematiksel yöntem.

    Zaman aralığı ayarlanabilir:
    - gecikme fonksiyonları (gecikme);
    - bir zamanlayıcı aracılığıyla.

    Tüm bu yöntemleri deneyelim. Ama önce hazırlanmalısın...

    Boş bir program oluşturmak için yerleşik kod oluşturucuyu kullanırız. CVAVR. Bunu yapmak için programı çalıştırın, basın Dosya -> Yeni, açılan pencerede seçin “proje” ve tıklayın TAMAM. Soru "Kod üreteci kullanmak mı?""Evet" cevabını veriyoruz.
    Kod oluşturucu penceresi görünür. İçinde MK türünü ve saat frekansını seçin, gerisini olduğu gibi bırakın:


    Ardından, sekmeye gidin Limanlar ve orada “B noktası” ve aşağıdakileri koyun:


    Böylece tüm port pinlerini tanımlamış olduk. Bçıkışlar olarak ve sıfırlar, güç açıldığında, mantıksal olarak ayarlanacakları anlamına gelir " 0 ".
    Diğer özelliklere ihtiyacımız yok.

    Tıklamak “Dosya -> Oluştur, Kaydet ve Çık”, proje dosyalarını nereye kaydedeceğinizi seçin ve oluşturucu tarafından oluşturulan kodu içeren bir pencere görün.

    Şimdi kodlarımızı programa girelim..
    En basit uygulama (programlama açısından en güzeli olmasa da) her çıkışın değerlerini yazmak ve gecikmeleri işlev aracılığıyla yapmaktır. gecikme.

    gecikme_ms( X); - gecikme X milisaniye

    gecikme_us( X); - gecikme X mikrosaniye

    PORTB- çalıştığımız liman.

    PORTB. X - bir sonuca itiraz etmek X liman B

    Metnin sonunda aşağıdaki satırları bulun


    Bu, programımızın sonsuz bir döngüsüdür (yani, güç açıkken her zaman çalışır). Önündeki her şey mikrodenetleyici ön ayar komutlarıdır. ile başlayan satırlar “//” - yorumlar, bazen okumak için de yararlıdır.

    Hariç tutulan parça. Dergimiz okuyucu bağışlarıyla varlığını sürdürmektedir. Bu makalenin tam sürümü yalnızca mevcuttur


    Düğmeye bas projeyi yap

    (araç çubuğunda).

    Lanet okuma?
    Ve doğru! Derleyici işlevi bilmiyor gecikme_ms(), bu nedenle bu işlevin tanımlandığı dosyayı belirtmeniz gerekir.
    Bunu yapmak için program metninin en başına #include satırını eklemeniz gerekir. (Burada noktalı virgül gerek yok!)
    Yaklaşık olarak şu şekilde:

    Sihirli düğmeye tekrar basın.
    proje oluşturuldu.
    Şimdi projenin kendisini kaydettiğimiz klasörde bir dosya belirdi. Proje Adı.hex- bu, mikrodenetleyicinin ürün yazılımıdır!

    Ama bekleyin, havyayı kapmak için acele etmeyin... Lehimlemeyi değil, programlamayı öğreniyoruz!

    Bu yüzden programımızı sanal modda, yani böylesine harika ve sevilen bir üründe test etmeyi öneriyorum. Laboratuvar Merkezi Elektroniği - Proteus VSM Orada kesinlikle herhangi bir devreyi simüle edebilirsiniz (hatta Laplace ilkelleri bile var!). Proje dosyaları ile birlikte ekteki arşivden alabilirsiniz. Doğru, sürüm oldukça çarpık değil, bu nedenle kaydetme çalışmıyor. Bununla ne yapacağımı ayrı bir makalede anlatacağım.

    Haydi başlayalım IŞİD(devre şemalarının geliştirilmesi için ortam). Bu pencerede “P” düğmesine basın.

    Çizgide "Anahtar kelimeler" girmek “atiny2313” ve sağda şunu elde ederiz:


    Aralarından seçim yapabileceğiniz çok fazla bir şey yok, bu yüzden bu yalnız satıra çift tıklıyoruz ve ana pencerede solda görüyoruz:


    Bu, öğenin eklendiği anlamına gelir.

    Şimdi alana girin "Anahtar kelimeler" kelimeler LED-KIRMIZI Ve "RES". Projeye bir direnç ve bir LED ekleyin ve eleman seçiciyi kapatın.

    Bir Şema Oluşturmaya Çalışıyorum(çözüm SIFIRLA+ 5V'a bağladığınızdan emin olun, aksi takdirde çalışmaz! Ve bu hayatta da arzu edilir!)

    İşte küçük bir ipucu:

    Öğelerin özelliklerini düzenlemek için üzerlerine çift tıklamanız yeterlidir.

    Toplanmış? Umarım kendilerini, sevdiklerini ve çevredeki nesneleri yaralamamışlardır.

    Alay için özür dilerim, ancak kendiniz çözerseniz, unutmazsınız, bu yüzden anlayın, program çok güçlü ve ustalaşmaya değer!

    Devre kurulduğunda sanal MK'mizi flashlayabilirsiniz. Bunu yapmak için, üzerine çift tıklayın ve pencereyi görün.

    Herkese selam. Söz verdiğimiz gibi, bugünden itibaren AVR mikrodenetleyicilerinin programlanmasını incelemeye başlıyoruz (Atmega8 örneğini kullanarak). Arduino kartını programlamakla ilgilenen aynı okuyucular için endişelenmeyin, bu alandaki makaleler devam edecek 🙂 .

    Diğer bazı mikrodenetleyicilerden (bundan sonra - MK olarak anılacaktır) neden tam olarak mantıklı bir soru sorabilirsiniz. MK AVR. Bunun birkaç nedeni var:

    • MK AVR evrensel olarak mevcut;
    • Oldukça düşük bir fiyatları var;
    • İnternette, MK verileriyle çalışırken yardımcı olacak birçok ücretsiz program bulabilirsiniz.
    • Ayrıca, veriler hakkında soru sorabileceğiniz çok sayıda yazılı makale ve forum bulunmaktadır. MK AVR.

    Daha önce de söylediğim gibi MK'yi test konusu olarak kullanacağız. atmega8. Neden o?

    Bu mikrodenetleyici 3 G/Ç bağlantı noktasına sahiptir. Ayrıca, oldukça ucuz.

    Bağlantı noktalarından, iki zıt yönde (yani çıkış ve giriş için) çalışabilen veri yollarını anlarlar.

    -de atmega8 3 bağlantı noktası. Port B 8 pinden oluşur (0,1,2,3,4,5,6,7 numaralı). Port C 7 pinden oluşur (0,1,2,3,4,5,6 numaralı). Port D 8 pinden oluşur (0,1,2,3,4,5,6,7 numaralı).

    Mikrodenetleyici 3,3 ve 5 V ile çalıştırılabilir. 5 V besleme gerilimi ile maksimum saat frekansı 16 MHz ve 3,3 V besleme gerilimi ile maksimum saat frekansı 8 MHz'dir. Şimdilik, saat frekansları hakkında endişelenmeyelim.

    Pim 7'ye güç sağlanır ve pim 8'e toprak bağlanır.

    Ücretsiz indirin. İndirildi, kuruldu, başlatıldı 🙂

    Atmel Studio ile başlamak için ilk şey bir proje oluşturmaktır.

    Dosya -> yeni -> proje öğesini seçin.

    Bir seçim penceresi açılacaktır. Yazılı projeleri kaydedeceğimiz "Gözat" klasörünü seçin. Önceden projeler için bir klasör oluşturdu.

    Projeye bir isim veriyoruz, benim durumumda ders_avr_1

    "Çözüm için dizin oluştur" onay kutusuna dikkat edin. Onay kutusu işaretlenirse, projeleri kaydetmek için seçtiğimiz klasörde mevcut proje için ayrı bir klasör oluşturulur.

    Hepsi bu kadar - proje oluşturuldu.

    Oluşturduğumuz projeyi kuralım. Projest -> ders_avr_1 özellikleri veya (alt+F7) tuşlarına basın

    Araç sekmesine gidin. Bir simülatör seçin. Yaptığımız işlemler, yazılan kodda hata ayıklamayı mümkün kılacaktır. Değişiklikleri kaydediyoruz. Bir (geçerli) dosyadaki veya tüm proje dosyalarındaki değişiklikleri aynı anda kaydedebilirsiniz. Ayarları kapatın.