XC8 değişken tanımlama problemi!!!

Başlatan serdararikan, 09 Temmuz 2017, 13:17:15

serdararikan

XC8 ile örneğin 1000 elemanlı bir dizi tanımlamaya çalışıyorum.bu dizinin absolute adresli olmasını istiyorum.MPLAB dan CCI modunu aktif ettim.

unsigned char Dizi[1000] __at(0x100);

şeklinde diziyi tanımlıyorum.dizi benim istediğim adresten itibaren tanımlanıyor.buraya kadar sıkıntım yok.fakat xc8 kendi kullandığı bazı değişkenleri benim dizimi tanımladığım hafıza bloğu içerisinde tanımlıyor.böyle olunca dizi içerisinde benim bilmediğim ve kontrol edemediğim değişkenler yerleşiyor.ne yaptıysam bir türlü bir çözüm bulamadım.bu gibi bir sorunla karşılaşan oldu mu?

baran123

#1
Hocam birde şunu deneyin.

unsigned char Dizi[1000] @ 0x100; 

mufitsozen

Alıntı yapılan: serdararikan - 09 Temmuz 2017, 13:17:15
XC8 ile örneğin 1000 elemanlı bir dizi tanımlamaya çalışıyorum.bu dizinin absolute adresli olmasını istiyorum.MPLAB dan CCI modunu aktif ettim.

unsigned char Dizi[1000] __at(0x100);

şeklinde diziyi tanımlıyorum.dizi benim istediğim adresten itibaren tanımlanıyor.buraya kadar sıkıntım yok.fakat xc8 kendi kullandığı bazı değişkenleri benim dizimi tanımladığım hafıza bloğu içerisinde tanımlıyor.böyle olunca dizi içerisinde benim bilmediğim ve kontrol edemediğim değişkenler yerleşiyor.ne yaptıysam bir türlü bir çözüm bulamadım.bu gibi bir sorunla karşılaşan oldu mu?

MCU nedir?
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

serdararikan

18k46k22

@ ile de denedim.sonuç aynı.float kütüphanesi içindeki bir bit değerini benim tanımladığım dizi aralığına yerleştiriyor derleyici.bunu fark ettim

mufitsozen

Alıntı yapılan: serdararikan - 09 Temmuz 2017, 20:13:49
18k46k22

@ ile de denedim.sonuç aynı.float kütüphanesi içindeki bir bit değerini benim tanımladığım dizi aralığına yerleştiriyor derleyici.bunu fark ettim

Datasheet'e bakinca 0x100-0x1ff arasinda GPR var.




Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

mufitsozen

#5
sabit adresleri kullanmakdaki amaciniz nedir? Tam olarak ne yapmak istiyorsunuz?

derlediginiz programin MAP dosyasini koyabilirmisinz?
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

serdararikan

0x100 adresini örnek olarak verdim. ben 0x200 olarak tanımlamaya çalışıyorum.fark ettiğim olay şu xc8 bit olarak tanımlanan değişkenler için bitvars1 bitvars2... gibi 1 byte lık değişkenler tanımlıyor.işin ilginç olan kısmı bu değişkenleri kafasına göre konumlandırıyor olması.bunu farkettikten sonra bit tipindeki değişkenleri kullanmaktan vazgeçtim fakat float kütüphesinde geri dönüş tipi bit olan birkaç fonksiyon var bunları kullandığım için benim dizimin içinde olacak şekilde bitvars1 adında 1 byte lık değişken konumlandırmış. bir türlü çözemedim olayı