Pic Kit 2 ile Arduino programlama

Bu derste PICkit 2 programlayıcısı ile nasıl Arduino ve ATMEGA serisi yongaları programlayabileceğinizi anlatmaya çalışacağım.

Ön bilgi

PICkit 2 MicroChip firmasının üretmiş olduğu bir programlayıcı.

Bu bölümde Pic Kit2 ile ATMEGA yongalarının nasıl programlanabileceği anlatılmıştır.

pk2cmd ve avrdude programının kurulumu

Ubuntu altında PICKit2 kullanarak ATMEGA serisi yongaları programlayabilmek için iki tane yazılım kurmanız gerekebilir. Derleyici yazdığımız programları hex uzantılı dosyalara çeviriyor. Derleyici olarak avrdude programını kullanacağız. Derleyici kurulumu için

$ sudo apt-get install avrdude

yazmamız yeterli.

pk2cmd programı ise oluşturulan hex dosyasını mikro denetleyiciye atarak programlıyor.Şimdi bu programın kurulumuna bakalım.

Bu programı kurduğumuzda /usr/local/bin dizinine kuruyor. Linux çalıştırılabilir dosyaların listesini PATH ortam değişkeni içinde tutuyor. Bu nedenle eğer programı kuracağımız dizin PATH içinde yoksa eklememiz gerekecek.

$ echo $PATH
/home/erdem/bin:/usr/local/bin:/usr/bin:/bin:/usr/games

Eğer ''$PATH'' içinde /usr/local/bin göremiyorsanız bir editörle ev dizinizdeki .profile dosyasını açarak aşağıdaki satırları ekleyin.

$ gedit ~/.profile

export PATH=$PATH:/usr/local/bin

Değişikliklerin etkili olabilmesi için bilgisayarı, ya da oturumu kapatıp tekrar açmamız gerekecek.

pk2cmd programını kaynak kodundan derleyerek kuracağız.İlkönce eğer kurulu değilse libusb-dev kütüphanesini kurmanız gerekebilir.

$ sudo apt-get install libusb-dev

Komut satırından yazılımı indirip açıp kurmak için aşağıdaki komutları verelim.

$ wget http://ww1.microchip.com/downloads/en/DeviceDoc/pk2cmdv1.20LinuxMacSource.tar.gz
$ tar xf pk2cmdv1.20LinuxMacSource.tar.gz
$ cd pk2cmdv1.20LinuxMacSource
$ make linux
$ sudo make install
$ sudo cp /usr/share/pk2/PK2DeviceFile.dat /usr/local/bin/

Bu noktada PIC kit2'yi takıp her şeyin PIC kit2'nin algılandığını teyit etmek için aşağıdaki komutları verebilirsiniz.

$ pk2cmd -?V
Executable Version:    1.20.00
Device File Version:   1.55.00
OS Firmware Version:   2.32.00
Operation Succeeded

Devreyi kuralım

PIC Kit2'yi deneme tahtasına takmak için 6'lı bağlantı uçlarını hafifçe kıvırabilirsiniz. Yeşil üçgene dikkat edin PIC Kit2'nin 1 numaralı ucunu gösteriyor.

Pic Kit2 bağlantı uçları

Gerekli izinler

Seri port izinlerini vermek için aşağıdaki komutu kullanabilirsiniz.

sudo chmod a+rw /dev/ttyACM0

PIC Kit2 ile Arduino programlama

Linux altında uç birimden, komut satırından Arduino programlarının nasıl derleneceğine bakalım.

Arduino her uygulama için bir dizin oluşturuyor. Biz de ilk isimli bir dizin oluşturalım.

Bu kütüğü arduino.mk ismi ile aynı dizine kaydedelim.

Aynı dizinde Makefile ismi ile bir kütük oluşturup içine şunları girelim.

BOARD := pro.16MHzatmega328
include arduino.mk

Kart olarak Arduino Pro Mini 16 MHz olarak seçtik.

Diğer kartları görmek için make boards yazabilirsiniz.

İlk önce Arduino'nun kurulu olduğu ARDUINODIR dizinini belirtmek gerekiyor.

Eğer bulamazsa

ARDUINODIR is not set correctly; arduino software not found

gibi bir hata verebilir.

Arduino'yu nereye indirdi iseniz bu dizine bir bağ oluşturuyoruz.

$ sudo ln -s /home/erdem/Programlar/arduino-1.8.19 /usr/share/arduino

Bilgisayarı tekrar başlatıp açınız.

Artık ilk örneğimizi yazabiliriz. Aşağıdaki örneği ilk.ino ismi ile kaydediniz.

#include <Arduino.h>

/* İlk uygulama */

int ledCikis = 9;


void setup()
{
    // 9 numaralı ucu çıkış olarak ayarla 
    pinMode(ledCikis, OUTPUT);
}

void loop()
{
    digitalWrite(ledCikis, HIGH);
    delay(100);
    digitalWrite(ledCikis, LOW);
    delay(100);
}

Programı derlemek için make komutunu verebilirsiniz.

Make komutunu verdikten sonra dizinde ilk.hex isimli bir kütük oluştu. Oluşan kütüğü mikrodenetleyiciye yüklemek için aşağıdaki komutu verebiliriz.

