Erdem
Paylaşımcı üye
- Katılım
- 14 Ocak 2013
- Mesajlar
- 713
- Puanları
- 106
Arduino'ya komut satırından da yazılım yükleyebileceğinizi biliyor muydunuz?
İşte bu amaçla, asgari kütüphane kullanmaya da özen göstererek bir Make kütüğü oluşturdum.
İlk planda ev dizininde .profile kütüğüne Arduino'nun ve diğer geliştirici araçlarının olduğu dizini ekliyoruz.
Burada bazı make kütükleri Arduino kart bilgilerini içeren "boards.txt" kütüğünden faydalanıyor. Bu kütük $(ARDUINODIZINI)/hardware/arduino/avr/boards.txt dizininde bulunuyor.
Örneğin burada benim programladığım kart Arduino Pro Mini 5V, 16 MHz idi.
Görebileceğiniz üzere µ denetleyicinin saat hızı, hangi yongayı kullandığı (burada atmega328p), yükleme hızı ve çekirdek bilgileri var.
Komut satırından yükleyeceğimiz yazılım basit ışık yakan söndüren uygulama.
Kaynak kodu derleyen, bağlayan, hex biçimine çeviren, daha sonra programcıyı kullanarak bunu Arduino'ya yükleyen make kütüğümüz şu şekilde :
Kodu derlemek için make yazmanız yeterli. µ denetleyiciye yüklemek için make yükle yazıyoruz. make dur ise PICkit 2'ye özel olarak devreye verilen enerjiyi kesiyor.
Bu kütüğü diğer programlayıcılarla ve Arduino Uno ile de kullanabilirsiniz. avrdude tarafından desteklenen programlayıcıların listesini şu komutla görebilirsiniz :
PICkit 2 programcısına özel satırları yorum haline getirdim. PICkit 2 sadece yazılımı yüklemekle kalmıyor devreye enerji de verebiliyor.
Emacs ile beraber µ denetleyiciye bir kaç parmak hareketi ile (Ctrl-C (aynı anda) ve tekrar C'ye basarak) kolayca yazılım yükleyebiliyorsunuz.
İsterseniz AVR µ denetleyicisini programlamaya da adım atabilirsiniz.
Ancak PIC kılavuzları yaklaşık 200 sayfa iken AVR kılavuzlarının yaklaşık 1500 sayfa civarında olduğunu bilmenizde de fayda var.
İşte bu amaçla, asgari kütüphane kullanmaya da özen göstererek bir Make kütüğü oluşturdum.
İlk planda ev dizininde .profile kütüğüne Arduino'nun ve diğer geliştirici araçlarının olduğu dizini ekliyoruz.
export PATH="$PATH:"/home/erdem/programlar/arduino-1.8.13/hardware/tools/avr/bin""
export ARDUINODIR=~/programlar/arduino-1.8.13
Burada bazı make kütükleri Arduino kart bilgilerini içeren "boards.txt" kütüğünden faydalanıyor. Bu kütük $(ARDUINODIZINI)/hardware/arduino/avr/boards.txt dizininde bulunuyor.
Örneğin burada benim programladığım kart Arduino Pro Mini 5V, 16 MHz idi.
Görebileceğiniz üzere µ denetleyicinin saat hızı, hangi yongayı kullandığı (burada atmega328p), yükleme hızı ve çekirdek bilgileri var.
Komut satırından yükleyeceğimiz yazılım basit ışık yakan söndüren uygulama.
C++:
#include <Arduino.h>
int ledCikis = 13;
void setup()
{
// 13 numaralı ucu çıkış olarak ayarla
pinMode(ledCikis, OUTPUT);
}
void loop()
{
/*
İsterseniz bu bölüm boş olabilir ama her Arduino programında bu bölüm
bulunmalı
*/
digitalWrite(ledCikis, HIGH);
delay(1000);
digitalWrite(ledCikis, LOW);
delay(1000);
}
Kaynak kodu derleyen, bağlayan, hex biçimine çeviren, daha sonra programcıyı kullanarak bunu Arduino'ya yükleyen make kütüğümüz şu şekilde :
Makefile:
ARDUINO_DIZINI = /home/erdem/programlar/arduino-1.8.13/
KUTUPHANE_DIZINI = $(ARDUINO_DIZINI)hardware/arduino/avr/cores/arduino/
YUKLEYICI_DIZINI = $(ARDUINO_DIZINI)/hardware/tools/avr/etc/avrdude.conf
C_DERLEYICI = avr-gcc
CPP_DERLEYICI = avr-g++
BAGLAYICI = avr-ar
KOPYALA = avr-objcopy
YUKLE = avrdude
KAYNAK = deneme.cc
PROGRAM = $(patsubst %.cc,%,$(KAYNAK))
CPU_SAATI = 16000000
DENETLEYICI = atmega328p
YONGA = m328p
PROGRAMCI = pickit2
# bayraklar
BAYRAKLAR = -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=$(DENETLEYICI) -DF_CPU=$(CPU_SAATI)L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=106
CPP_BAYRAKLARI = $(BAYRAKLAR) -fno-exceptions
C_BAYRAKLARI = $(BAYRAKLAR)
BASLIK_DOSYALARI = "-I$(ARDUINO_DIZINI)hardware/arduino/avr/cores/arduino" "-I$(ARDUINO_DIZINI)hardware/arduino/avr/variants/standard"
derle:
@echo $(PROGRAM)
$(CPP_DERLEYICI) $(CPP_BAYRAKLARI) $(BASLIK_DOSYALARI) $(KAYNAK) -o deneme.o
$(C_DERLEYICI) $(C_BAYRAKLARI) $(BASLIK_DOSYALARI) $(KUTUPHANE_DIZINI)wiring.c -o wiring.o
$(C_DERLEYICI) $(C_BAYRAKLARI) $(BASLIK_DOSYALARI) $(KUTUPHANE_DIZINI)hooks.c -o hooks.o
$(C_DERLEYICI) $(C_BAYRAKLARI) $(BASLIK_DOSYALARI) $(KUTUPHANE_DIZINI)wiring_digital.c -o wiring_digital.o
$(CPP_DERLEYICI) $(CPP_BAYRAKLARI) $(BASLIK_DOSYALARI) $(KUTUPHANE_DIZINI)main.cpp -o main.o
$(BAGLAYICI) rcs cekirdek.a hooks.o
$(BAGLAYICI) rcs cekirdek.a wiring.o
$(BAGLAYICI) rcs cekirdek.a wiring_digital.o
$(BAGLAYICI) rcs cekirdek.a main.o
$(C_DERLEYICI) -Os -Wl,--gc-sections -mmcu=$(DENETLEYICI) -o deneme.elf deneme.o cekirdek.a -lm
$(KOPYALA) -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 $(PROGRAM).elf $(PROGRAM).eep
$(KOPYALA) -O ihex -R .eeprom $(PROGRAM).elf $(PROGRAM).hex
yükle:
$(YUKLE) -C $(YUKLEYICI_DIZINI) -c $(PROGRAMCI) -p $(YONGA) -v -V -U flash:w:"$(PROGRAM).hex":a
# pk2cmd -pPIC16F84A -I -R -T
dur:
# pk2cmd -pPIC16F84A
Kodu derlemek için make yazmanız yeterli. µ denetleyiciye yüklemek için make yükle yazıyoruz. make dur ise PICkit 2'ye özel olarak devreye verilen enerjiyi kesiyor.
Bu kütüğü diğer programlayıcılarla ve Arduino Uno ile de kullanabilirsiniz. avrdude tarafından desteklenen programlayıcıların listesini şu komutla görebilirsiniz :
$ avrdude -c birşeyler
PICkit 2 programcısına özel satırları yorum haline getirdim. PICkit 2 sadece yazılımı yüklemekle kalmıyor devreye enerji de verebiliyor.
Emacs ile beraber µ denetleyiciye bir kaç parmak hareketi ile (Ctrl-C (aynı anda) ve tekrar C'ye basarak) kolayca yazılım yükleyebiliyorsunuz.
İsterseniz AVR µ denetleyicisini programlamaya da adım atabilirsiniz.
Ancak PIC kılavuzları yaklaşık 200 sayfa iken AVR kılavuzlarının yaklaşık 1500 sayfa civarında olduğunu bilmenizde de fayda var.
Son düzenleme: