MPLABX 'de XC8 ile 16F serisi kullanımı

Başlatan fryrmnd, 26 Temmuz 2012, 16:02:50

fryrmnd

Merhaba arkadaşlar. Bir türlü boş main fonksiyonunu derleyemedim. picc.ini de 16f628A nın başına pic ekledim olmadı. bir arkadaş bölgesel dil ayarlarından bahsetmiş. 2 . bir çözüm olarak da make file ların birinde bir değişiklik göstermişti sanırım onu da denedim bir sonuç alamadım. 16f seris için XC8 i mplab ile kullanan varsa yardım edebilir mi?

a.zorba

26 Temmuz 2012, 16:38:51 #1 Son düzenlenme: 26 Temmuz 2012, 16:41:48 a.zorba
herhangi bir sıkıntı yok pic tanımlamalaırnı aşagıdaki örnek yol gösterebılir.
ide olarak  mplabx ,  compıler    xc8  kullanıldı.

dil ayarları filan yanlış hatırlamıyorsam hitech i mplabx ile kullanmak istersen yapılıyordu .


#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#include <pic16f876a.h>
#include "delay.h"


#define buton PORTAbits.RA1  // porta1 e buton ad? ver?ld?
#define led1  PORTCbits.RC0   // led lerle portlar e?le?t?r?ld?
#define led2  PORTCbits.RC1
#define led3  PORTCbits.RC2


void main (void)
{
    
ADCON1 0x0F;
	
// ADC iptal.
TRISA=0xFF;
TRISC=0x00;
PORTA=0;
PORTC=0;

     if (
buton==0)  // buton a basılmışsa
         
led1=1;    // led1 i yak
         
DelayMs(100);    // bekle
         
led1=0;        // led1 i söndur

led2=1;    // program koşma sırasında davranışı gormek ıçın yazıldı led2 ve led3 yanar soner
DelayMs(100);  // 100 ms lik gec?kme
led2=0;
DelayMs(100);
led3=1;
DelayMs(100);  // 100 ms lik gec?kme
led3=0;
DelayMs(100);

return;  
// programın daima koşması için

}


İçinizdeki düşmanlık yakıp yıkmayı hoşgörüyorsa yerine koyacağınız sistemin özgürlük olacağını mı düşünüyorsunuz?

fryrmnd

26 Temmuz 2012, 16:46:48 #2 Son düzenlenme: 26 Temmuz 2012, 16:48:19 fryrmnd
hocam yazdığım şu

#include <xc.h>
#include <pic16f628a.h>
void main(void)
{
    
}



verdiği hata da bu

:: errorchip "PIC16F628A" not present in chipinfo file "C:\Program Files (x86)\Microchip\xc8\v1.01\dat\picc.ini"

Tagli

#include <pic16f628a.h> satırını kullanmana gerek yok. Hatta belki de hataya sebep olan odur. PIC seçimini MPLAB X'in proje ayarlarından yap.
Gökçe Tağlıoğlu

fryrmnd

26 Temmuz 2012, 18:04:14 #4 Son düzenlenme: 26 Temmuz 2012, 18:07:25 fryrmnd
yok tagli hocam. ben de picin header ını eklemiyordum. zorba hocamın örnek koduna binaen deniyim dedim gene aynı. pic seçimini de dediğiniz gibi proje ayarlarından yapıyorum. ama gene aynı sonuç.

a.zorba

26 Temmuz 2012, 19:05:43 #5 Son düzenlenme: 26 Temmuz 2012, 19:08:57 a.zorba
bir sorun yok ,  programı kaldırıp  yenıden kurmayı dene .

#include <xc.h>
#include <pic16f628a.h>
void main(void)
{
    
}


buda cıkdısı
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make
[1]: Entering directory `C:/New Folder/628deneme.X'
make  -f nbproject/Makefile-default.mk dist/default/production/628deneme.X.production.hex
make[2]: Entering directory 
`C:/New Folder/628deneme.X'
"C:\Program Files\Microchip\xc8\v1.01\bin\xc8.exe" --pass1  --chip=16F628A -Q -G --asmlist  --double=24 --float=24 --emi=wordwrite --opt=default,+asm,-asmfile,+speed,-space,-debug,9 --addrqual=ignore -P -N255 --warn=0 --summary=default,-psect,-class,+mem,-hex,-file --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+config,+clib,+plib "--errformat=%%f:%%l: error: %%s" "--warnformat=%%f:%%l: warning: %%s" "--msgformat=%%f:%%l: advisory: %%s"  -obuild/default/production/_ext/1697874529/newmain.p1  "C:/New Folder/628deneme.X/newmain.c" 
"C:\Program Files\Microchip\xc8\v1.01\bin\xc8.exe"  --chip=16F628A -G --asmlist -mdist/default/production/628deneme.X.production.map  --double=24 --float=24 --emi=wordwrite --opt=default,+asm,-asmfile,+speed,-space,-debug,9 --addrqual=ignore -P -N255 --warn=0 --summary=default,-psect,-class,+mem,-hex,-file --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+config,+clib,+plib "--errformat=%%f:%%l: error: %%s" "--warnformat=%%f:%%l: warning: %%s" "--msgformat=%%f:%%l: advisory: %%s"   -odist/default/production/628deneme.X.production.cof  build/default/production/_ext/1697874529/newmain.p1     
Microchip MPLAB XC8 C Compiler (Free Mode)  V1.01
Copyright (C) 2012 Microchip Technology Inc.
(1273) Omniscient Code Generation not available in Free mode (warning)

Memory Summary:
    Program space        used     4h (     4) of   800h words   (  0.2%)
    Data space           used     2h (     2) of    E0h bytes   (  0.9%)
    EEPROM space         used     0h (     0) of    80h bytes   (  0.0%)
    Configuration bits   used     0h (     0) of     1h word    (  0.0%)
    ID Location space    used     0h (     0) of     4h bytes   (  0.0%)


Running this compiler in PRO mode, with Omniscient Code Generation enabled,
produces code which is typically 40% smaller than in Free mode.
See http://microchip.com for more information.

make[2]: Leaving directory `C:/New Folder/628deneme.X'
make[1]: Leaving directory `C:/New Folder/628deneme.X'

BUİLD SUCCESSFUL (total time: 6s)
Loading code from C:/New Folder/628deneme.X/dist/default/production/628deneme.X.production.hex...
Loading symbols from C:/New Folder/628deneme.X/dist/default/production/628deneme.X.production.cof...
Loading completed
İçinizdeki düşmanlık yakıp yıkmayı hoşgörüyorsa yerine koyacağınız sistemin özgürlük olacağını mı düşünüyorsunuz?

fryrmnd

acaba derleyiciden mi mplabx den mi. C18 de 18F serisi ile sıkıntı yok. şimdi baktım. XC8 18 serisini de derlemesi gerkmiyor mu. 18 serisi için proje oluşturdum. C18 derleyicisini görüyor sadece.

a.zorba

kullandıgın XC8 versiyonu nedir 1,0,0  ise 1,0,1 e yukseltıp denermısın 
İçinizdeki düşmanlık yakıp yıkmayı hoşgörüyorsa yerine koyacağınız sistemin özgürlük olacağını mı düşünüyorsunuz?

Tagli

Gökçe Tağlıoğlu

fryrmnd

27 Temmuz 2012, 18:12:25 #9 Son düzenlenme: 27 Temmuz 2012, 19:42:18 fryrmnd
versiyon 1.01 ama plugin yüklü değil. aslında plugin i olduğundan hbaerim bile yok. bir de plugin yükleyip deneyeyim. teşekkürler arkadaşlar.

mesaj birleştirme:: 27 Temmuz 2012, 19:39:53

mplabx 1.3 yükledim. kurulum başlangıcında xc8 ile ilgili tüm ayar kutucuklarını da tik ledim. şuan derleyebiliyorum.

http://www.microchip.com/forums/m647154.aspx

şurda yazdığına göre de 1.2 sonrası plugin mplabx ile beraber geliyormuş.  tekrardan teşekkürler arkadaşlar.

a_a_sezen

Alıntı yapılan: Tagli - 26 Temmuz 2012, 17:47:00
#include <pic16f628a.h> satırını kullanmana gerek yok. Hatta belki de hataya sebep olan odur. PIC seçimini MPLAB X'in proje ayarlarından yap.

Hocam, satırı çıkarınca ilgili header da define edilmiş hiç bir şeyi tanımıyor.
Dediğiniz gibi proje oluştururken pic seçimini zaten yapıyorum.

Bir de XC8 ile delay_ms() gibi içinde delay geçen hiç bir makro yok galiba.
delay.h diye bir kütüphane yok. delays.h var onda da tanımlı bir şey göremedim. İşe de yaramadı zaten.
Help dosyasında xc8 için görünmüyor.
XC8 ile hemen her şey programcının sırtında mı yoksa? Herkes kendi kütüphanesini mi yazacak. "otursun yazsın makro nesine" mi demişler.
Ya da siz yorumlarmısınız.
Yazdıklarımı "giriş seviyesinden" değerlendirirseniz memnun olurum.
Güce ve Geleceğe Güvenle...

fryrmnd

ben işlemciyi sadece project oluştururken seçtim ve sadece "xc.h" dosyasını include ettim. mplabx 1.3, xc8 1.01. isterseniz tekrar kurulum yapın.
delay kütüphanesi 16F serisi için bildiğim benim de yok. hitech in delay kütüphanelerini kullanabilirsin. pek iyi değil diyorlar ama. 18F serisi için C18 in kütüphaneleri kullanılıyor bildiğim. 16F serisi için ya netten bulucaksınız yada kendiniz yazıcaksınız.

a_a_sezen

En yukarıdaki kodu kopyala yapıştır yapıp denemiştim.
PORTAbits tanımınıda çözemedim uyarısı verince yazdım.
1.30 versiyonu indirip öncekini kaldırıp kurunca şimdi sadece DelayMs kaldı tanımsız olarak.
İşin başında MicroC kullandığım Ansi C string fonksiyonlarında saçmalayınca (strcmp, strtok) güvenli bir derleyiciye alışayım alışmışken diye düşünmüştüm.
Güce ve Geleceğe Güvenle...

fryrmnd

Delay ms için

delay.h
/*
 *
	
Delay functions for HI-TECH C on the PIC
 *
 *
	
Functions available:
 *
	
	
DelayUs(x)
	
Delay specified number of microseconds
 *
	
	
DelayMs(x)
	
Delay specified number of milliseconds
 *
 *
	
Note that there are range limits: x must not exceed 255 - for xtal
 *
	
frequencies > 12MHz the range for DelayUs is even smaller.
 *
	
To use DelayUs it is only necessary to include this file; to use
 *
	
DelayMs you must include delay.c in your project.
 *
 */

/*
	
Set the crystal frequency in the CPP predefined symbols list in
	
HPDPIC, or on the PICC commmand line, e.g.
	
picc -DXTAL_FREQ=4MHZ
	

	
or
	
picc -DXTAL_FREQ=100KHZ
	

	
Note that this is the crystal frequency, the CPU clock is
	
divided by 4.

 *
	
MAKE SURE this code is compiled with full optimization!!!
	

 */

#ifndef
	
XTAL_FREQ
#define
	
XTAL_FREQ
	
4MHZ
	
	
/* Crystal frequency in MHz */
#endif

#define
	
MHZ
	
*1000L
	
	
	
/* number of kHz in a MHz */
#define
	
KHZ
	
*1
	
	
	
/* number of kHz in a kHz */

#if
	
XTAL_FREQ >= 12MHZ

#define
	
DelayUs(x)
	
{ unsigned char _dcnt; \
	
	
	
  
_dcnt = (x)*((XTAL_FREQ)/(12MHZ)); \
	
	
	
  while(--
_dcnt != 0) \
	
	
	
	
  continue; }
#else

#define
	
DelayUs(x)
	
{ unsigned char _dcnt; \
	
	
	
  
_dcnt = (x)/((12MHZ)/(XTAL_FREQ))|1; \
	
	
	
  while(--
_dcnt != 0) \
	
	
	
	
  continue; }
#endif

extern void DelayMs(unsigned char);



delay.c
/*
 *
	
Delay functions
 *
	
See delay.h for details
 *
 *
	
Make sure this code is compiled with full optimization!!!
 */

#include
	
"delay.h"

void
DelayMs
(unsigned char cnt)
{
#if
	
XTAL_FREQ <= 2MHZ
	
do {
	
	
DelayUs(996);
	
} while(--
cnt);
#endif

#if    XTAL_FREQ > 2MHZ
	

	
unsigned char
	
i;
	
do {
	
	
4;
	
	
do {
	
	
	
DelayUs(250);
	
	
} while(--
i);
	
} while(--
cnt);
#endif
}


dosyalarını kullanın.

Tagli

MPLAB X'i vd XC derleyicilerini tam oturtamadılar henüz. Çeşitli sorunlar çıkabiliyor. Oturması biraz zaman alacaktır, sabretmek lazım.
Gökçe Tağlıoğlu

Yasal Uyarı: Picproje.org sitemizde 5651 sayılı kanunun 8. maddesine ve T.C.Knın 125. maddesine göre tüm üyelerimiz yaptıkları paylaşımlardan kendileri sorumludur. Picproje.org hakkında yapılacak tüm hukuksal şikayetleri İletişim sayfamızdan bize bildirdikten en geç 3 (üç) iş günü içerisinde ilgili kanunlar ve yönetmelikler çerçevesinde tarafımızca incelenerek gereken işlemler yapılacak ve site yöneticilerimiz tarafından bilgi verilecektir.