سلام و درود بر علمای عظام سیسوگ لند
دلایل توقف نمونه برداری واحد ADC رو DMA بعد از Half complete interrupt callback چیه عزیزان؟
در واقع بعد از پر شدن نیمی از بافرها با وقوع وقفه ی نیمه ی قرائت بقیه بافر ها چون وقفه full complete interrupt callback رخ نداده پر نمیشه و کلا واحد ADC قهر میکنه و هیچ خروجی برای پر کردن بافر نمیده اما وقتی تو KEIL V5 دیباگ مد رو فعال میکنم و پنجره رجیسترهای واحد ADC رو برای مانیتور کردن باز میکنم همه چیز درست میشه ! انگار که از اون جدول خجالت بکشه کار کنه همینچین جورایی ! تا اون پنجره رو میبندم بعد از اندکی دوباره قهر میکنه و از کار میفته!
لازمه عرض کنم بقیه واحدها بجز ADC و DMA با توایع LL هستند اما این دوتا HAL نوشته شده
بافرم در DMA روی Half word تنظیم شده و گزینه Continuous Conversion Mode هم فعاله و بقیه چیزها طبق پیشفرضه کیوبه
این اتفاق زمانی افتاد که خطوط کدهام زیر اون تابع بیش از 5 خط شد!
سپاس از همراهی شما و وقتی که میگذارید
بعبارتی DMA از 10 عضو آرایه نصف یا گاهی کمتر از اون رو پر میکنه و گهگداری بصورت تصادفی مقادیر عوض میشند.
اولویت اجرای وقفه هام هم برای یک تایمر 1 و برای DMA و ADC مقدار 0 لحاظ شده.
روی DMA Circular هم همینطور بود البته تابحال با dma circular من کار نکردم شاید نکته ای داشته که رعایت نکردم!
فقط تو کیوب مد رو گذاشتم رو چرخشی و بعد دیگه از داخل تابع محلی فراخوان رو کامنت کردم.
سلامی دوباره
دلیل بروز مشکل فوق محاسبه اشتباه در مورد نرخ نمونه برداری بود که با اصلاح آن حل شد