CCS C, Ansi C uyumlu değil mi?

Başlatan XX_CİHAN_XX, 10 Şubat 2013, 00:26:40

XX_CİHAN_XX

Aşağıdaki gibi bir dizim var.
const unsigned char gImage_RightButton[1152] = { ... }


Bu diziyi bir fonksiyona aktarırken neden hata verdiğini anlayamadım.
Fonksiyonum şu şekilde:
void GLCD_Bmp (unsigned int16 x, unsigned int16 y, unsigned int16 w, unsigned int16 h, unsigned char *bmp) 
{
   ...
}


unsigned char *bmp yerine const unsigned char *bmp yazmayı da denedim neden kabul etmediğini anlayamadım?
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

SpeedyX

Hata nedir?

(unsigned char*)dizi olarak cast edip dener misin.

LukeSkywalker

İlk olarak sabit tanımladığınız diziyi ramde tanımlayarak dener misiniz?
Çok büyük ihtimal ile çalışacaktır.

XX_CİHAN_XX

Alıntı yapılan: SpeedyX - 10 Şubat 2013, 11:01:31
Hata nedir?

(unsigned char*)dizi olarak cast edip dener misin.

Attempt to create a pointer to a constant hatası alıyorum hocam. const türünden bir diziyi (unsigned char*)dizi bu şekilde almıyor çok saçma gerçekten.

Alıntı yapılan: LukeSkywalker - 10 Şubat 2013, 11:36:20
İlk olarak sabit tanımladığınız diziyi ramde tanımlayarak dener misiniz?
Çok büyük ihtimal ile çalışacaktır.

Hocam ram den alıyor da o benim işimi görmüyor.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

Klein

Fonksiyonu çağırdığın bölümü yükler misin?

XX_CİHAN_XX

Fonksiyonum şöyle hocam;
void GLCD_Bmp (unsigned int16 x, unsigned int16 y, unsigned int16 w, unsigned int16 h, unsigned char *bmp) 
{
  unsigned int16    i, j;
  unsigned int16 *bitmap_ptr;

  bitmap_ptr = (unsigned int16 *)bmp;
   LCD_SetDisplayWindow(x,y,h,w);
   LCD_WriteRAM_Prepare();
   
  bitmap_ptr += ((h*w)-1);
  for (j = 0; j < h; j++) {
    for (i = 0; i < w; i++) {
      LCD_WriteRAM(*bitmap_ptr--);
    }
  }
}


Bu fonksiyonu çağırma şeklim;
   GLCD_Bmp (258, 25, 24, 24, gImage_RightButton);   


Dizim de şu şekilde;
const unsigned char gImage_RightButton[1152] = { .. }
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

LukeSkywalker

#6
Fonksiyonun içerisindeki parametre değişecek. Küyüphaneye erişebiliyorsanız orada düzenleme yapın.

mesaj birleştirme:: 10 Şubat 2013, 14:06:54

void LCD_WriteRAM()
fonksiyonunu da verin.

XX_CİHAN_XX

Alıntı yapılan: LukeSkywalker - 10 Şubat 2013, 14:05:26
Fonksiyonun içerisindeki parametre değişecek. Küyüphaneye erişebiliyorsanız orada düzenleme yapın.

mesaj birleştirme:: 10 Şubat 2013, 14:06:54

void LCD_WriteRAM()
fonksiyonunu da verin.
Buyrun hocam,

void LCD_WriteData(uint16_t data)
{
   output_high(LCD_RS);    //LCD KOMUT MODU
   output_high(LCD_RD); output_low(LCD_WR); //LCD YAZMA MODUNDA
   output_low(LCD_CS);  //cs aktif edildi
#ASM NOP #ENDASM   
   output_c(data>>8);
   output_d(data&0x00FF);   
   output_high(LCD_CS);  //cs pasif edildi
   output_high(LCD_WR);  //yazma modundan çıkıldı
}

void LCD_WriteRAM(uint16_t RGB_Code)
{
   LCD_WriteData(RGB_Code);   //LCD_RAM e atar  (data)
}
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

LukeSkywalker

#8
unsigned int16 *bitmap_ptr;
bitmap_ptr = (unsigned int16 *)bmp;


satırlarını
unsigned int i=0;
unsigned int16 *bitmap_ptr;
while(bmp[i])
{ 
 bitmapptr[i]=bmp[i];
 i++;
}

yapın bakalım ne olacak?

Son değiştirdiğim gibi yapın ufak bir yanlışlık vardı...

XX_CİHAN_XX

Hocam "Attempt to create a pointer to a constant" hatasını
   GLCD_Bmp (258, 25, 24, 24, gImage_RightButton);   

satırına veriyor.
Sizin kodlarda bahsettiğiniz değişiklik yeri itibariyle derleyicinin verdiği hatayı etkilemedi.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

LukeSkywalker

En son değiştirdiğim hali ile denediniz mi?

XX_CİHAN_XX

Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

LukeSkywalker

void GLCD_Bmp (unsigned int16 x, unsigned int16 y, unsigned int16 w, unsigned int16 h, const unsigned char *bmp)



değişikliğini de yaptınız değil mi?
En son hali bu olacak;
unsigned int i=0;
unsigned int16 *bitmap_ptr;
while(bmp[i])
{ 
 bitmap_ptr[i]=bmp[i];
 i++;
}

XX_CİHAN_XX

#13
void GLCD_Bmp (unsigned int16 x, unsigned int16 y, unsigned int16 w, unsigned int16 h, const unsigned char *bmp)

Buradaki unsigned char a const ekleyince onunla ilgili bir dizi hata geldi hocam



CCS C de bir dandiklik olduğunu düşünmeye başladım çünkü aldığım hatalar pek normal değil :o
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

LukeSkywalker

gImage_RightButton[1152];
içerisindeki 1152'yi silip dener misiniz?