while döngüsünin içi boş olunca döngüden çıkılamıyor.

Başlatan tekosis, 19 Kasım 2018, 18:16:01

tekosis

Herkese kolay gelsin.
Bu program parçacığında dma ile adc okunduktan sonra okuma tamamlanınca dma kesmesi oluşuyor ve kesme içinde
adc_verisi_hazirmi=1
yapılıyor. while döngüsünün içini boş bırakırsam veya aşağıdaki şekilde bir kullanım yaptığımda(herhangi bir değişkene öylesine değer yüklediğimde) sistem cevap vermiyor, program while döngüsünden çıkamıyor.
HAL_ADC_Start_DMA(&hadc1,(uint32_t*)adcDt,8); 
 while(adc_verisi_hazirmi==0){  
 degiskenX=0;//*******
 } 
 adc_veri[0]= (adcDt[0] + adcDt[1] + adcDt[2] + adcDt[3] + .........

ama while içinde rasgele bir değişkene değer yüklemek yerine aşağıdaki gibi while içinde bir ledi yakarsam kod sıkıntısız işliyor, kesme oluşunca while döngüsünden  çıkabiliyorum. Bunun sebebi ne olabilir?
HAL_ADC_Start_DMA(&hadc1,(uint32_t*)adcDt,8); 
 while(adc_verisi_hazirmi==0){  
 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_SET);//*******
 } 
 adc_veri[0]= (adcDt[0] + adcDt[1] + adcDt[2] + adcDt[3] + .........
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.

Yuunus

break; neden kullanmiyorsunuz, sorun mu cikariyor.

mufitsozen

Alıntı yapılan: tekosis - 19 Kasım 2018, 18:16:01Bunun sebebi ne olabilir?
@tekosis

adc_verisi_hazirmi degiskenini volatile tanimlayin

yada

compiler optimizasyonlarini kapatiniz.

Forumda bu konular 4759 kere (yaklasik olarak) konusulmustu, o basliklari inceleyebilirsiniz.
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

ecunnu

adc_verisi_hazirmi degiskenini volatile tanimlarsan sorunun cozulebilir. Kolay gelsin.

tekosis

@digiman @ecunnu teşekkür ederim problem "volitale" ile halloldu.
@mufitsozen hocam size de teşekkür ederim. Ayrıca "4759 kere (yaklasik olarak) konusulmustu" demişsiniz, haklısınız. yorgunluktan googleye bakmak bile aklıma gelmedi.
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.

mufitsozen

Alıntı yapılan: tekosis - 20 Kasım 2018, 00:20:03@digiman @ecunnu teşekkür ederim problem "volitale" ile halloldu.
@mufitsozen hocam size de teşekkür ederim. Ayrıca "4759 kere (yaklasik olarak) konusulmustu" demişsiniz, haklısınız. yorgunluktan googleye bakmak bile aklıma gelmedi.


hangi compiler kullaniyorsun bilemiyorum ama "volitale" ile sorun cozulmez, illaki derleme sirasinda hata verir.  :P
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

tekosis

İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.


argelojik

Yeri gelmişken bu optimizasyonlar konusunu birisi açıklayabilir mi? Çok basit bir hatada 2 günüm gitmişti bu yüzden. Ben tam olarak optimizasyon kısmını anlayamadım. bir de heap size ve stack size konusu var bunu da tam anlayamadım. Bu konuda 4759 kere konuşuldu mu bilmiyorum ama.Teşekkürler

RaMu

Alıntı yapılan: argelojik - 20 Kasım 2018, 13:36:31...
 Ben tam olarak optimizasyon kısmını anlayamadım. bir de heap size ve stack size konusu var bunu da tam anlayamadım. Bu konuda 4759 kere konuşuldu mu bilmiyorum ama.Teşekkürler
Yok onlar en fazla 4758 defa (yaklaşık olarak) konuşulmuştur.

Bu sorular ben mevsimlerin nasıl oluştuğunu anlayamadım diyen bir coğrafyacı tadında oluyor.
Cevabı her yerde var yalnız temel birkaç konunun bilinmesi gerekiyor anlamak için.
Lojik kapılar, flip flop lar, işlemci mimarisi, mcu yapısı, opcode lar
bilinirse zaten anlamış olursunuz.
İngilizce kaynak isterseniz birkaç video önerebilirim.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html