Gönderen Konu: USB HID Bootloader'li PIC18F4550 Deney Kartı  (Okunma sayısı 22554 defa)

Çevrimdışı selimkoc

  • Kıdemli
  • ****
  • İleti: 435
    • Elektronik ve Robotikle ilgili blog
USB HID Bootloader'li PIC18F4550 Deney Kartı
« : 13 Eylül 2014, 12:21:32 »
Bootloader ile herhangi bir programlayıcı cihaz olmaksızın programlama yapılabilir. İki çeşit bootloader kullanılmaktadır. Birincisi RS232 portu ile diğeri USB Portu ile. RS232 portundan bootloader ile programlama yapmak için voltaj seviyelerinin TLL seviyesine dönüştürülmesi gerekir. Bunun için  max232 gibi dönüştürücü entegreler kullanılmaktadır.

USB HID Bootloader ise sadece USB konnektörü kullanarak yapılmaktadır. Aynı zamanda çok hızlı programlama yapmaktadır.

USB HID Bootloader ile programlama yapmak için; USB portu ve konnektörü olan USB HID Bootloader yazılımı yüklenmiş PIC ve USB HID Bootloader yazılımı yeterlidir.

Microchip firmasının kendi yazılımı ve USB HID bootloader yazılımı olmakla birlikte daha kolay ve sade olmasından dolayı mikro elektronika firmasının bootloader yazılımını ve USB HID Bootloader yazılımını tercih ettim.

USB HID Programlama için mikro Elektronikanın USB bootloader programı http://www.mediafire.com/download/9v51c1aawkviz64/mikroBootloader_USB_HID.rar indirilebilir. Ekran görüntüsü aşağıdadır.




USB HID Bootloader ile programlama 4 adımda gerçekleşmektedir.

1. USB Bootloader yazılımı yüklenmiş PIC USB Portuna bağlandığında 5 sn süre ile USB simgesi kırmızı olur.

2. Bu 5 sn süre içinde "Connect" butonuna basıyoruz.

3. Yüklenecek .hex dosyayı seçiyoruz.

4. PIC'e yüklemek istediğimiz programı yüklüyoruz.

Artık PIC'e program yüklenmiş durumdadır. Program yüklendikten sonra PIC reset atıp 5 sn sonra yüklediğimiz programla çalışmaya başlar. Burada dikkat edilmesi gereken husus PIC'e attığımız program hemen çalışmaz. 5 sn bootloader modunda bekler.

Bununla ilgili video aşağıdadır.

[youtube ]

Deney Kartının Adı :

USB HID Bootladerli, PIC18F4550 Deney Kartı

Deney Kartının Amacı :

PIC programlamayı  öğrenmeyi kolay, hızlı ve ekonomik olarak  sağlamak

Deney Kartının Özellikleri:

- USB HID Bootloader ile PIC18F4550’ye hızlı program yükleme
- Beslemeyi USB Port ile bilgisayardan alır. Ayrıca harici belemeye ihtiyaç yoktur.
- Kart üzerinde 3.3V besleme için voltaj regülatörü bulunmaktadır. Böylece 3.3V ile çalışan uygulamalar yapılabilir.
- Bütün pinler sıra soketlere taşınmıştır. Dolayısı ile kablo ile breadborda kolaylıkla taşınabilir.
- PIC ile PC arasında en hızlı iletişim olan USB portu kart üzerinde bulunmaktadır. Böylece program yüklemenin yanında  PIC’ten bilgisayara veya      bilgisayardan PIC’e veri  transferi yapılabilir.
- Kart üzerinde Reset butonu bulunmaktadır. Reset butonu ile program yeniden başlatılabilir veya yeni program yüklemesi yapılırken USB kablo sök/çıkar işlemine gerek kalmadan daha hızlı bir şekilde yükleme yapılabilir.
- Kart üzerinde kullanıcı butonu bulunmaktadır. Bu buton RB0 pinine pull-up direnciyle bağlanmıştır. Buton uygulamaları, kesme uygulamaları, sleep moddan uyandırma uygulamaları yapılabilir.
- Kart üzerinde üç adet led bulunmaktadır. Bu ledler aracılığı ile program içinde durum izlemesi veya sonuç görmek için kullanılabilir.
- Kart üzerinde 20Mhz kristal bulunmaktadır. Program içinde PLL kullanarak 48Mhz hızda kullanabilirsiniz.

