XC8 ADC library çalışmıyor.

Başlatan Mr.Java, 14 Temmuz 2013, 17:52:25

yldzelektronik

Teşekkürler.Peki bu float tipi neden desteklenmiyor diyo acaba bende?Virgüllü sayılarla işlem yapmam gerekli ancak yapamıyorum.Ayrıca printf için ;

D:/My_Library/For_Pic/Twimaster.c:27: error: conflicting declarations for variable "_printf" (C:\Program Files (x86)\Microchip\xc8\v1.20\include\stdio.h:206)

Hatasını veriyor.Anlayamıyorum.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

Mr.Java

Bence o hata yine kütüphanenin eklenememesi hatası olmasın ?  :D

Erol YILMAZ

typedef bit              BOOLEAN;
typedef unsigned char    INT8U;
typedef signed   char    INT8S;
typedef unsigned int     INT16U;
typedef signed   int     INT16S;

void AdcConfig(INT8U channel){
INT8U   adc_charge;

#if defined   _16F616
    ADCON0 = (channel << 2) + 0x81;      // enable ADC,
#endif

#if defined   _16F819
    ADCON0 = (channel << 3) + 0xC1;      // enable ADC,
#endif

#if defined   _16F883
    ADCON0 = (channel << 2) + 0xC1;      // enable ADC,
#endif

#if defined   _18F4321
    ADCON0 = (channel << 2) + 0x01;      // enable ADC,
#endif

#if defined   _18F2423
    ADCON0 = (channel << 2) + 0xC1;      // enable ADC, RC osc.
#endif

#if defined   _18F4423
    ADCON0 = (channel << 2) + 0xC1;      // enable ADC, RC osc.
#endif

#if defined   _18F24K22
    ADCON0 = (channel << 2) + 0x01;      // enable ADC
#endif

    for(adc_charge=0; adc_charge<100; adc_charge++);

return;
}


/*******************************************************************************
*******************************************************************************/
INT16U AdcReadLL(INT8U channel){

INT16U  adc_sonuc;

    AdcConfig(channel);
    
    GO_nDONE = 1;   
    while (GO_nDONE);
    adc_sonuc = ((ADRESH << 8) + ADRESL);

return(adc_sonuc);
}

yldzelektronik

typedef enum {
  I2C_ERROR_NONE,
  I2C_BUS_ERROR = 1,
} I2C_ERROR;


Şeklinde bir tanımlamam var.Source file içinde başlarda bir yerde.Aynı file içinde ;

I2C_ERROR hyt271_get_measurements(float* humidity, float* temperature)


şeklinde bir fonsiyon oluşturmaya çalışıyorum.Ancak;

CLEAN SUCCESSFUL (total time: 102ms)
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory `C:/Users/Atlantis Otomation/MPLABXProjects/Hyt_271.X'
make  -f nbproject/Makefile-default.mk dist/default/production/Hyt_271.X.production.hex
make[2]: Entering directory `C:/Users/Atlantis Otomation/MPLABXProjects/Hyt_271.X'
"C:\Program Files (x86)\Microchip\xc8\v1.20\bin\xc8.exe" --pass1  --chip=16F1825 -Q -G  --double=24 --float=24 --opt=default,+asm,-asmfile,+speed,-space,-debug --addrqual=ignore --mode=free -P -N255 -I"D:/My_Library/For_Pic/include" -I"C:/Program Files (x86)/Microchip/xc8/v1.20/include" --warn=0 --cci --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf "--errformat=%%f:%%l: error: %%s" "--warnformat=%%f:%%l: warning: %%s" "--msgformat=%%f:%%l: advisory: %%s"  -obuild/default/production/main.p1  main.c 
:: warning: 24-bit floating point types are not supported; float have been changed to 32-bits
:: warning: 24-bit floating point types are not supported; double have been changed to 32-bits
"C:\Program Files (x86)\Microchip\xc8\v1.20\bin\xc8.exe" --pass1  --chip=16F1825 -Q -G  --double=24 --float=24 --opt=default,+asm,-asmfile,+speed,-space,-debug --addrqual=ignore --mode=free -P -N255 -I"D:/My_Library/For_Pic/include" -I"C:/Program Files (x86)/Microchip/xc8/v1.20/include" --warn=0 --cci --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf "--errformat=%%f:%%l: error: %%s" "--warnformat=%%f:%%l: warning: %%s" "--msgformat=%%f:%%l: advisory: %%s"  -obuild/default/production/Twimaster.p1  Twimaster.c 
:: warning: 24-bit floating point types are not supported; float have been changed to 32-bits
:: warning: 24-bit floating point types are not supported; double have been changed to 32-bits
Twimaster.c:30: warning: function declared implicit int
"C:\Program Files (x86)\Microchip\xc8\v1.20\bin\xc8.exe" --pass1  --chip=16F1825 -Q -G  --double=24 --float=24 --opt=default,+asm,-asmfile,+speed,-space,-debug --addrqual=ignore --mode=free -P -N255 -I"D:/My_Library/For_Pic/include" -I"C:/Program Files (x86)/Microchip/xc8/v1.20/include" --warn=0 --cci --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf "--errformat=%%f:%%l: error: %%s" "--warnformat=%%f:%%l: warning: %%s" "--msgformat=%%f:%%l: advisory: %%s"  -obuild/default/production/dew_point.p1  dew_point.c 
:: warning: 24-bit floating point types are not supported; float have been changed to 32-bits
:: warning: 24-bit floating point types are not supported; double have been changed to 32-bits
"C:\Program Files (x86)\Microchip\xc8\v1.20\bin\xc8.exe" --pass1  --chip=16F1825 -Q -G  --double=24 --float=24 --opt=default,+asm,-asmfile,+speed,-space,-debug --addrqual=ignore --mode=free -P -N255 -I"D:/My_Library/For_Pic/include" -I"C:/Program Files (x86)/Microchip/xc8/v1.20/include" --warn=0 --cci --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf "--errformat=%%f:%%l: error: %%s" "--warnformat=%%f:%%l: warning: %%s" "--msgformat=%%f:%%l: advisory: %%s"  -obuild/default/production/i2c.p1  i2c.c 
:: warning: 24-bit floating point types are not supported; float have been changed to 32-bits
:: warning: 24-bit floating point types are not supported; double have been changed to 32-bits
"C:\Program Files (x86)\Microchip\xc8\v1.20\bin\xc8.exe" --pass1  --chip=16F1825 -Q -G  --double=24 --float=24 --opt=default,+asm,-asmfile,+speed,-space,-debug --addrqual=ignore --mode=free -P -N255 -I"D:/My_Library/For_Pic/include" -I"C:/Program Files (x86)/Microchip/xc8/v1.20/include" --warn=0 --cci --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf "--errformat=%%f:%%l: error: %%s" "--warnformat=%%f:%%l: warning: %%s" "--msgformat=%%f:%%l: advisory: %%s"  -obuild/default/production/usart.p1  usart.c 
:: warning: 24-bit floating point types are not supported; float have been changed to 32-bits
:: warning: 24-bit floating point types are not supported; double have been changed to 32-bits
"C:\Program Files (x86)\Microchip\xc8\v1.20\bin\xc8.exe"  --chip=16F1825 -G -mdist/default/production/Hyt_271.X.production.map  --double=24 --float=24 --opt=default,+asm,-asmfile,+speed,-space,-debug --addrqual=ignore --mode=free -P -N255 -I"D:/My_Library/For_Pic/include" -I"C:/Program Files (x86)/Microchip/xc8/v1.20/include" --warn=0 --cci --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf "--errformat=%%f:%%l: error: %%s" "--warnformat=%%f:%%l: warning: %%s" "--msgformat=%%f:%%l: advisory: %%s"   -odist/default/production/Hyt_271.X.production.elf  build/default/production/main.p1 build/default/production/Twimaster.p1 build/default/production/dew_point.p1 build/default/production/i2c.p1 build/default/production/usart.p1     
Microchip MPLAB XC8 C Compiler V1.20
Copyright (C) 2013 Microchip Technology Inc.
License type: Node Configuration

:: warning: 24-bit floating point types are not supported; float have been changed to 32-bits
:: warning: 24-bit floating point types are not supported; double have been changed to 32-bits
Twimaster.c:13: error: function "_hyt271_get_measurements" redefined
(908) exit status = 1
make[2]: Leaving directory `C:/Users/Atlantis Otomation/MPLABXProjects/Hyt_271.X'
make[1]: Leaving directory `C:/Users/Atlantis Otomation/MPLABXProjects/Hyt_271.X'
make[2]: *** [dist/default/production/Hyt_271.X.production.hex] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2

BUILD FAILED (exit value 2, total time: 5s)


Şeklinde bir mesajla karşılıyor beni.Nerede hata yapıyorum?Ayrıca virgüllü sayıyı nasıl tanımlayabilirim?Float için nıt suppert diyor?
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

Erol YILMAZ

#include <xc.h>  
#include <stdio.h>

float fiss=4.32;

void main(void) {
   printf("Aaa %f", fiss);
}

void putch(char data){
   while (!TXIF)   continue;
   TXREG = data;    
   // bu kısmı incelemedim...
return;
}


Microchip MPLAB XC8 C Compiler V1.12
Copyright (C) 2012 Microchip Technology Inc.
License type: w

Memory Summary:
    Program space        used   A1Dh (  2589) of  2000h words   ( 31.6%)
    Data space           used    67h (   103) of   400h bytes   ( 10.1%)
    EEPROM space         used     0h (     0) of   100h bytes   (  0.0%)
    Configuration bits   used     0h (     0) of     2h words   (  0.0%)
    ID Location space    used     0h (     0) of     4h bytes   (  0.0%)

yldzelektronik

Şuanda çakılıp kalmış durumdayım.Öyle bir hata verdi ki :( Ne satır ne sütun numarası veriyor;

:0: error: undefined symbols:
        _USART_Status(dist/default/production\Hyt_271.X.production.obj) ___delay_ms(dist/default/production\Hyt_271.X.production.obj) 
(908) exit status = 1
make[2]: *** [dist/default/production/Hyt_271.X.production.hex] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
make[2]: Leaving directory `C:/Users/Atlantis Otomation/MPLABXProjects/Hyt_271.X'
make[1]: Leaving directory `C:/Users/Atlantis Otomation/MPLABXProjects/Hyt_271.X'

BUILD FAILED (exit value 2, total time: 17s)


Bu ne olabilir?
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

Tagli

#36
yldzelektronik, diğer başlıkta da fikrimi yazdım, buradaki diğer arkadaşlar da yazmış, senin sorunun derleyicinin kütüphane fonksiyonlarını görmemesi. Aldığın tüm hatalar bundan kaynaklanıyor. Maalesef bunun sebebi ve çözümüyle ilgili bir fikrim yok. Belki derleyiciyi ve MPLAB'ı silip tekrar kurmayı deneyebilirsin. Kurulum yerlerinin adreslerinde Türkçe karakter varsa sorun çıkarıyor olabilir.

atoi() falan gibi birkaç dahili fonksiyon var, bunları da bir dener misin çalışıyorlar mı diye?
Gökçe Tağlıoğlu

yldzelektronik

Sorunların tamamını hallettim.Yalnız proteusta simülasyon yapabilmek için cof dosyasına ihtiyacım var.Bu dosyayı bulamıyorum.Üretmiyor sanırım?Nasıl yapabilirim proteus da debug?
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

Tagli

Proje klasörünün içinde bulunuyor. projeAdi.X/dist/default/production içinde yani.
Gökçe Tağlıoğlu

Mr.Java

Hallettiyseniz nasıl yaptıklarınızı anlatın ki diğer zorlanan arkadaşlar yararlanabilsin..

AsHeS

Alıntı yapılan: Tagli - 16 Temmuz 2013, 13:33:59
Proje klasörünün içinde bulunuyor. projeAdi.X/dist/default/production içinde yani.
o cof dosyasiyla debug yapmayı hiç başaramadım hitechten sonra ekstra ayar mi gerektiriyor?

yldzelektronik

Alıntı yapılan: Fkarizmatik - 16 Temmuz 2013, 13:55:23
Hallettiyseniz nasıl yaptıklarınızı anlatın ki diğer zorlanan arkadaşlar yararlanabilsin..

Anlatacağım bir başlık açıp ama eve geçince malum iş yeri ;)
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

skara1214

evet nasıl hallettiğini hala bekliyoruz :D
Herkes ölür ama herkes gerçekten yaşamaz

yldzelektronik

#43
Alıntı yapılan: skara1214 - 04 Ağustos 2013, 00:34:10
evet nasıl hallettiğini hala bekliyoruz :D

Zaman ayırıp döküman hazırlamak istiyorum ancak çok da zaman ayıramadım.Bitiremedim dökümanı.Ben yaşadığım sorunları yazdım.Çözebildiklerimi de sırasıyla yazmıştım.En son yaşadığım sorunumun çözümü proje ayarlarından include ve source kodların yollarını göstermemizden geçiyor.Yani keilde olduğu gibi proje ayarlarından kütüphane dosyalarının yolunu gösteriyoruz.Eğer include edeceğimiz dosya xc klasöründeki lib klasöründe ise <> ile include ediyoruz.Eğer bizim tanımladığımız başka bir alanda ise "" ile include ediyoruz.Ayrıca her include ettiğimiz dosyada önceki dosyalar muhakkak include edilmiş olmalı.Örneğin usart kütüphanesi yazdığınız.Orada muhakkak mcunun headerı, gecikme varsa delay,printf varsa stdio dosyaları include edilmeli.Aksi durumda anlam vermediğiniz hatalar verebiliyor.Çok farklı mantık yürütmeniz gereken durumlar olabiliyor.Tanımladığınız değişken ile ilgili bir hata olduğunu gösterir ancak kütüphane yolunu doğru gösterince hata gider vs gibi.Ben halen veri tiplerini tam olarak çözemedim.float var double var.derlerken float için unspport diyor ama derliyor.garip biraz helper karıştırayım dedim o derleyiciden daha karışık çıktı.Projeler şu sıra acil olduğundan ccs ile devam ediyorum ama bu sırada notlarımı alıyorum toparlayabilirsem güzel döküman çıkacak ortaya inşallah.

Eğer sorun yaşayan arkadaş olursa sorsun biliyorsak zaten cevaplarız.Böylece döküman çıkana kadar bu şekilde yardım etmiş oluruz.

Bu arada bahsi geçen cof dosyasını ben hiç bulamadım.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

Tagli

Komiktir ki yıllar sonra bu meseleye ben de tosladım. Aslında daha önce de olmuştu ve çözmüştüm ama çözümü unutmuşum. 10 - 15 dakika kadar debelendikten sonra çözebildim (çözümü hatırlamaktan ziyade tesadüfen tekrar keşfettim).

Öncelikle, XC8'in yeni versiyonlarında kurulumla birlikte Peripheral Library gelmiyor. İndirmeler sayfasında "PIC18F Legacy Peripheral Libraries" yazan şeyi indirip kurmalısınız. Kurulum sırasında kurulum yeri olarak XC8'in mevcut versiyonunun kurulum yerini göstermek gerekiyor. Örneğin /opt/microchip/xc8/v1.38 gibi (Linux için tabi). Elbette derleyicinin yeni versiyonunu kurduğunuzda bu işlemi tekrarlamalısınız.

Yukarıdaki aşama tek başına yeterli değil, bunu yapmayı hatırlamış olduğum halde hata alıyordum. Project Properties > XC8 linker > Runtime ayarlarından "Link in Peripheral Library" seçeneğinin seçili olması gerekiyor. (Yeniden keşfettiğim ayrıntı buydu)

Bunun ardından projenizde #include <plib.h> demeniz yeterli. O zaten tüm diğer kütüphane header'larını ekliyor, sizin #include <adc.h> gibi ayrıca yazmanıza gerek yok.
Gökçe Tağlıoğlu