XC8'de sinir bozucu değişken problemi

Başlatan apsis, 04 Ocak 2017, 14:16:22

apsis

Merhabalar,
Son zamanlarda xc8 de int değişkenleri tanımlarken sıkıntı yaşıyorum. Değişkenker hiç bir şekilde negatif olmuyor. Ayrıca  <stdint.h> kütüphanesiyle de denedi olmadı. Normalde başına signed ya da normal int yazdığımda negatif sayıları tanıması gerekli. Önceden böyle bişey başıma gelmiyordu. Aynı durum char değişkenleri için de geçerli. Sinirlerim bozuldu  >:( . Bu durumu yaşayan ya da yardım edebilecek var mı?
"Makineye Beyin" MEKATRONİK

eeburakdemir

Deneme olarak aynı şekilde netbeans de aynı kısmı deneyebilir misin ? aynı sorunla karşılaşacak mısın acaba ?
Asla pes etme...

vitruvius

Sorununuzu yansıtan  minimum uzunlukta bir örnek verirseniz biz de deneyip bakalım.

apsis

@vitruvius hocam normal değişken tanımladım. Özel bir şey yapmadım.
"Makineye Beyin" MEKATRONİK

apsis

#4

sağda değişkenlerden biri -1 biri 0 gözüküyor. iki değişkeni yer değiştridiğimde bu sefer diğeri -1 diğeri de 0 oluyor. Yav arkadaş neden öyle bir saçmalık var. Kürekli diyemi hep bunlar.

@eeburakdemir dediğin gibi netbeans a geçtim en azından yukarıdaki gibi oldu. yani birisi eksiye indi. Bunun netbeans profiliyle ne alakası var?
"Makineye Beyin" MEKATRONİK

vitruvius

Birazdan bakacağım da Proteus'u salla, MPLAB ile debug yaparken de böyle mi görüyorsun değerleri?

Bu arada şunu söylemeliyim ki char tipi değişken için işaret bildirmezsen otomatik olarak unsigned tanımlanır.

Alıntı yapılan: MPLAB® XC8 C Compiler User's Guide, Bölüm: 5.4.2, Sayfa: 143If no signedness is specified in the type, then the type will be signed except for the char types which are always unsigned.

apsis

char'ı işaretli belirttiğim halde de tanımıyor. Proteus değişken değerlerini doğru gösteriyor. Değişkenleri aynı şekilde global tanımladığımda bu sorun ortadan kalktı. Ancak yerel değişkenlerde bu sorun oluşuyor.
"Makineye Beyin" MEKATRONİK

eeburakdemir

Alıntı yapılan: apsis - 04 Ocak 2017, 14:43:34

sağda değişkenlerden biri -1 biri 0 gözüküyor. iki değişkeni yer değiştridiğimde bu sefer diğeri -1 diğeri de 0 oluyor. Yav arkadaş neden öyle bir saçmalık var. Kürekli diyemi hep bunlar.

@eeburakdemir dediğin gibi netbeans a geçtim en azından yukarıdaki gibi oldu. yani birisi eksiye indi. Bunun netbeans profiliyle ne alakası var?

@apsis mplabx netbeans arayüzünü ve temelini kullanıyor. Bazı güncellemelerde pc inde netbeans varsa onuda güncelliyor. Ben bazı programlar için denemelerimi burada yapıyorum daha rahat oluyor , o yüzden tavsiye ettim. Şunu dener misin birde, CTRL basılı tutup int üzerine tıkladığında kaynak koduna gitmen gerekiyor. Seni acaba doğru yere götürüyor mu ? Hepsi tamam yine de aynı ise , sanırım bu tanımlamalar bir alt fonksiyonda gerçekleşiyor, bu yüzden int başına static yazıp denemeni tavsiye ederim.
Asla pes etme...

HeCToR

@apsis

main içerisinde import ederken sıralamaya uymanda fayda var.

#include <xc.h>                                                               
#include <stdio.h>                                                           
#include <stdlib.h>                                                           
#include <string.h>
#include <stdint.h>

<stdint.h> içerisine başlıkları import edip satır sonuna 2 #endif atıp denermisin.

#ifndef	__STDINT_H
#define	__STDINT_H

/* 
*
* tipler vs.
*
*/

#endif
#endif
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir

apsis

@eeburakdemir normal "int" içinCTRL tuşuyla fonksiyon ya da kütüphane kaynak dosyalarına geçiş yapılabiliyor. "int8_t" şeklindeki yazımda ilgili .h doyasında gösteriyor ve burada
#ifndef int8_t
typedef signed char int8_t;
#define int8_t int8_t
#define INT8_MIN (-128)
#define INT8_MAX (127)
#endif

şeklinde aralıklarla tanımlanıyor ancak yine de yerel değişknlerde bu sıkıntı oluşuyor.
@HeCToR  bende sadece aşağıdakiler ekli.
#include <xc.h>
#include <stdint.h>
#include "lcd.h"

senin gösterdiğin kütüphaneleri denediğimde de düzelme olmadı.

MPLAB'de debug'da da proteusta gözüktüğü biçimde gözüküyor
"Makineye Beyin" MEKATRONİK

HeCToR

@apsis library içeriğini denedinmi main içinde import ettikten sonra yine olmazsa pc ile alakalı bir sıkıntı var compilerı ilaçlı kullanıyorsun değilmi optimizasyonu pro olarak seçtinmi çalışmış olduğun proje başlığı altında son ihtimal komple silip ideyi ve compilerı yeniden kur.
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir

eeburakdemir

@apsis şimdi compiler direk suçlamak istemiyorum. Kütüphanedeki tanımı direk yaptığında olmuyorsa yazılımı biraz daha kontrol etmek gerekebilir. Biliyorsun ki insan böyle durumlar da biraz daha dikkatsiz olabiliyor ve gözden kaçma ihtimali artıyor :) . Duruma göre artık silip tekrar yükleyeceğim dersen bilemem. Önce yazılımın hatasız olması lazım. Bunu takip etmek amacıyla led vs takip edebileceğiniz olaylar ile kontrol etmekte fayda var. Tabi compiler yüzde yüz haklıdır demiyorum , crack işini tam yaptınız mı ? Ayrıca güncellendi ya mplabx 3.5 geldi geçenlerde. Bu farkı optimizasyon ettikten sonra derleyince alt kısımda pro yada free yazısından ayırt edilebiliyor.
Asla pes etme...

HeCToR

#12
@apsis xc8 compilerda çok sıkıntılar ve hatalar var daha oturtamadılar bu yüzden sürekli güncellemeler geliyor zaten :D kodunuzu paylaşın deneyelim daha önceki yazımdada kurulum hatası yapmış olabilirsiniz bana sorarsanız hi-tech kullanın derim
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir

apsis

@HeCToR H-TECH kullanmak isterim ama full kürekli bulamıyorum. Varsa paylaşırsanız makbule geçer. Optimizasyon pro'da
@eeburakdemir  IDE versiyon 2.2 compiler ise 1.33 hiç güncellemedim. Kürek uygulamasını ise forumdaki bir konudan yararlanarak yapmıştm. İki yıldır kullanıyordum böyle bir olay başıma ilk kez geldi. Son versiyon için kürekli bir bağlantı varsa deneyebilirim.
"Makineye Beyin" MEKATRONİK

HeCToR

@apsis eve geçince bakıyım hi-tech için var bende xc8 için aynı kürek bütün versionlarda geçerli.
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir