XC8 ADC library çalışmıyor.

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

Mr.Java

#15
Alıntı yapılan: AsHeS35 - 14 Temmuz 2013, 23:32:42
Yorum satırı değilde projede pic i seçerken pconfig.h içerisinde define yapılıyor.Eğer denetleyiciniz tanınıyorsa mutlaka bir adet define ADC_Vx   x:burada bir numara,
tanımlanmış olmalı.
#include <plib/pconfig.h>
ekleyip deneyebilir misiniz ?
Yok yine olmadı.#include <plib/adc.h> dedim olmadı.adc ve pconfig.h kütüphanelerini projeme ekleyip header fileden #include "adc.h" ve "pconfig.h" dedim yine görmedi.Daha sonra #include <plib/adc.h> açıp , #include <plib/pconfig.h> şeklinde değiştirdim pconfig.h'ı yine görmedi.Sorun farklı birşey.2222 satır kod düzeltmeye de gelmiyor.

mesaj birleştirme:: 15 Temmuz 2013, 09:06:26

Alıntı yapılan: yldzelektronik - 15 Temmuz 2013, 08:59:17
Acaba bu tip kütüphaneleri 16f serisi için kullanamıyorsak ki kullanamıyoruz 16f serisi için durum ne olacak?Kendi kütüphanemizi  mi yazmamız gerekiyor?

Sanırım evet.Kendi kütüphanemi de yazacaksam zaten XC8'e gerek kalmıyor.Hi-tech çok daha iyi.Çok daha güçlü.

yldzelektronik

Alıntı yapılan: Fkarizmatik - 15 Temmuz 2013, 09:04:00
Sanırım evet.Kendi kütüphanemi de yazacaksam zaten XC8'e gerek kalmıyor.Hi-tech çok daha iyi.Çok daha güçlü.

Bunu biraz açıklar mısın?
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

Mr.Java

Hocam kod optimasyonu iyi.Derleyici tam sürüm yapmak çok kolay.ANSI C standartlarında.Bana göre XC serisi ile tek dezavantajı kütüphane ve güncelleme desteğinin olmayışı.Oda çok sorun değil kanımca.Kullandığımız işlemciler az çok belli zaten.Ben tekrardan hi-tech döneceğim sanırım.XC8 tam oturana kadar.

Tagli

Donanım kütüphanesini gözde büyütmeye gerek yok. Herbiri yaklaşık 10 satırdan oluşan birkaç fonksiyondan ibaret. Datasheet'e bakılarak kısa süre içinde istenilen özellik dahil edilebilir. Hatta yükleme klasöründe yer alan mevcut c dosyalarından bile faydalanmak mümkün.
Gökçe Tağlıoğlu

yldzelektronik

#19
Donanım kütüphanemi ihtiyacım olduğu kadar oluşturdum ancak bir türlü şuna include edemedim.Çalışma ekranım aşağıdaki şekilde.Sorun nedir?Nerede hata yapıorum?

Bu proje özellikleri;

[IMG]http://imageshack.us/a/img7/900/9v99.jpg[/img]



Bu da çalışma ekranımdan.Proje ağacı da solda.Yanlış mı yapıyorum?

[IMG]http://imageshack.us/a/img7/3035/twcq.jpg[/img]


Ekleme:

#include <D:/My_Library/For_Pic/i2c/i2c.h> satırını;
#include <D:/My_Library/For_Pic/i2c/i2c.c> ile değiştirirsem

CLEAN SUCCESSFUL (total time: 201ms)
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" -I"D:/My Library/For_Pic/i2c" --warn=0 --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
(908) exit status = 1
make[2]: *** [build/default/production/main.p1] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
main.c:11: error: can't open include file "D:/My_Library/For_Pic/i2c/i2c.c": Invalid argument
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: 920ms)

Hatasını alıyorum.


