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

Başlatan serdararikan, 09 Temmuz 2017, 16: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

09 Temmuz 2017, 20:33:14 #1 Son düzenlenme: 09 Temmuz 2017, 20:34:39 baran123
Hocam birde şunu deneyin.

Kod Seç
unsigned char Dizi[1000] @ 0x100;  
İdrak i meali bu küçük akla gerekmez, zira bu terazi bu kadar sıkleti çekmez.

mufitsozen

Alıntı yapılan: serdararikan - 09 Temmuz 2017, 16: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?
Dünyanın en büyük sorunu, cahiller özgüven içindeyken akıllı insanların kuşkuyla dolu olmasıdır.

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, 23: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.




Dünyanın en büyük sorunu, cahiller özgüven içindeyken akıllı insanların kuşkuyla dolu olmasıdır.

mufitsozen

09 Temmuz 2017, 23:49:31 #5 Son düzenlenme: 09 Temmuz 2017, 23:51:07 mufitsozen
sabit adresleri kullanmakdaki amaciniz nedir? Tam olarak ne yapmak istiyorsunuz?

derlediginiz programin MAP dosyasini koyabilirmisinz?
Dünyanın en büyük sorunu, cahiller özgüven içindeyken akıllı insanların kuşkuyla dolu olmasıdır.

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ı