بررسی علت عدم دریافت صحیح اطلاعات از UART توسط اینتراپت یا DMA

با سلام خسته نباشید من توسط اینتراپت یا DMA البته فرقی نمیکنه اطلاعات را میخوانم و در یک بافر 8 بیتی 32 خانه ای ذخیره میکنم. و چک میکنم اگر بیت دریافتی برابر با enter بود یک سری کار انجام دهد. دفعه اول حدود 10 بیت را به خوبی نمیتواند ذخیره کند. ولی بعد از ان برنامه به خوبی کار میکند و بافر اطلاعات را به درستی دریافت میکند. من نمیتونم بفهمم مشکل از چی میتونه باشد که فقط دفعه اول که میکرو ریست میشود اطلاعات حدود 10 بیت به درستی گرفته نیمشود.

با سلام
برای رفع این مشکل تنها راه، اجرا کردن کد در حالات دیباگ و چک کردن این موارد هستش:

  • در بار اول که مشکل رخ می‌دهد، وضعیت متغیرهای مهم (مانند buff_cnt و بافر دریافت شده) را به دقت بررسی کنید.
  • مطمئن شوید که پس از هر دریافت، اینتراپت یا DMA به درستی مجدداً فعال می‌شود.
    همینطور امکان وجود تاخیر راه اندازی uart وجود دارد.
    نکته بعدی این هستش که معمولا هر مشکلی دارای الگو هستش و رندوم نیست. شما باید سعی کنید با تست های مختلف این الگو رو پیدا کنید و بعد سعی کنید رفعش کنید. مثلا این که نوشتید خوب کار نمیکنه، خیلی کمک کننده نیست. بهتر هستش که بدونید این که خوب کار نمیکنه یعنی دقیقا چه اتفاقهایی در حال افتادن هستش و انتظار شما چی بوده.