O satırı açıklama satırı yaparsam yada silersem *ki aynı şey* ;

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" -I"D:/My Library/For_Pic/i2c" --warn=0 --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
"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" -I"D:/My Library/For_Pic/i2c" --warn=0 --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/_ext/772095139/i2c.p1  D:/My_Library/For_Pic/i2c/i2c.c
(908) exit status = 1
make[2]: *** [build/default/production/_ext/772095139/i2c.p1] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
D:/My_Library/For_Pic/i2c/i2c.c:1: error: can't open include file "i2c.h": No such file or directory
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: 3s)



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

Mr.Java

@yldzelektronik

kütüphaneleri proje ana dizinine atın.header fileden gösterin.#include "i2c.h" diye belirtin.include direction'u sıfırlayıp boş bırakın.
olmazsa mplab x'de include direction bu defa XC8 plib klasörünü göstersin.MPLABX'de ise plib.h dosyasını ekleyin tüm kütüphanelerin gelmesi lazım.Bu şekilde deneyin.
Yine olmazsa uğraşmayın silin gitsin xc8'i :)

yldzelektronik

Çıldırmamak elde değil.Yapan el oğlu nasıl yapıyor anlamıorum.Nerde hata yapıyorum bilmiyorum ki.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

Erol YILMAZ

Alıntı yapılan: yldzelektronik - 15 Temmuz 2013, 12:32:15
Çıldırmamak elde değil.Yapan el oğlu nasıl yapıyor anlamıorum.Nerde hata yapıyorum bilmiyorum ki.

Hakketen ilginç problemler,
MPLAB X yerine v 8 i deneseniz ? 

yldzelektronik

#23
Alıntı yapılan: Allegro - 15 Temmuz 2013, 12:47:53
Hakketen ilginç problemler,
MPLAB X yerine v 8 i deneseniz ? 

Bu kez de

Build C:\Users\Atlantis Otomation\MPLABXProjects\Hyt\Hyt271 for device 16F1825
Using driver C:\Program Files (x86)\HI-TECH Software\PICC\9.71a\bin\picc.exe

Make: The target "C:\Users\Atlantis Otomation\MPLABXProjects\Hyt\i2c.p1" is out of date.
Executing: "C:\Program Files (x86)\HI-TECH Software\PICC\9.71a\bin\picc.exe" --pass1 "C:\Users\Atlantis Otomation\MPLABXProjects\Hyt_271.X\i2c.c" -q --chip=16F1825 -P --runtime=default --opt=default -N-1 -D__DEBUG=1 -g --asmlist "--errformat=Error   [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
Error   [141] C:\Users\Atlantis Otomation\MPLABXProjects\Hyt_271.X\i2c.c; 1.16 can't open include file "I2C.h": No such file or directory
Make: The target "C:\Users\Atlantis Otomation\MPLABXProjects\Hyt\main.p1" is out of date.
Executing: "C:\Program Files (x86)\HI-TECH Software\PICC\9.71a\bin\picc.exe" --pass1 "C:\Users\Atlantis Otomation\MPLABXProjects\Hyt_271.X\main.c" -q --chip=16F1825 -P --runtime=default --opt=default -N-1 -D__DEBUG=1 -g --asmlist "--errformat=Error   [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
Error   [141] C:\Users\Atlantis Otomation\MPLABXProjects\Hyt_271.X\main.c; 8.15 can't open include file "xc.h": No such file or directory

********** Build failed! **********


Hatasını alıyorum.


mesaj birleştirme:: 15 Temmuz 2013, 13:52:06

Bu sorunu çözdüm.Sorun i2c.c dosyasında #include <i2c.h> şeklinde include ettiğim dosyayı "" şeklinde etmeme izin veriyormuş yanlızca.Ancak şimdi de tanımlanan registerleri undefined diye gösteriyor.Şöyleki;

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 --strict --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: "--strict" option may cause compiler errors in some standard header files
:: 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
(908) exit status = 1
make[2]: *** [build/default/production/i2c.p1] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
i2c.c:12: error: undefined identifier "SSPCON2bits_t"
i2c.c:12: error: struct/union required
i2c.c:23: error: undefined identifier "SSPCON2bits"
i2c.c:23: error: struct/union required
i2c.c:34: error: undefined identifier "SSPCON2bits"
i2c.c:34: error: struct/union required
i2c.c:45: error: undefined identifier "SSPCON2bits"
i2c.c:45: error: struct/union required
i2c.c:46: error: struct/union required
i2c.c:58: error: undefined identifier "SSPCON2bits"
i2c.c:58: error: struct/union required
i2c.c:59: error: struct/union required
i2c.c:83: error: undefined identifier "SSPCON2"
i2c.c:83: error: undefined identifier "SSPSTATbits"
i2c.c:83: error: struct/union required
i2c.c:97: error: undefined identifier "SSPSTAT"
i2c.c:98: error: undefined identifier "SSPCON1"
i2c.c:99: error: undefined identifier "SSPCON2"
i2c.c:103: error: undefined identifier "TRISCbits"
i2c.c:103: error: struct/union required
i2c.c:104: error: struct/union required
i2c.c:104: advisory: too many errors (21)
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: 1s)


Bu neden oluyor?İşlemcinin dosyasını da include ettim halbuki.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

Mr.Java

1) Belki olabilir diyerekten yazıyorum.Klasör isimi farklı isimlendirme sembol tarzı birşey var mı ?
2) Kütüphane yerine direk pic18.h include edin,sigorta ayarlarınızı yapın ve aşağıdaki kodu XC8'e göre derleyin hocam.Projeniz acilse uğraşamayın i2c kütüphanesiyle.
/*
Function: I2CInit
Return:
Arguments:
Description: Initialize I2C in master mode, Sets the required baudrate
*/
void I2CInit(void){
        TRISC3 = 1;      /* SDA and SCL as input pin */
        TRISC4 = 1;      /* these pins can be configured either i/p or o/p */
        SSPSTAT |= 0x80; /* Slew rate disabled */
        SSPCON = 0x28;   /* SSPEN = 1, I2C Master mode, clock = FOSC/(4 * (SSPADD + 1)) */
        SSPADD = 0x28    /* 100Khz @ 4Mhz Fosc */
}

/*
Function: I2CStart
Return:
Arguments:
Description: Send a start condition on I2C Bus
*/
void I2CStart(){
        SEN = 1;         /* Start condition enabled */
        while(SEN);      /* automatically cleared by hardware */
                     /* wait for start condition to finish */
}

/*
Function: I2CStop
Return:
Arguments:
Description: Send a stop condition on I2C Bus
*/
void I2CStop(){
        PEN = 1;         /* Stop condition enabled */
        while(PEN);      /* Wait for stop condition to finish */
                     /* PEN automatically cleared by hardware */
}

/*
Function: I2CRestart
Return:
Arguments:
Description: Sends a repeated start condition on I2C Bus
*/
void I2CRestart(){
        RSEN = 1;        /* Repeated start enabled */
        while(RSEN);     /* wait for condition to finish */
}

/*
Function: I2CAck
Return:
Arguments:
Description: Generates acknowledge for a transfer
*/
void I2CAck(){
        ACKDT = 0;       /* Acknowledge data bit, 0 = ACK */
        ACKEN = 1;       /* Ack data enabled */
        while(ACKEN);    /* wait for ack data to send on bus */
}

/*
Function: I2CNck
Return:
Arguments:
Description: Generates Not-acknowledge for a transfer
*/
void I2CNak(){
        ACKDT = 1;       /* Acknowledge data bit, 1 = NAK */
        ACKEN = 1;       /* Ack data enabled */
        while(ACKEN);    /* wait for ack data to send on bus */
}

/*
Function: I2CWait
Return:
Arguments:
Description: wait for transfer to finish
*/
void I2CWait(){
        while ( ( SSPCON2 & 0x1F ) || ( SSPSTAT & 0x04 ) );
    /* wait for any pending transfer */
}

/*
Function: I2CSend
Return:
Arguments: dat - 8-bit data to be sent on bus
           data can be either address/data byte
Description: Send 8-bit data on I2C bus
*/
void I2CSend(unsigned char dat){
        SSPBUF = dat;    /* Move data to SSPBUF */
        while(BF);       /* wait till complete data is sent from buffer */
        I2CWait();       /* wait for any pending transfer */
}

/*
Function: I2CRead
Return:    8-bit data read from I2C bus
Arguments:
Description: read 8-bit data from I2C bus
*/
unsigned char I2CRead(void){
        unsigned char temp;
/* Reception works if transfer is initiated in read mode */
        RCEN = 1;        /* Enable data reception */
        while(!BF);      /* wait for buffer full */
        temp = SSPBUF;   /* Read serial buffer and store in temp register */
        I2CWait();       /* wait to check any pending transfer */
        return temp;     /* Return the read data from bus */
}

yldzelektronik

#25
Şimdiye kadar karşılaştığım bütün sorunları çözdüm.I2c için kütüphanedeki dosyalara bakarak kendi i2c libimi oluşturdum.Ancak iş usart geldi ve ben tıkandım.Bir de bunun delayı var ve ben hiç bişey düşünemiyorum o konuda. Xc8 de 16f serisi için usart kütüphaneniz mevcut mudur?

mesaj birleştirme:: 15 Temmuz 2013, 22:49:31

Usart için printf benzeri bir formatı nasıl elde edebilirim?Yani printf ile string ve diğer tipte verileri gönderebiliyoruz.Ancak xc8 de durum biraz farklı sanırım.Ne yapılabilir?Öneriniz var mı?Sizler ne kullanıyorsunuz?
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

Mr.Java

Hocam zaten çözdüyseniz sorun yoktur.Ben Hi-tech C usart fonksyonunu gönderiyorum editlersiniz tekrardan.Ayrıca printf komutu aynen windows'taki gibi stdio.h dosyasında mevcut fakat çok fazla yer kapladığı için tavsiye edilmiyor.
http://www.dosya.tc/server13/OZBLhA/usart.rar.html

AsHeS

#27
Alıntı yapılan: yldzelektronik - 15 Temmuz 2013, 22:44:39
Şimdiye kadar karşılaştığım bütün sorunları çözdüm.I2c için kütüphanedeki dosyalara bakarak kendi i2c libimi oluşturdum.Ancak iş usart geldi ve ben tıkandım.Bir de bunun delayı var ve ben hiç bişey düşünemiyorum o konuda. Xc8 de 16f serisi için usart kütüphaneniz mevcut mudur?

mesaj birleştirme:: 15 Temmuz 2013, 22:49:31

Usart için printf benzeri bir formatı nasıl elde edebilirim?Yani printf ile string ve diğer tipte verileri gönderebiliyoruz.Ancak xc8 de durum biraz farklı sanırım.Ne yapılabilir?Öneriniz var mı?Sizler ne kullanıyorsunuz?
Öncelikle donanımsal UART ise problem 16f887 için usart kodları
void UARTSetup(void) {
    SYNC = 0;
    BAUDCTLbits.BRG16 = 0;
    BAUDCTLbits.SCKP = 0;
    TXSTAbits.BRGH = 1;
    TXSTAbits.TX9 = 0;
    RCSTAbits.RX9 = 0;
    RCSTAbits.CREN = 1;
    RCSTAbits.SPEN = 1;
    SPBRGH = 0x00;
    SPBRG = 129; //20 MHz 9600 baud
    TXEN = 1;
    PIE1bits.RCIE = 1;
    RCIF = 0;
    TXIF = 0;
    INTCONbits.PEIE = 1;
    INTCONbits.GIE = 1;
}

Bu kodların tüm açıklaması datasheette mevcut.UART kanala printf kullanmak için putch() fonk. tanımlayın o da şöyle olmalı
void putch(char x) {
    while (!TRMT);
    TXREG = x;
}

yldzelektronik

delay kütüphanesini nasıl kullanıyorsunuz?Bunun hesabı nasıl yapılır?delays.h dosyası var kütüphanede ama nasıl kullansam onu bilemedim.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

Tagli

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