Devre Şeması:



Baskı Devresi (PCB) :

« Son Düzenleme: 13 Eylül 2014, 12:57:45 Gönderen: selimkoc »

Çevrimdışı selimkoc

  • Kıdemli
  • ****
  • İleti: 435
    • Elektronik ve Robotikle ilgili blog
Ynt: USB HID Bootloader'li PIC18F4550 Deney Kartı
« Yanıtla #1 : 14 Eylül 2014, 01:53:45 »
Kart İle Örnek Uygulamalar:

Uygulamalarda MikroC IDE ortamı kullanılmaktadır.(Başka derleyiciler ile derlenmiş .hex dosyalar da USB HID Boootloader ile PIC'e yüklenebilir.)

Uygulama 1:

Bu uygulamada en basitinden bir led’in yanıp sönmesini yapacağız. RE0 pinile bağlı Led’i blinking (Yak/söndür) yapacağız.
Kod: [Seç]
#define LED_0  LATE0_bit
void main()
{
  TRISE=0;
  PORTE=0;
  while(1)
  {
     LED_0=~LED_0;
     Delay_ms(1000);
  }
}



mesaj birleştirme:: [time]14 Eylül 2014, 10:56:54[/time]
Uygulama 2 :

Bu uygulamada bcd olarak 8’e kadar sayan bir sayıcı yapacağız.  Kullanıcı butonuna her bastığında bcd olarak ledler sayıyı gösterecek.

Kod: [Seç]
#define BUTON PORTB.B0
 
unsigned char sayi=0;
 
void main()
{
  ADCON1=0x1F; // Analog girişler kapalı- Bütün analog pinler dijital-
  TRISB=1; // Buton giriş diğerleri çıkış
  TRISE=0; // PORTE çıkış
  LATE=0x07; // Bütün ledler ON
  Delay_ms(1000); // 1 sn yanık kalsın
  LATE=0; // Bütün ledler OFF
  do
  {
    if(!BUTON)
    {
       Delay_ms(180);
       sayi++;
       if(sayi==8) sayi=0;
       PORTE=sayi;
       while(!BUTON);
    }
  }while(1);
}
« Son Düzenleme: 14 Eylül 2014, 03:02:39 Gönderen: selimkoc »

Çevrimdışı selimkoc

  • Kıdemli
  • ****
  • İleti: 435
    • Elektronik ve Robotikle ilgili blog
Ynt: USB HID Bootloader'li PIC18F4550 Deney Kartı
« Yanıtla #2 : 14 Eylül 2014, 21:47:26 »
Uygulama 3:

Bu uygulamada bcd olarak 0-7 arası sayan bir sayıcı yapacağız.  Ancak sayma işlemi kesme içinde gerçekleşecek. Ana programda herhangi bir satır yok. Kullanıcı butonuna her bastığında bcd olarak ledler sayıyı gösterecek.
Kod: [Seç]
#define BUTON PORTB.B0
 
unsigned char sayi=0;
//---------------------------------
void interrupt()
{
  if(INTCON.INT0IF)
  {
    INTCON.INT0IF=0;
    sayi  ;
    if(sayi==8) sayi=0;
    LATE=sayi;
  }
}
//--------------------------------------
void main()
{
 ADCON1=0x1F; // Analog girişler kapalı- Bütün analog pinler dijital-
 TRISB=1; // Buton giriş diğerleri çıkış
 TRISE=0; // PORTE çıkış
 //----Kesme Ayarları----------
 INTCON.GIE=1; // Global kesmeye müsade et
 INTCON.INT0E=1; // INT0 kesmesine izin ver
 INTCON.INT0IF=0; // Kesme oluştu bayrağını temizle
 INTCON2.INTEDG0=0; // düşen kenar kesme
 //----------------
 LATE=0x07; // Bütün ledler ON
 Delay_ms(1000); // 1 sn yanık kalsın
 LATE=0; // Bütün ledler OFF
 do
 {
    // Ana prg boş
  }while(1);
}


Bu programda RB0 pinine bağlı olarak INT0 kesmesi kullanılmıştır. Kesme ayarları programda gösterilmiştir. Daha ayrıntılı bilgi için önceki kesmelerle ilgili yazılarıma bakılabilir.

Bu uygulamaları deney kartı üzerinde yapalım.

Kodların derlendiğini .hex dosya oluşturulduğunu varsayarak sırayla işlemleri yazalım;

- PC’de USB HID Bootloader programını açıyoruz.

- Kartı USB porta taktığımızda hemen (5 sn içinde) “Connect” butonuna tıklıyoruz.

- “Browse for HEX” butonuna tıklayarak yüklemek istediğimiz .hex dosyayı seçiyoruz.

- Son adım olarak “Begin Uploading” butonu ile PIC’e programı yüklüyoruz.

Görüldüğü gibi mikro saniyeler içinde program yüklenecek ve PIC tekrar başlıyacaktır. yaklaşık 5 sn sonra PIC’e yüklediğimiz program çalışmaya başlayacaktır.

Daha sonraki programı yüklemek için RST butonuna basıyoruz ve yukarıdaki adımları tekrarlıyoruz.

(NOT: Burada derleyici olarak Mikroc kullandık. Başka bir derleyici ile yapılan program da aynı şekilde yüklenebilir. )

Bu da yukarıdaki 3 programın deney kartına yüklenmesi ve çalıştırılması ile ilgili video




« Son Düzenleme: 14 Eylül 2014, 21:56:19 Gönderen: selimkoc »

Çevrimdışı Erhan YILMAZ

  • Profesyonel Üye
  • *****
  • İleti: 1248
    • Erhan
Ynt: USB HID Bootloader'li PIC18F4550 Deney Kartı
« Yanıtla #3 : 15 Eylül 2014, 02:17:30 »
Elinize sağlık hocam güzel bir uygulama olmuş.
Bir bit değişir. Dünya değişir.Yeni nesil register seviyesinde kod yazmadan büyüyecek. 320volt-Erhan mcu-turkey-Erhan

Çevrimdışı selimkoc

  • Kıdemli
  • ****
  • İleti: 435
    • Elektronik ve Robotikle ilgili blog
Ynt: USB HID Bootloader'li PIC18F4550 Deney Kartı
« Yanıtla #4 : 15 Eylül 2014, 04:06:30 »
Teşekkürler. PIC ile USB uygulamaları mikroc ile çok kolay yapılabiliyor. Bu kartla USB uygulamaları da yapmaya çalışacağım.

Çevrimdışı selimkoc

  • Kıdemli
  • ****
  • İleti: 435
    • Elektronik ve Robotikle ilgili blog
Ynt: USB HID Bootloader'li PIC18F4550 Deney Kartı
« Yanıtla #5 : 15 Eylül 2014, 11:34:52 »
Uygulama 4: USB HID Sayıcı

Bu uygulamada USB Hid Terminal üzerinde bir sayıcı yapacağız.  Ancak sayma işlemi kartı üzerindeki butonla yapılacak. Butona basıldığında RE0 pinine bağlı led butona basılı kaldığı müddetçe yanacak ve USB port ile PC’ye sayı bilgisi gönderilecektir.
Kod: [Seç]
void main()
{
  ADCON1=0x1F; // Analog girişler kapalı- Bütün analog pinler dijital-
  TRISB=1; // Buton giriş diğerleri çıkış
  TRISE=0; // PORTE çıkış
  LATE=0x07; // Bütün ledler ON
  Delay_ms(1000); // 1 sn yanık kalsın
  LATE=0; // Bütün ledler OFF
  HID_Enable(&readbuff,&writebuff); // Enable HID communication
  do
  {
    if(!BUTON)
    {
      LED_0=1;
      Delay_ms(180);
      sayac++;
      USB_Yaz(sayac);
      while(!BUTON);
      LED_0=0;
    }
  }while(1);
}

Uygulamanın USB Kısımları önceki yazılarımda anlatıldığı için onları koymadım. Sadece ana programı ekledim.

Bu uygulamada kullanacağımız USB Terminal programı mikroelektronikanın sitesinden indirilebilir. Ayrıca http://www.mediafire.com/download/la872k0057e9i4l/Hid_Terminal.rar da indirebilirsiniz.

Bu uygulamaları deney kartı üzerinde yapalım.

Kodların derlendiğini .hex dosya oluşturulduğunu varsayarak sırayla işlemleri yazalım;

- PC’de USB HID Bootloader programını açıyoruz.

- Kartı USB porta taktığımızda hemen (5 sn içinde) “Connect” butonuna tıklıyoruz.

- “Browse for HEX” butonuna tıklayarak yüklemek istediğimiz .hex dosyayı seçiyoruz.

- Son adım olarak “Begin Uploading” butonu ile PIC’e programı yüklüyoruz.

Görüldüğü gibi mikro saniyeler içinde program yüklenecek ve PIC tekrar başlıyacaktır. yaklaşık 5 sn sonra PIC’e yüklediğimiz program çalışmaya başlayacaktır.

Daha sonraki programı yüklemek için RST butonuna basıyoruz ve yukarıdaki adımları tekrarlıyoruz.

PIC tekrar başladığında bütün ledler 1 saniye yandıktan sonra sönecektir. PC’den USB HID terminal programını açıyoruz. Orada USB PIC18F4550 Deney Kiti olarak cihazı göreceksiniz.

Görüntü aşağıdaki gibi olacaktır.



Butona basıldığında RE0’a bağlı Led yanacak ve USB Terminalde sayı gösterilecektir.

Başarılar...

Çevrimdışı selimkoc

  • Kıdemli
  • ****
  • İleti: 435
    • Elektronik ve Robotikle ilgili blog
Ynt: USB HID Bootloader'li PIC18F4550 Deney Kartı
« Yanıtla #6 : 16 Eylül 2014, 06:23:00 »
Uygulama 5: PC'den Deney Kartı Kontrolü

Bu uygulamada USB Hid Terminal üzerinden göndereceğim sayı PORTE üzerindeki led'lerde görünecek.   
Kod: [Seç]

void main()
{
  ADCON1=0x1F;  // Analog girişler kapalı- Bütün analog pinler dijital-
  TRISB=1;      // Buton giriş diğerleri çıkış
  TRISE=0;      // PORTE çıkış
  LATE=0x07;    // Bütün ledler ON
  Delay_ms(1000); // 1 sn yanık kalsın
  LATE=0;        // Bütün ledler OFF
  HID_Enable(&readbuff,&writebuff);           // Enable HID communication
  do
  {
    while(!HID_Read())
    {
     LATE=readbuff[0];
    }
  }while(1);
}

Çevrimdışı selimkoc

  • Kıdemli
  • ****
  • İleti: 435
    • Elektronik ve Robotikle ilgili blog
Ynt: USB HID Bootloader'li PIC18F4550 Deney Kartı
« Yanıtla #7 : 17 Eylül 2014, 02:26:13 »
Uygulama 6: 7segment Sayıcı

Bu uygulamada Kart üzerindeki USER butonu ile ortak katot 4'lü mux 7 segment display ve USB Terminal üzerinde sayıcı yapacağız. USER butonuna her basıldığında birer artarak sonucu 7segment display ve USB HID termal üzerinde göreceğiz.

Devre Şeması :

« Son Düzenleme: 17 Eylül 2014, 10:58:18 Gönderen: selimkoc »

Çevrimdışı muhendisbey

  • Profesyonel Üye
  • *****
  • İleti: 2403
Ynt: USB HID Bootloader'li PIC18F4550 Deney Kartı
« Yanıtla #8 : 17 Eylül 2014, 06:11:23 »
Merhaba
Elinize sağlık güzel çalışma olmuş, devamı gelir inşallah.
Size bir sorum olacak, Burada kullanılan PIC'e önce Pickit ile bootloader atmanız gerekmiyor mu?
İyi Çalışmalar.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.

Çevrimdışı selimkoc

  • Kıdemli
  • ****
  • İleti: 435
    • Elektronik ve Robotikle ilgili blog
Ynt: USB HID Bootloader'li PIC18F4550 Deney Kartı
« Yanıtla #9 : 17 Eylül 2014, 06:52:52 »
Evet önce USB bootloader atılması gerekiyor.

Çevrimdışı muhendisbey

  • Profesyonel Üye
  • *****
  • İleti: 2403
Ynt: USB HID Bootloader'li PIC18F4550 Deney Kartı
« Yanıtla #10 : 17 Eylül 2014, 08:55:33 »
Bu bootloaderın linkini de eklerseniz daha faydalı olur diye düşünüyorum. Çünkü farklı tipte bootloaderlar var, bazıları third party.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.

Çevrimdışı selimkoc

  • Kıdemli
  • ****
  • İleti: 435
    • Elektronik ve Robotikle ilgili blog
Ynt: USB HID Bootloader'li PIC18F4550 Deney Kartı
« Yanıtla #11 : 17 Eylül 2014, 12:52:01 »
7 segment sayıcı uygulama videosu :



mesaj birleştirme:: [time]17 Eylül 2014, 23:03:05[/time]

Uygulama 7: PWM

Bu uygulamada Kart üzerindeki USER butonu ile pwm duty oranı 10'ar arttırılıyor.
Kod: [Seç]
unsigned char pwmOran=127;
void main()
{
  ADCON1=0x1F;  // Analog girişler kapalı- Bütün analog pinler dijital-
  TRISB=1;      // Buton giriş diğerleri çıkış
  TRISE=0;      // PORTE çıkış
  LATE=0x07;    // Bütün ledler ON
  Delay_ms(1000); // 1 sn yanık kalsın
  LATE=0;        // Bütün ledler OFF
  PWM1_Init(10000);
  PWM1_Set_Duty(pwmOran);
  PWM1_Start();
  while(1)
  {
    if(!RB0_bit)
    {
      LATE0_bit=1;
      Delay_ms(180);
      pwmOran+=10;
      PWM1_Set_Duty(pwmOran);
      LATE0_bit=0;
    }
 
  }
}

Bu da ölçüm sonuçları

« Son Düzenleme: 17 Eylül 2014, 14:05:06 Gönderen: selimkoc »

Çevrimdışı selimkoc

  • Kıdemli
  • ****
  • İleti: 435
    • Elektronik ve Robotikle ilgili blog
Ynt: USB HID Bootloader'li PIC18F4550 Deney Kartı
« Yanıtla #12 : 22 Eylül 2014, 10:56:58 »
Uygulama 8: Datalogger

Bu uygulamada SD/MMC kart kullanarak birer dakikalık aralıklarla LDR üzerindeki ışık değerini kaydedecek bir uygulama yapacağız. Zaman aralıklarını timer ve kesme kullanarak tespit edeceğiz.

Devre şeması :




Çevrimdışı selimkoc

  • Kıdemli
  • ****
  • İleti: 435
    • Elektronik ve Robotikle ilgili blog
Ynt: USB HID Bootloader'li PIC18F4550 Deney Kartı
« Yanıtla #13 : 25 Eylül 2014, 04:46:05 »
USB HID Bootloder'li PIC Deney Kartını kullanan arkadaşlar kartla ilgili bir problem çıktı mı?

Başka derleyicilerle kullanan var mı?

Çevrimdışı M_B

  • Profesyonel Üye
  • *****
  • İleti: 1325
Ynt: USB HID Bootloader'li PIC18F4550 Deney Kartı
« Yanıtla #14 : 25 Eylül 2014, 07:53:47 »
USB HID Bootloder'li PIC Deney Kartını kullanan arkadaşlar kartla ilgili bir problem çıktı mı?
Hayır hocam herhangi bir sıkıntı yaşamadım.


İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet