Picproje Elektronik Sitesi

BİLGİSAYAR => Linux => Konuyu başlatan: engin_ - 04 Mayıs 2006, 19:02:37

Başlık: Sdcc ile pic programı geliştirmek
Gönderen: engin_ - 04 Mayıs 2006, 19:02:37
Başlığın tam yeri değil ama ben linux da kullandığım için ayrıca burda derleyiciler bölümünde konu başlığı olmadığı için buraya yazıyorum. Tabi doğal olarak kendi kullandığım dağıtıma destek veriyorum ama diğer dağıtımları kullananlar içinde elimden geldiğince yardımcı olmaya çalışırım. Bu arada pek linux kullanan yok sanırım burda ya neyse...

Sdcc ile ansi c uyumlu kodlar yazarak aşağıdaki mcu ları kullanmak mümkün.
Intel 8051, Zilog Z80 tabanlı mcu lar, Amtel AVR, DS390, Microchip PIC serisi

Bende yeni kullanıyorum. Programın kurulmasından bahsetmiyeceğim. Archlinux kullanıcıları lapis depoyu kullanabilirler. Burda programı kurduğunuzda pic16f serisinin tüm üyeleri için başlık dosyaları mevcut olmadığından bu dosyaları kendimiz oluşturmamız gerekiyor. Bunun için gputils paketindeki başlık dosyaları kullanılıyor. Bunun için bir perl betiği hazırlanmış. Bu arada gputils paketini de lapis depoda bulabilirsiniz. Sdcc'yi windows da kullanmak da mümkün ama bu konuda deneyimim yok.

lapis depo: http://arch.linux-sevenler.org/

Kullanımı ise şöyle:
-----------------------------------------------------------------------------------

cd /usr/share/sdcc
wget http://cvs.sourceforge.net/viewcvs.py/*checkout*/sdcc/sdcc/support/scripts/inc2h.pl
mkdir pic
cd pic
for file in `ls /usr/share/gputils/header/p*.inc`
do export picstring=`echo $file | sed "s/\/usr\/share\/gputils\/header\/p//; s/.inc//"`
../../inc2h.pl $picstring /usr/share/gputils > pic$picstring.h
done
-----------------------------------------------------------------------------------

tabi burda /usr/share/sdcc ve /usr/share/gputils/header/  gibi path kısımları kullandığınız dağıtımlara göre uyarlamanız gerekiyor.

Evet bundan sonrası sdcc'yi kullanmaya kalıyor. Hemen basit bir uygulama yapalım.

/*

Compile: sdcc --debug -mpic14 -p16f84 karasimsek.c
Simulate: gpsim -pp16f84 -s karasimsek.cod karasimsek.asm

*/

#define __16f84
#include"pic/pic16f84.h"

typedef unsigned int word;
word at 0x2007 CONFIG = _XT_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF;

char i;

void ileri(void){
for(i=0;i<7;i++)
PORTB = PORTB << 1;
}

void geri(void){
for(i=0;i<7;i++)
PORTB = PORTB >> 1;
}

void main(void) {

TRISB = 0;       // PortB çıkış olarak ayarlanır
PORTB=1;       // PortB'ye 1 yüklenir. Yani PortB.0 biti yüksek seviye

while(1) {          // Sürekli döngü
ileri();
geri();
}
}


Açıklama kısmında belirttiğim gibi derlemek için:
Alıntı Yapsdcc --debug -mpic14 -p16f84 karasimsek.c

komutunu veriyoruz. Burda 16f84a için derlemeye uğraştıysamda başarılı olamadım. Gerekli başlık dosyalarının olmasına rağmen yok diyor. Aslında sonu "a" ile biten piclerin hepsinde aynı sorunu veriyor. Neyse bunu düzeltmek mümkün gözükmüyor. Ama üretilen hex kodu 16f84a'da büyük ihtimalle çalışır sanırım.

Ve programımızı test etmek için gpsim'i kullanıyoruz.
gpsim -pp16f84 -s karasimsek.cod karasimsek.asm

Gpsim'i de lapis depodan indirebilirsiniz. Gpsim de PIC'in portb bacaklarının sırayla sağdan sola, soldan sağa yandığını görmeniz gerekiyor. :)

Bunun dışında piklab adında güzel bir ide keşfettim.
http://piklab.sourceforge.net/index.php

Piklab kullanarak istediğiniz PIC'i bellek veya çalışma gerlimi gibi özelliklerine bakarak seçebilirsiniz. C ile yazdığınız programı sdcc veya desteklediği diğer compiler'lar ile derleme imkanınızda var. Derleme sonucu oluşan dosyaları da kontrol edebilirsiniz. Örneğin ne kadar bellek kullandığınız vb. Ve PIC'e yazılımı yükleyebilirsiniz. Archlinux kullanıcıları için aur da paketi mevcut. (Çeşke aur'a daha önce baksaydım, boşuna derledim)

Kaynak: http://ubicomp.lancs.ac.uk/%7Emartyn/sdcc_linux/

Bu arada bazı karekterler site gösteriminde kendiliğinden bozuluyor....
Başlık: Sdcc ile pic programı geliştirmek
Gönderen: Ziya - 04 Mayıs 2006, 19:29:05
sdcc ilk z80 için çıkmıştı. Sonra 8051 serisini destekledi. Ne de olsa parser ANSI C için yazılmış. Pic için bir grup destek atmıştı ama geçen yıldı sanırım, henüz geliştiriliyordu. Aslında sdcc güzel bir dil ve Dallas DS80c390 ve c400 için tavsiye ediyordu.

Pic ve AVR için yeni olduğundan belki biraz buglı olabilir. Sizin bu buglar konudaki deneyiminizi öğrenmek isteriz.
Başlık: Sdcc ile pic programı geliştirmek
Gönderen: engin_ - 04 Mayıs 2006, 20:19:32
Ben Sdcc'yi ilk dün kullandım. Daha önceden paketlemiştim ama başka işlerle uğraşmaktan vakit olmadı.

sourceforge bazı konularda bug bildirileri olmuş ama patch'lere bakılınca PIC konusunda destek sürdüğü gözüküyor.

Ben şuana kadar önemli bir sorunla karşılaşmadım ama önemli birşey de yapmadım.
Başlık: Sdcc ile pic programı geliştirmek
Gönderen: birkan - 09 Ağustos 2006, 14:25:00
Yukardaki kodları ben yazmıştım, ilk olarak boreas.gen.tr adresine göndermiştim. Aslında kodlarda hiç bir hata gözükmemesine ragmen  simulasyonda istediğim sonucu alamamıstım. Başlangıç niteliği taşıması açısından yinede yayınlanması için siteye vermiştim. Umarım artık düzelmiştir. Benim o kodları yazdığım dönemlerde sdcc c kodlarını doğru dürüst pic assembly koduna çeviremiyordu.
Başlık: Sdcc ile pic programı geliştirmek
Gönderen: engin_ - 11 Ağustos 2006, 00:45:12
@birkan vermiş olduğum kodları herhangi bir yerden bakmış değilim. Aynı şeyleri yazmış olmamız çok ilginç.
Başlık: Sdcc ile pic programı geliştirmek
Gönderen: birkan - 13 Ağustos 2006, 01:21:26
Alıntı yapılan: "engin_"@birkan vermiş olduğum kodları herhangi bir yerden bakmış değilim. Aynı şeyleri yazmış olmamız çok ilginç.

haklısın, uzun zaman geçti, sdcc ile karaşimşek denemesi yapmıştım ama oraya gönderdim kodla alakası yokmuş. afedersin

boreas