Mevcut çeşitli programlama yöntemlerine dalmayı çok isterdim, ama zaten bir başkası var. İşte Dean Kamera AVRFreaks, üzerinde 'ın öğretici AVR Programlama Yöntemleri :
AVR mikroişlemcilerini programlamanın birçok yolu vardır. Birçok insan bir defada bir başkası hakkında sorular sorduğundan, sorularını hızlı ve verimli bir şekilde cevaplandırmak için onları burada özetleyeceğimi düşündüm. Bir yöntemi kaçırırsam veya hata yaparsam lütfen beni affet.
YÖNTEM 1: Sistem Programlamada (ISS)
Destekleyen: AVR'lerin büyük çoğunluğu (aşağıdaki yazılara bakın)
Desteklenen Programcılar: AVRISP MKI / II, JTAG MKII, STK500, STK600, Ejderha, AVRISP klonları, AVR910 Programcıları, AVRONE
Sistem Programlamada belki de tüm AVR hattının flaş, EEPROM, sigorta ve lockbyte'lerini programlamanın en yaygın yöntemidir. ISS, AVR'leri son derece yüksek saat hızlarında programlayabilir (hedef AVR'nin yüksek bir frekansta çalıştığını ve programcının desteklediğini varsayar) ve hemen hemen tüm AVR hobileri için tercih edilen bir yöntemdir. Bilgisayarınızın paralel bağlantı noktasına bağlanan basit kendin-yap kiliselerine ek olarak piyasada birçok, birçok AVRISP klonu ve AVR910 programcısı vardır.
Son zamanlarda ortaya çıkan yeni dongle tasarımları bilgisayarın seri portunu kullanabilir, ancak fıkra delilleri bu yöntemin teknik kısıtlamalar nedeniyle çok yavaş olduğunu belirtti .
ISS, hedef AVR'nin, ISS saatinin en az dört katı bir saat hızında çalışmasını gerektirir. Bu, AVR’ler için pek çok yeninin ortak bir tuzağı ve bir karışıklık kaynağıdır.
YÖNTEM 2: JTAG
Destekleyen: MKI ve MKII cihaz desteği için AVRStudio Tools yardımına bakın
Desteklenen Programcılar: JTAG-ICE, JTAG-ICE MKII, Ejderha, JTAG-ICE klonları, AVRONE, STK600 (yalnızca programlama)
Teknik olarak JTAG bir programlama yöntemi değil, hata ayıklama sistemidir. Yine de, JTAG arayüzü onu destekleyen bir AVR'nin programlanmasına izin verir.
JTAG, bir devrede çalışırken desteklenen bir AVR'nin durumunu yönetmenize ve incelemenize olanak sağlayan bir sistem içi hata ayıklama aracıdır. JTAG, kullanıcının herhangi bir zamanda yürütmeyi durdurmasına, AVR'nin dahili kayıtlarının manipülasyonuna ve daha fazlasına izin verir.
ATMEL'in resmi JTAG-ICE birimleri, AVR serisi DebugWire hata ayıklama protokolünün yanı sıra ISP yöntemi ile programlamada daha yeni ve daha yaygın olarak desteklenen JTAG-ICE MKII tarafından değiştirildi (yukarıya bakın).
JTAG-ICE klonları düşük fiyatlar için mevcuttur, ancak yalnızca bir avuç AVR ile sınırlı uyumlulukları kullanışlılıklarını sınırlar. Bundan bağımsız olarak, AVR'niz JTAG arayüzünü destekliyorsa, JTAG-ICE çok güzel ve etkili bir hata ayıklama yöntemi ve programcısı olarak kalır.
YÖNTEM 3: DebugWire
Destekleyen: Birçok küçük AVR
Desteklenen Programcı: JTAG-ICE MKII, Dragon, AVRONE
Yine DebugWire, bir programlama arayüzü yerine bir hata ayıklamadır, ancak programları desteklenen AVR'lere yüklemek için kullanılabilir. DW arayüzü, tüm iletişimler için tek bir AVR pinini (/ / RESET hattı) kullanır ve düşük pin sayımlı AVR cihazları için idealdir.
YÖNTEM 4: Bootloader
Destekleyen: En yeni AVR'ler
Desteklenen Programcılar: Yok
Yine teknik olarak bir programlama yöntemi değil. Bir önyükleyici, normal flaşın kullanıcı tarafından ayarlanabilen bir ayrılmış bölümüne oturan küçük bir AVR programıdır. Bootloader'lar, AVR'nin harici bir kaynaktan yüklenen program verileri üzerinden programlamasına izin vermek için yeni AVR'lerde bulunan flaş kendi kendini değiştirme özelliklerini kullanır. Bootloader'lar verilerini herhangi bir konumdan (örneğin harici dataflash veya SD kart) alabilir, ancak bugüne kadar en yaygın Bootloader türü AVR'nin RS-232 (seri) portu üzerinden bir PC ile iletişim kurar.
Önyükleyiciler flaş alanı tüketmeleri (AVR'nin uygulamasında mevcut olan flaşın boyutunu sınırlandırması) ve AVR'lerin fusebitlerini değiştirememeleri ile sınırlıdır.
Önyükleyiciler internette indirilmek üzere yaygın olarak bulunur, ancak bir "tavuk ve yumurta" sorunu yaşarlar; Bootloader'da programlamak için burada listelenen başka bir programlayıcı türüne ihtiyacınız var. Bu genellikle basit bir paralel port dongle yapımı (ISP bölümüne bakınız) veya zaten bir bootloader (önceden AVRButterfly kartı) ile önceden yüklenmiş bir AVR satın alınmasıyla çözülür.
YÖNTEM 5: Yüksek Gerilim Paralel Programlama (HVPP)
Destekleyen: Çoğu TINY olmayan AVR (istisna hariç)
Desteklenen Programcılar: STK500, STK600, Dragon, Homebrew Dongles, AVRONE
Yüksek Gerilim Paralel Programlama, kurulması gereken güçlük nedeniyle nadiren kullanılan bir programlama yöntemidir. Buna rağmen, HVPP programlaması, sigortaları yanlış yapılandırılmış AVR'leri başka bir programlama yöntemi ile "yeniden diriltmek" için kullanılır.
Hem STK500 hem de Dragon, HVPP'yi destekliyor. HVPP sırasında, hedefin / RESET pimi, dahili paralel programlama devresine giren alışılmadık derecede yüksek 12V değerine yükseltilir. / RESET pimi, AVR'nin (HVPP destekli AVR'lerde) bu seviyeye güvenle yükseltilebilen tek pimidir.
Bunun gibi çevrimiçi planları kullanarak kendi HVPP dongle'ınızı yapabilirsiniz.
YÖNTEM 6: Yüksek Gerilim Seri Programlama (HVSP)
Destekleyen: Birçok TINY AVR (istisna hariç)
Desteklenen Programcılar: STK500, STK600, Dragon, Homebrew Dongles, AVRONE
HVSP, HVPP'ye benzer, ancak veri aktarımı paralel değil seri olarak gerçekleştirilir. Bu, HVPP için yeterli pin bulunmayan birçok TINY serisi AVR'de kullanılan alternatif programlama yöntemidir.
YÖNTEM 7: PDI
Destekleyen: XMEGA AVR'ler
Desteklenen Programcılar: STK600, AVRONE, JTAG MKII, Dragon, AVRISP MKII
PDI, AVR'lerin XMEGA hattı için debugWire protokolünü temel alan yeni programlama arayüzüdür. Şu anda diğer 8 bit AVR mikroişlemcilerinde kullanılmamaktadır.
YÖNTEM 8: TPE
Destekleyen: 6 Pimli TINY AVR'ler (ATTINY10, vb.)
Desteklenen Programcılar: STK600, Dragon, AVRISP MKII
TPI, 6 pinli ATTINY10 gibi sınırlı pinli AVR'lerin yeni TINY serisi için çok küçük bir programlama arayüzüdür. DW gibi, TPI da cihazın / RESET hattını iletişim arayüzünün bir parçası olarak kullanır, ancak orada benzerlik biter. Pint boyutunda TINY AVR'ler çip üzerinde hata ayıklama devresi içermediğinden, TPI protokolü, yarım çift yönlü protokolde üç pinli yeni bir programlama arabirimi kullanır. Cihazın RSTDSB pimi ayarlandığında programlama için / RESET hattının + 12V'a yükseltilmesi gerektiğinden, şu anda yalnızca yeni STK600 programlama kartı tarafından desteklenmektedir.
Bonus SSS Bölümü!
En iyi yöntem hangisi?
Evrensel "en iyi" yöntem yoktur. ISS programlaması basit ve son derece popülerdir, ancak yukarıdaki tüm yöntemler işe yarayacaktır. İki yüksek gerilim programlama modu (hangisi cihazınıza uygulanabilirse), sigortaları yanlış yapılandırılmış bir AVR'nin onarımına izin verdiği için en zengin özelliklere sahiptir. Ancak, bu yöntemler kurmak için bir acı, bu nedenle çoğu kullanıcının ISS ile birlikte gitme nedeni.
Paralel bir bağlantı noktası dongle yaptım. AVRStudio ile kullanabilir miyim?
Korkarım ki hayır. AVRStudio, gönderdiği iletişim protokolünü deşifre etmek için herhangi bir "aptal" dongle ile arayüzleyemez - bir mikrodenetleyicinin kendisini içeren - akıllı bir programlama cihazı gerektirir. Mikrodenetleyicisiz basit dongle'lar "bit çarpması" (yani, dongle aracılığıyla bilgisayar aracılığıyla simüle edilen uygun sinyaller) kendisi olmalıdır.
Yani dongle o zaman işe yaramaz mı?
Hayır. Hala bir üçüncü parti programlama yazılımı aracıyla ev yapımı bir dongle üzerinden programlayabilirsiniz. AVRDude iyi, bilinen, ücretsiz bir komut satırı yardımcı programıdır - ve WinAVR paketi ile birlikte gelir.
Programcımın AVRStudio ile çalışmasını istersem seçeneklerim nelerdir?
AVRStudio destekli bir protokol kullanan bir programlayıcı seçin. Bu, basit "AVR910" protokolü (kullanımdan kaldırılmış) veya STK500 / AVRISP tarafından kullanılan protokolün özel bir uygulaması olabilir. Bu programcıların içlerinde mikro kontrolör gerektirdiğini ve bu durumun dikkat çekici bir duruma neden olduğunu unutmayın. Bu, programlayicinin AVR'sini satin alindiginda uygun cihaz yazilimi ile programlanmis olarak veya AVR'yi bir önyükleyici ile önceden programlanmis olarak çözerek çözülebilir.
Tamam, bir bootloader kullanmak istiyorum. İlk başta oraya nasıl girerim ?!
Bir AVR'de bir bootloader kullanmak için, önce bootloader'ın programlanmış olması gerekir. Mevcut bir programcınız yoksa (ilk programlama için basit bir aptal donanım kilidi bile yeterli olacaktır), alternatif olarak önceden programlanmış AVR'leri satın alabilirsiniz. birçok tedarikçiden bootloader.
Atmel ayrıca MEGA169 AVR'sine AVR-Studio uyumlu bir bootloader ile önceden yüklenmiş olarak gelen Butterfly demo kartını da üretiyor.
Yardım! Sigortaları karıştırdım ve ISS kullanırken AVR'mi kullandım!
En yaygın hata, saat seçimi sigortalarını geçersiz bir ayara getirmektir. AVR'nin XTAL1 pimine harici bir saat koymayı deneyin ve bunun yardımcı olup olmadığına bakın.
Bunun mümkün olmadığı durumlarda yüksek voltaj yöntemlerinden birini kullanın. Bunlar, yüksek voltaj yöntemleri programlama için AVR'ye kendi saatini sağladığından, saat kaynağını içerenler de dahil olmak üzere yanlış yapılandırmaları düzeltir.
Programcımla nasıl arayüz kurabilirim?
Programlayıcınızla arabirim oluşturmak için hangi yazılımı kullandığınız programcının türüne bağlıdır.
Basit "aptal" dongles, PonyProg veya AVRDude gibi üçüncü taraf yazılımları gerektirir. Bunlar komut satırı veya GUI araçları olabilir - web’de etrafa bakın, gereksinimlerinize uyacak şekilde para cezası verin.
AVR910 protokolünü temel alan programlayıcılar ve önyükleyiciler AVRStudio içinde kullanılabilir. Araçlar menüsünden, programlayıcınızla arabirim oluşturmak üzere bir GUI ekranı açmak için "AVRProg" seçeneğini seçin. Alternatif olarak, AVRDude gibi üçüncü parti araçlar da AVR910 ile uyumludur.
Resmi araçlar, özellikle hata ayıklama varyantları durumunda (JTAG / Dragon / etc), AVRStudio'ya sıkıca entegre edilmiştir. AVRStudio Tools menüsünden "Program AVR ..." alt menüsünü seçin ve "Bağlan" öğesini tıklayın. Yeni pencereden aracınızı ve bağlantı arayüzünü seçin ve Tamam'a tıklayın.
Aptal dongle ve AVR910 programcılarında olduğu gibi, resmi araçlar üçüncü parti programlama yazılımıyla da kullanılabilir.
(C) Dean Camera, 2009. Tüm hakları saklıdır. Önceden açıkça izin alınmadan AVRFreaks.net'ten başka hiçbir web sitesinde çoğaltılması için uygun değildir.