ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.






جهت تبلیغ در وب سایت ECA کلیک کنید.

کاربران برچسب زده شده

نمایش نتایج: از 1 به 3 از 3
  1. #1
    2012/07/02
    تهران
    60
    3

    مشکل خالی بودن نصف بافر در خواندن ADC با DMA??!!

    ADC رو فعال کردم . تریگرش رو روی تایمر 4 ایونت 4 قرار دادم . بعد یک بافر 1000 تایی برای خوندن داده ADC با استفاده از DMA برای اون لحاظ کردم. تایمر 4 رو طوری تنظیم کردم که 8 کیلوهرتز ایونت تولید کنه .
    همه چیز به درستی کار میکنه ، هم اینتراپت کامل شدن ترنسمیت و هم اینتراپت نصف ترنسمیت.
    ولی مشکل اینه که همیشه نصف بافر خالیه . یعنی 500 تای اولی مقدار دارند و مقدارشون هم کاملا درسته ولی 500 تای آخری همیشه صفر هستند . تعداد رو هم تغییر میدم باز نصفشون خالیه.

    همه حالت ها رو هم تست کردم . اینتراپت نصف ترنسمیت رو غیر فعال کردم ، تعداد بافر رو هم کم و زیاد کردم . باز نشد . مشکل به نظر شما چیه؟؟
    خواهشن کمک کنین.
    يا حق
  2. #2
    2007/08/04
    اصفهان
    577
    4

    پاسخ : مشکل خالی بودن نصف بافر در خواندن ADC با DMA??!!

    سلام
    درست متوجه منظورتان نشدم
    ولی اگر بخواهید یک کانال ADC بخوانید که نیازی به DMA نیست. در اینجا DMA موقعی لازم می شود که بخواهید چند کانال ADC بخوانید (مد scan) . یعنی هر با که میکرو چند کانال را خواند وقفه DMA فعال میشه. در اینجا لازم است تنظیمات DMA به درستی انجام شود.
    به این روش من انجام دادم مشکلی نداشته است. مثلا 4 کانال را هر 100 میکرو ثانیه یک بار خوانده به تعداد 100 بار ،در آرایه ای قرار می دهیم
    فيلم آموزشي ميکروکنترلر LPC1768
    فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
    فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
    فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...
  3. #3
    2012/07/02
    تهران
    60
    3

    پاسخ : مشکل خالی بودن نصف بافر در خواندن ADC با DMA??!!

    با تشكر از پاسخ شما

    ولي من ميخام ADC رو با "نرخ دلخواه" خودم نمونه برداري كنم. براي اينكار دو راه وجود داره ، يكي اينكه اينتراپت يك تايمر رو فعال كنم و باهاش هر چند كلاك يكبار بيام و ADC رو بخونم كه اين كار اصلا مناسب نيست چون هرچي اينتراپت بيشتر بشه لود CPU هم ميره بالا.
    راه دوم اينه كه ADC كه توسط يك تايمر تريگ ميشه، رو با استفاده از DMA بخونم ، يعني يه مقدار از بافر رو در اختيار يك كانال لDMA قرار بدم و هر وقت پر شد برم ازش استفاده كنم. خوب اينكار باعث ميشه لود CPU خيلي خيلي بياد پايين به خاطر همين هنگ كردن ميكرو هم احتمالش خيلي مياد پايين.

    در مورد مشكلم هم برطرف شد. من متغييرم رو 32 بيتي در نظر گرفته بودم ، حال اونكه DMA داشت اونها رو 16 بيت ، 16 بيت پر ميكرد ، بنا بر اين وقتي ترنسميت كامل ميشد. در حقيقت فقط نصف بافر پر ميشد. و نصف ديگه هميشه خالي ميموند. يعني با تغيير جنس متغيير مشكلم برطرف شد.

    باز هم از توجهتون بابت سوال بنده ممنونم.
    يا حق
نمایش نتایج: از 1 به 3 از 3

موضوعات مشابه

  1. مشکل با بافر سریال در lpc1768
    توسط infernal1990 در انجمن NXP
    پاسخ: 3
    آخرين نوشته: 2015/08/26, 12:03
  2. مشکل کار با بافر 74HC573
    توسط sabersnt در انجمن مدار هاي ديجيتال
    پاسخ: 1
    آخرين نوشته: 2014/08/04, 16:46
  3. مشکل با بافر گیرنده سریال
    توسط shahin2222 در انجمن میکروکنترلرهای AVR
    پاسخ: 12
    آخرين نوشته: 2014/05/12, 17:08
  4. خواندن مدت زمان يك بودن يك سيگنال مربعي
    توسط sinaitg در انجمن میکروکنترلرهای AVR
    پاسخ: 7
    آخرين نوشته: 2014/05/03, 14:54
  5. مشکل در بافر کردن ديتاي ورودي به avr
    توسط parsa921 در انجمن میکروکنترلرهای AVR
    پاسخ: 18
    آخرين نوشته: 2011/01/17, 09:33

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •