Picproje Elektronik Sitesi

DERLEYİCİLER => Diğer Derleyiciler => KEIL => Konuyu başlatan: Gökhan BEKEN - 31 Ağustos 2015, 12:24:27

Başlık: Ynt: Blok içinde array tanımlama sorunu
Gönderen: Gökhan BEKEN - 31 Ağustos 2015, 12:24:27
unsigned int a=0,b=0;
unsigned short stereo[DMA_BUFFER_SIZE]; //bu dizi main fonksiyonunun içinde tanimlanirsa ses cikmiyor
unsigned int sayac=0;
while(1)
{
if(izin==1){
a=0;b=0;
for(a=0;a<DMA_BUFFER_SIZE;a+=2){
stereo[a]=sesWav[sayac+b];
stereo[a+1]=stereo[a];
b++;
}
dmagonder((unsigned short*)&stereo[0]);
sayac+=DMA_BUFFER_SIZE/2;
if(sayac>DOSYA_BOYUTU)
sayac=0;

izin=0;
}
}

Yukarıdaki kodda "stereo" adlı dizi, main fonksiyonunun içinde tanımlanırsa, ses çıkmıyor, ama main.h içinde veya main fonksiyonunundan önce tanımlarsam sorun yok. Neden olabilir? C ile mi alakalı, optimizasyon ile mi alakalı anlamadım, (bazı sorunlardan dolayı optimizasyon seviye 0'da deneyemiyorum)
Aydınlatırsanız sevinirim.

mesaj birleştirme:: 31 Ağustos 2015, 12:28:41

DMA_BUFFER_SIZE sabiti 240 olarak tanımlı iken bu sorun yok, fakat 480 yaparsam sorun var.
Başlık: Ynt: Blok içinde array tanımlama sorunu
Gönderen: AsHeS - 31 Ağustos 2015, 13:20:23
stack yetmiyordur.
Başlık: Ynt: Ynt: Blok içinde array tanımlama sorunu
Gönderen: Gökhan BEKEN - 31 Ağustos 2015, 13:40:12
Bir sorum daha var, bir bayrağım var, ben bunu int veya unsigned int olarak tanımlarsam, ilk değer olarak 1 verdiğim halde program içinde 0 olarak görüyor. (başka hiç bir yerde değer vermediğim halde böyle)
Ama char veya unsigned char yaparsam bozulmuyor. Bu sorun da beni bayağı uğraştırdı. Sebebini bilen var mı?