ADC interrupt ile ilgili şu problem dikkatimi çekti.
Timer, ADC ye start veriyor. ADC int ürettiğinde int rutini içinde ADC değerlerini okuyorum.
Eğer bir başka int rutini içine uzunca bekleme yapan bir gecikme oluşturursam int rutininden çıksam bile bir süre sonra artık ADC int oluşmuyor.
Normalde kodlarımda bu tip gecikmeler yok. Programa eklemeler yaptığımda sorun olursa sorunu bulmak adına debug yaparken bu tip gecikmeli rutinler koyuyorum. Bahsettiğim olayın üstüne gitmedim. (Timer mı susuyor vs bakmadım)
Peş peşe gelen ADC interruptlar uzunca süre cevaplamadım diye daha sonra şartlar elverdiğinde ADC int rutinine girilmemesi bana mantıksız geldi.
Interrupt level'i ve stack'i sonsuz uzunlukta değil.
İyi de ADC int, bir başka int rutini işlendiği ve önceliği olmadığı için zaten cevaplanmıyor. Cevaplanmayınca da stacka atılan bir şey yok.
Hocam kaç interrupt var ve öncelikleri nelerdir ?
Sadece 2 int var. Öncelikleri de eşit.
Muhtemelen flag'larden bazıları asılı kalıyordur(interupt, over, error vs. flag gibi), silinmedikleri için yeni işlemler gerçekleşmiyordur.