avrdude -c pickit2 -p m328p -v -V -U flash:w:"ilk.hex":a

Eğer bu komut başarılı oldu ise uygulamanın mikrodenetleyiciye yazıldığına dair bir ileti görebilirsiniz.

Uygulamayı yükledik ama bir şey göremiyoruz.

PICkit 2 kullanarak devreye enerji vermek için aşağıdaki komutu verebiliriz.

pk2cmd -pPIC16F84A -I -R -T

Enerjiyi kesmek için ise aşağıdaki komutu verebiliriz.

pk2cmd -pPIC16F84A

Derlemeyi hızlandırmak

Uzun yoldan ATMega328P yongalarını PICkit 2 ile nasıl programlayacağımızı öğrendik.

Acaba bu işi kısaltabilir miyiz?

Evet.

Make kütükleri tam da bu iş için kullanılıyor.

Oluşturduğumuz make kütüğünü aşağıdaki gibi değiştirip Makefile ismi ile kaydedelim.

KAYNAK := $(shell ls -tp *.ino | cut -f 1 -d '.')
BOARD := pro.16MHzatmega328
include arduino.mk

yükle:
    make
    avrdude -c pickit2 -p m328p -v -V -U flash:w:"$(KAYNAK).hex":a
    make başla

başla:
    pk2cmd -pPIC16F84A -I -R -T

dur:
    pk2cmd -pPIC16F84A

Artık make yükle yazarak mikro denetleyiciye yazılım yükleyebiliriz.

Eğer make başla yazarsanız sadece devreye güç verir. Eğer make dur yazarsanız beslemeyi keser.

Uygulamanın kaynak kodunu burada bulabilirsiniz.

Çekirdek yükleyebilir mi?

Acaba PICkit2 uçmuş bir yonganın çekirdeğini yükleyebilir mi?

Arduino geliştirme ortamı ile çekirdek yüklediğinizde sadece yazılımı atmakla kalmıyor sigortaları da ayarlıyor.

Elle çekirdek yüklemede bu olmuyor. Bu yüzden yeni bir yonga kullanıyorsanız programlama yarım kalmış oluyor.

1) Arduino geliştirme ortamı ile çekirdeği yükleyin

2) Komut satırından avrdude ile ilk adımda ayarlanan sigorta ayarlarını geri okuyun.

3) Her yeni yongaya çekirdek yükleyip programladığınızda 2. adımda öğrendiğiniz sigorta bitlerini giriniz.

4) Yeni alınmış her yonga aldığınızda 3. adımı tekrar ediniz.

Malzeme listesi

  • Pic Kit2 programlayıcı ve kablosu
  • Yarım boy deneme kartı
  • ATMEGA328P mikro denetleyici
  • 10 kΩ Direnç
  • 220 Ω Direnç
  • 5mm kırmızı led
  • 16 Mhz kristal
  • 22 pF Sığaç (kondansatör) (2 adet)
  • 1×6 Bağlantı Ucu
  • Kablo

Yorumlar

yorum yaz

Yorum yaz


ipli jeton

5V'tan daha düşük besleme voltajı kullandığınız durumlarda da, harici besleme kullansanız da PICkit2'nin VDD girişini devreye bağlamalısınız. VDD bağlamazsanız PICkit2 harici devrenizin lojik seviyesini bilemez 5V seviyesinde haberleşmeye çalışır. Bu da hedef devrenizin lojik seviyesi 2.5V, 3.3V gibi 5V'tan daha düşük değerlerde ise mikrodenetleyicinize zarar verebilirsiniz. Arduino özelinde Arduino 5V lojik seviyesinde çalıştığından VDD bağlantısı yapmasanız da olabilir.

yanıtla

Yorum yaz

erdem

Selam. Yorumunuzu yeni gördüm.

Herhalukârda PICkit2'nin VDD bağlantısı olmalı diyorsunuz.

Bir de ATMega328P'lere çekirdeği yüklerken sigorta bitlerini de kullanmışız.

Aradan uzun zaman geçtiği için neden kullandığımızı hatırlayamadım.

Elimizde 4 tane ATMega328P vardı.

"Hepsine çekirdek atmamıza rağmen Arduino Uno içine takarak yazılım yükleyemiyoruz."

yazacaktım.

Baktım bir tanesinin hem bazı ayakları kırık üzerinde 1223 yazıyor. Diğerlerinin üzerinde 1409 yazıyor. Hepsinde ATMEGA328P-PU yazıyor.

Kırık olanı taktık. Boş uygulamayı ve ışık yakmayı yükledik. Çalıştı.

Arduino'yu seri programcı olarak kullanarak diğerlerine işletim sistemi yüklemek düşünülebilir.

yanıtla

Yorum yaz

erdem

Ayakları kırık olan mikro denetleyiciden diğer ATMega328P'lere çekirdek yükledik.

Arabayı 5 saniye ileri 5 saniye geri götüren ufak bir yazılım yazmıştık. İlk başta doğru çalışmıyordu. Şimdi düzeldi.

Hali hazırda hem Arduino Uno'yu hem de PICkit 2'yi programcı olarak kullanıyoruz.

Dersi de biraz güncelledik.

yanıtla

Yorum yaz