İçindekiler:

AVR Dragon'unuzla Dragon Rider 500 Nasıl Kullanılır: 10 Adım
AVR Dragon'unuzla Dragon Rider 500 Nasıl Kullanılır: 10 Adım

Video: AVR Dragon'unuzla Dragon Rider 500 Nasıl Kullanılır: 10 Adım

Video: AVR Dragon'unuzla Dragon Rider 500 Nasıl Kullanılır: 10 Adım
Video: Nasıl Motor Sürülmez :) 2024, Kasım
Anonim
AVR Dragon'unuzla Dragon Rider 500 Nasıl Kullanılır
AVR Dragon'unuzla Dragon Rider 500 Nasıl Kullanılır

Bu talimat, Ecros Technologies'den Dragon Rider 500'ün bazı özelliklerinin nasıl kullanılacağına dair hızlandırılmış bir kurstur. Ecros web sitesinde çok ayrıntılı bir Kullanım Kılavuzu bulunduğunu lütfen unutmayın.

Dragon Rider, Atmel'in AVR Dragon adlı bir AVR mikro denetleyici programcısı ile kullanım için bir arayüz kartıdır. Daha fazla bilgi için: Atmel's Wesite:https://www.atmel.com/ AVR Dragon bağlantısı:https://www.atmel.com/dyn/products/tools_card.asp?tool_id=3891 Dragon Rider 500 by Ecros Technology:https://www.ecrostech.com/AtmelAvr/DragonRider/index.htm Dragon Rider 500 montajı Eğitilebilir:https://www.instructables.com/id/Assembling-the-Dragon-Rider-500-for-use-with- the-A/ AVR mikrodenetleyicileri hakkında her şeyi öğrenin: https://www.avrfreaks.net Bu talimat zamanla büyüyebilir, bu yüzden şimdi tekrar kontrol edin!

1. Adım: AVR Dostum

AVR Dragon'u programlama için kullanmak için bazı programlama yazılımlarına ihtiyacınız var. AVRdude'u Ubuntu işletim sistemi (linux) ile kullanıyorum ve sonuçlardan çok memnunum. Bu talimat, programlama yazılımının inceliklerini ele almayacak. Programlama yazılımını nasıl kuracağınızı veya kullanacağınızı bilmiyorsanız, sizi hızlandırmak için bu talimata bakın: https://www.instructables.com/id/Getting-started-with-ubuntu-and-the- AVR-dragon/Benim tahminim, bir Dragon Rider 500 satın aldıysanız ve monte ettiyseniz, AVR Dragon ile bir çipi nasıl programlayacağınızı zaten biliyorsunuzdur….. ve sonrası!

Adım 2: ATtiny2313 - LED'leri yanıp sönün

ATtiny2313 - LED'leri yak
ATtiny2313 - LED'leri yak
ATtiny2313 - LED'leri yak
ATtiny2313 - LED'leri yak
ATtiny2313 - LED'leri yak
ATtiny2313 - LED'leri yak

20 pinli bir mikrodenetleyici olan bir ATtiny2313 programlayalım. Dragon Rider 500, birkaç farklı boyutta AVR mikrodenetleyici için soketlere sahiptir. Bunlar şunları içerir: 8, 20, 28 ve 40 pinli soketler. Hangi soketi kullandığınıza bağlı olarak Dragon Rider kartındaki jumper'lar farklı şekilde ayarlanmalıdır.

Jumper Ayarları

Şöntler aşağıdaki pimleri bağlayacak şekilde Dragon Rider'daki atlama tellerini ayarlayın. (pin4, J22-J-24 için merkez pimdir) Pimler:J5 - 23J6 - 23J7 - 12J16 - 23J22 - 41J23 - 41J24 - 41Bu, ISP'ye (Sistem Programlamasında) izin veren temel bir kurulumdur.

yanıp sönen yanıp sönen

Programlamanız gereken bir şey olmadıkça programlamanın hiçbir faydası yoktur. Dragon Rider'ın LED'lerinin birer birer yanıp sönmesi için çok kısa bir kod örneği yazdım. LED başlığını (J29) PortB başlığına (J2) bağlamak için bir şerit kablo kullanın.

Programlama

C dosyasının yanı sıra makefile ve hex dosyasını da ekledim. Girişte bahsettiğim gibi, Instructable'da programlamanın yazılım tarafını ele alamam. AVR Dragon için yaptığınız gibi programlayın, çünkü Dragon Rider hiçbir şeyin yazılım tarafını değiştirmez.

Adım 3: LCD Eklentisini Kullanma

LCD Eklentisini Kullanma
LCD Eklentisini Kullanma

İşte LCD Eklentisini kullanmanın basit bir yolu. Bu LCD ekrana "Dragon Rider" yazacaktır.

Donanım:

  • ATtiny2313
  • R/W Jumper: R/W Dragon Rider Board üzerindeki "BIT1"e bağlanmalıdır (Montaj Talimatındaki açıklamaya bakın)
  • J23: Bu jumper, ISP programlaması için kurulmalı, ancak LCD'nin düzgün çalışması için kaldırılmalıdır.
  • Şerit kablo (J31 - J2) kullanarak LCD'yi PORT B'ye bağlayın

Yazılım

LCD'yi 4 bit modunda sürmek için Peter Fleury'nin LCD kitaplığını kullanıyorum. Kitaplığı indirmek için Peter'ın Ana Sayfasına bakın. lcd.c'nin kodunuzla derlendiğinden ve lcd.h'de aşağıdaki değişiklikleri yaptığınızdan emin olmanız gerekir:

Dahili RC osilatörünü kullanıyoruz, bu nedenle XTAL'in 1MHz'e ayarlanması gerekiyor:

#define XTAL 1000000

  • Bağlantı noktası ayarlarının PORTB'ye ayarlanması gerekir:
  • #define LCD_PORT PORTB

  • 4 veri hattı için pin çıkışının uyarlanması gerekiyor:
  • #define LCD_DATA0_PIN 4 #define LCD_DATA1_PIN 5 #define LCD_DATA2_PIN 6 #define LCD_DATA3_PIN 7

  • RS, RW ve E için pin çıkışının uyarlanması gerekiyor:
  • #define LCD_RS_PIN 3 #define LCD_RW_PIN 1 #define LCD_E_PIN 2

    Peter Fleury'nin LCD kütüphanesinde yaptığı çalışma sayesinde ana program çok basittir. KOD:

    #include #include "lcd.h"int main(void){ lcd_init(LCD_DISP_ON); // İmleç kapalıyken LCD'yi başlat lcd_clrscr(); //LCD ekranı temizle lcd_gotoxy(5, 0); //İmleci bu konuma taşıyın lcd_puts("Dragon"); //Bu diziyi LCD'ye koy lcd_gotoxy(6, 1); //İmleci bu konuma taşıyın lcd_puts("Rider"); //Bu dizeyi LCD'ye koyun (;;) { // Sonsuza kadar hiçbir şey yapmayın (Mesaj LCD'de zaten görüntüleniyor) }}

    Kod Eklendi

    Ekli kod, Peter Fleury'nin izniyle LCD kitaplığını (lcd.c ve lcd.h) içerir. Teşekkürler Peter! Üzerinde yaptığım tek değişiklik, Tanımlar'da uygun pinleri ayarlamak. Paketi indirmek için lütfen sitesini ziyaret edin: https://www.jump.to/fleuryI ayrıca kullandığım ve Eric B. Weddington ve Jorg Wunsch tarafından yazılmış bir makefile ekledim. avrfreaks.net üzerinden Jorg'a bir PM gönderdim ama ondan bir yanıt alamadım. Makefile'de Linux ve Dragon'u kullanmaya uyarlamak için birkaç değişiklik var. İkinize de teşekkür ederim, lütfen çalışmanızı paylaşmamla ilgili tercihlerinizi bildirin.

    Adım 4: 28-pin UC ISP Programlama (ATmega8)

    28-pin UC ISP Programlama (ATmega8)
    28-pin UC ISP Programlama (ATmega8)
    28-pin UC ISP Programlama (ATmega8)
    28-pin UC ISP Programlama (ATmega8)

    Bir sonraki proje gösterimi, 28 pinli bir avr olan bir ATmega8 kullanacaktır. ISP'nin 28 pinli mikrodenetleyicileri programlaması için temel jumper seti burada.

    Jumper Ayarları

    Şöntler aşağıdaki pimleri bağlayacak şekilde Dragon Rider'daki atlama tellerini ayarlayın. (pin4, J22-J-24 için merkez pimdir) Pimler:J11 - 23J12 - 23J13 - 12J16 - 23J22 - 42J23 - 42J24 - 42

    Teknik Bilgiler

    • J11 ve J12'yi bu şekilde bağlamak, bu pinleri I/O pinleri olarak kullanmanızı sağlar. Alternatif, bu pimleri harici kristalle bağlantı kurmak için yönlendirmek olacaktır.
    • J13'ü bu şekilde bağlamak, onu sıfırlama pimi olarak kullanmamızı sağlar. Alternatif, bu pini bir G/Ç pini olarak kullanmak için PORTC başlığına yönlendirir. (bunun, bu çipi ISP kullanarak programlayamamak da dahil olmak üzere birçok dezavantajı olacaktır).
    • J16 ve J22-J24, uygun pinleri (Reset, MISO, MOSI ve SCK) AVR Dragon'un ISP başlığına yönlendirmek için bu şekilde bağlanır.

    Adım 5: Gelişmiş LCD ve Düğme Kullanımı: Büyük Saat

    Gelişmiş LCD ve Düğme Kullanımı: Büyük Saat
    Gelişmiş LCD ve Düğme Kullanımı: Büyük Saat

    Bu, LCD ekran ve düğmelerden yararlanan eğlenceli bir projedir. LCD'de Gerçek Zamanlı Saat fonksiyonları ve özel karakterler ile ilgileneceğiz. Alttaki resimde saat 19:26:07'nin LCD ekranda çok sayıda görüntülendiğini görebilirsiniz. Her sayı, büyük sayıyı göstermek için karakter ekranının 2x2'lik bir ızgarasını kullanır. Bu, orijinal olarak Xtinus tarafından XBMC projesi için yazılmış bir yazı tipini kullanır. Düğmeler saati ayarlamak için kullanılır. Sol, saatleri artırır, Yukarı, dakikaları artırır, Sağ, 12 ve 24 saatlik zaman arasında geçiş yapar ve Enter, saniyeleri sıfırlar. Çok hatalı dahili osilatör kullandığımız için saat çok iyi zaman tutmuyor, ancak bu program çok daha doğru bir harici kristal kullanmak için kolayca değiştirilebilir. Bunu aşağıdaki videoda çalışırken görün. Bu kodun nasıl çalıştığına dair bir açıklama sırayla, ancak şu anda zamanım yok. Şimdilik, LCD başlığını (J31) PORTD'ye (J4) ve düğme başlığını (J30) PORTB'ye (J2) bağlayın. Hem SW1 hem de SW2'nin kapalı konumda olduğundan emin olun. AVR Dragon'u bir usb kablosuna bağlayın ve bu kablonun diğer ucunu bilgisayarınıza takın. SW2'yi açın ve ATmega8'i seçtiğiniz programlama yazılımı ile programlayın (hex dosyası aşağıda; sigortalar fabrika ayarlarına yanmış). NOT: Sol ve Yukarı düğmelerini kullanmak için J22 ve J24'ten şöntleri çıkarmanız gerekecektir. bu, güç kapalıyken.

    Adım 6: Yüksek Voltaj Programlama

    Yanlış sigorta ayarlarını açtığım bir ATtiny2313'ü diriltmek için Yüksek Gerilim Paralel Programlamayı kullandım. Bu talimat üzerinde çalışırken ikinci kez ihtiyacım oldu çünkü yanlışlıkla istediğim lfuse ayarını hfuse kaydına yazdım….. ooops. Yüksek Voltaj paralel programlama, emrinizde olması için kullanışlı bir araçtır! Aşağıda jumper ayarlarımın bir listesi bulunmaktadır: KENDİ RİSKİ SİZE AİTTİR, NE YAPTIĞINIZI BİLMİYORSANIZ BU TÜR PROGRAMLAMA DONANIMINIZA ZARAR VEREBİLİR!! Yüksek Gerilim Paralel Programlama: ATtiny2313 soketi U3:SW1 - OFFSW2 - ONJ5, J6, J7 - pin1 ve pin2XTAL1'i bağlayın - pin1 ve pin2J16'yı bağlayın - pin1 ve pin22x5'i bağlayın IDC Kabloları: PROG_CTRL'yi PORT D'ye, PROG_DATA'yı PORT BA'ya Tüm diğer jumperlar bağlı değil (J8-J13, J18, J19, J20, J22-J28, J24) Diğer çipler için ihtiyacınız olan ayarları Atmel'in STK500 kullanıcı kılavuzundan bulabilmelisiniz.

    7. Adım: Yönetim Kurulunun Ötesine Geçmek

    Yönetim Kurulunun Ötesine Genişlemek
    Yönetim Kurulunun Ötesine Genişlemek

    Bir breadboard ile arayüz oluşturmayı oldukça kolay buluyorum. Bu, aynı anda prototip oluşturma ve kod geliştirmede çok daha fazla esneklik sağlar. Aşağıda Dragon Rider'a bağlı birkaç devre tahtası göreceksiniz. Şerit kabloları bir uçtaki uygun bağlantı noktalarına bağlarım. Diğerinde, uygun ICD iletkenini breadboard'lara bağlamak için atlama telleri kullanıyorum.

    Adım 8: Sonuç

    Bu Eğitilebilir Tabloya dahil edilebilecek çok daha fazlası var. Sadece bu gece, ejderhayı Dragon Rider'dan çıkarmadan 6 pinli programlama başlığını kullanmanıza izin veren bir adaptörü tamamlıyorum. Kendiniz nasıl kuracağınıza dair bilgileri sizlerle paylaşacağım… Çok yakında… Eklenmesi gerektiğini düşündüğünüz başka şeyler varsa, yorum bırakın.

    9. Adım: 6 Pinli ISP Ekleme

    6-Pin ISP Ekleme
    6-Pin ISP Ekleme
    6-Pin ISP Ekleme
    6-Pin ISP Ekleme
    6-Pin ISP Ekleme
    6-Pin ISP Ekleme

    Genellikle tüm projelerime 6 pinli bir ISP başlığı kurarım, böylece gerekirse çipi yeniden programlayabilir ve proje panosundan çıkarmak zorunda kalmam. Ejderha sürücüsü ne yazık ki 6 pinli bir ISP başlığına sahip değil, ancak nasıl kullanılabilir hale getirileceğini buldum.

    Uyarı!!

    Bu bir hack. Bunun tam olarak nasıl çalıştığını bilmiyorsanız, yapmayın

    Uyarıldınız. 6 pinli isp başlığını sağlamak için kendi adaptör kartımı ve 3 pinli jumper'ımı yarattım. Yaptığınız şey Dragon Rider'ı programa ve 8 pinli mikro denetleyiciye ayarlamak. 3 pinli bir soket kullanarak 1 ve 3 pinlerini bağlamak için J8'e jumping yapıyorum. Bu, saat sinyalini PortB konektörüne yönlendirir. Daha sonra PortB başlığından adaptör kartıma bir atlama kablosu çalıştırıyorum ve işte! Aşağıda resimler var…. lütfen, lütfen, lütfen, ne yaptığınızı gerçekten anlamadan bunu yapmayın çünkü yanlış yaparsanız AVR Dragon'unuza zarar verebilir veya daha kötüsünü yapabilirsiniz.

    Pin çıkışı: PortB ISP1 42 13 34 NC5 NC6 57 NC8 NC9 610 2

    Adım 10: Seri Bağlantı ve LCD Kullanan RSS Okuyucu

    Seri Bağlantı ve LCD Kullanan RSS Okuyucu
    Seri Bağlantı ve LCD Kullanan RSS Okuyucu
    Seri Bağlantı ve LCD Kullanan RSS Okuyucu
    Seri Bağlantı ve LCD Kullanan RSS Okuyucu

    Bu geliştirme kurulu ile oynamaya devam ediyorum. Bu sefer bir öğleden sonranın bir kısmını bir RSS okuması geliştirmekle geçirdim (çoğunlukla python tarafında). Kendi öğretilebilirliğini garanti ettiğini sanmıyorum, bu yüzden buraya ekliyorum.

    Donanım

    Dragon Rider 500'ü geliştirme kartı olarak kullanıyoruz. Bu, ihtiyacınız olan tüm donanımı sağlar (tüm eklenti kitlerine sahip olduğunuzu varsayarak). Bunu kesinlikle kendi donanım kurulumunuzla yapabileceğiniz söyleniyor:

    • ATmega8 mikrodenetleyici (veya bir USART'a ve tüm bağlantılar için yeterli pime sahip herhangi biri)
    • Mikrodenetleyiciyi programlamanın bir yolu (AVR Dragon kullanıyorum)
    • Seri iletişim için MAX232 çipi
    • DB9 konektörü
    • HD44780 LCD ekran
    • Kristal (8MHz kristal kullandım)
    • Çeşitli kapasitörler ve dirençler

    Aşağıda bir şema verilmiştir. Dragon Rider'da bağlantıları yönlendirmek için biraz yaratıcılık kullanmamız gerekecek. Normalde Port D, doğrudan LCD başlığına bağlanabilir. Seri bağlantı için gereken USART, PD0 ve PD1 kullandığından burada durum böyle değildir. Ayrıca Port B kullanılamıyor çünkü PB6 ve PB7 harici kristal için kullanılıyor. Aşağıdaki resimde bu soruna çözümüm var. LCD, Bağlantı Noktası B ve Bağlantı Noktası D'nin başlıklarına bir şerit kablo takıyorum, ardından uygun yolları yapmak için atlama telleri kullanıyorum. LCD başlığına voltaj ve toprak bağlamayı unutmayın.

    Yazılım

    Bu proje için yazılım iki bölümden oluşuyor, mikrodenetleyici için bellenim ve RSS beslemelerini kazımak ve bunları seri bağlantı üzerinden göndermek için python betiği. AVR FirmwarePeter Fleury'nin LCD kitaplığını tekrar kullanıyorum (https://jump.to /fleury). Güçlü ve özlü, çok yönlü ve donanım kurulumunuz için değiştirilmesi kolaydır. Ekli başlık dosyasına (lcd.h) bakarsanız, veri bitleri olarak Port D ve kontrol bitleri olarak Port B ile 4 bit modunda çalıştığımı göreceksiniz. Bu donanım yazılımının konsepti oldukça basittir.:

    • Güç verildiğinde, mikrodenetleyici "RSS Okuyucu" görüntüler ve ardından seri verileri bekler.
    • Alınan her bir seri veri baytı, 16 karakterlik bir arabelleğin sola kaymasına ve baytın arabelleğe eklenmesine ve ardından arabelleğin görüntülenmesine neden olur.
    • Mikrodenetleyici tarafından üç özel komut kabul edilir: 0x00, 0x01 ve 0x02. Bunlar net ekrandır, sırasıyla 0. satıra gidin ve 1. satıra gidin.

    Python ScryptI, RSS verilerini sıyırıp seri bağlantı üzerinden göndermek için bir pyton betiği yazdım. Bunun için "pyserial" python modülü gerekir ve bu modülün çalışması için muhtemelen sisteminize kurmanız gerekir. RSS beslemesi, pyton dosyasının en üstünde yapılandırılabilir. Besleme URL'sinin yanı sıra besleme için bir ad girmeniz gerektiğine dikkat edin. Orada üç örnek var, uygun sözdizimi için bunları takip edebileceğinizden eminim. Her şeyin işe yaraması

    • Donanımı birleştirin
    • Mikrodenetleyiciyi programlayın (bunu kendiniz derlemek istemiyorsanız dragon_rss.hex kullanılabilir). 8 MHz kristal kullanan ATmega8 için sigorta ayarları: lfuse= 0xEF hfuse=0xD9
    • Dragon Rider'ı çalıştırın ve seri kablonun takılı olduğundan emin olun (LCD'de şu şekilde olmalıdır: "RSS Okuyucu")
    • Python programını yürütün (python serial_rss.py)
    • Eğlence

    Önerilen: