اطلاعیه

Collapse
No announcement yet.

هنگ کردن میکرو

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    هنگ کردن میکرو

    سلام
    من دارم با ATmega32 کار می کنم. چند تا اولتراسونیک و یه ال سی دی هم بهش وصل کردم!
    وقفه ی 1 این میکرو رو هم برای خوندن تعداد یه پالس خارجی فعال کردم!
    خوب مشکل این جاست که در حین کار بعضی از اوقات میکرو هنگ می کنه و توی برخی از حلقه های داخلیش برنامه میمونه و دیگه در نمی آید. با کلی تلاش فهمیدم وقتی کد وقفه رو استفاده می کنم این اتفاق می افته. علتش هم سادست!
    مثلا میکرو داره پایه ی یکی از اولتراسونیک ها را می خونه که یدفعه وقفه سر میرسه و کد وقفه اجرا میشه و بعد از اون وقتی دوباره برمی گرده سراغ اولتراسونیک دیگه اون پایه ی خاص مقداری شده که از حلقه در نمی آد؟

    خوب چطور میتونم یه پالس خارجی که نمیدونیم هر چند وقت یه بار میآد رو بخونم!(تمام تایمر کانتر ها برای کار دیگه استفاده شدن و نمیشه از کانتر استفاده کرد!)
    مرسی

    #2
    پاسخ : هنگ کردن میکرو

    خوب اون لحظه که داری آلتراسونیک رو میخونی وقفه رو غیر فعال کن داداش

    دیدگاه


      #3
      پاسخ : هنگ کردن میکرو

      به نضر من مشکل از میزان ولتاژ
      ولتاژی که بهش میدی رو چک کن
      ولتاژ موققع کارو رو هم چک کن
      احتمالا یا ولتاژی که به میکرو میدی کمه یا زیاده
      یا جریانی که اولتراسونیک و یه ال سی دی از میکرو میکشه زیادی
      اینا رو چک کن ایشالا به نتیجه میرسی

      دیدگاه


        #4
        پاسخ : هنگ کردن میکرو

        مشکلات تغذیه و کریستال و نویز و خازنهای تغذیه و ریست رو به جای خود باید بررسی کنی. نرم افزار رو هم یه بازبینی کن. مثلاً وقفه ها رو غیرفعال کن. وقفه های تو در تو می تونن باعث کندیِ عملکرد میکروکنترلر بشن. پردازنده AVR چندان قدرتمند نیست، باید ملاحظات خاصی برای فراخوانی توابع و وقفه های تو در تو رعایت کنی.
        به اضافه که، اگه متغیر محلی توی توابع وقفه تعریف کردی و احیاناً با اشاره گرها و آرایه ها کار می کنی، ممکنه به دلیل خطای لُپی توی برنامه نویسی، بری و پشته (stack) رو به هم بریزی و این حتماً باعث میشه میکرو هنگ کنه. چون متغیرهای محلی توابع (معمولی یا وقفه) توی پشته ذخیر می شن.
        بیایید با Google آشتی کنیم!

        دیدگاه


          #5
          پاسخ : هنگ کردن میکرو

          سلام دارم
          اتفاقا منم همین مشکل دارم
          من یه وقفه دریافت میکنم که باعث هنگ میکرو میشه
          دیدم زیر سر این وقفه ست // مشکل خاصی نداره // یه وقفه با لبه بالا رونده
          واتاژ وقفه هم تو همون رنج 5 ولت //
          یه سوال : ایا وقتی ما مثلا همین پایه وقفه رو ورودی با لبه بالا رنده انتخاب کردیم
          و بالاکش خارجی استفاده کردیم
          ایا باید نرم افزاری هم اون پایه رو بالا کش کنیم ؟؟؟ یا پایین کش؟؟؟

          سوال دوم ؟: ایا ما وقتی وقفه سخت افزاری داریم باید عرض پالس وقفه چقدر باشه حداقل
          فکر کنم نمیدونم شاید باید بیشتر از 50 مکرو ثانیه باشه
          اما مال من 150 میکرو هستش اما گویا بعضی وقفه ها رو اعمال نمیکنه !!!!!!!!!

          سوال 3: وقتی وقفه اعمال میشه (سخت افزاری ) و من اولین دستور اومدم وقفه ها رو کلا غیر فعال کردم
          ایا اگه وقفه ای دیگه مثل تایمر فعال بشه و توی همین وقفه سخت افزاری من بیام بیت پرچمشو پاک کنم بعد این وقفه اون مثلا وقفه تایمر اعمال میشه یا کلا دیگه نادیده گرفته میشه؟

          ایا وقتی میخوایم وقفه تو در تو نداشته باشیم باید اولین دستور بیایم دستور غیر فعال کردن همه وقفه ها رو بدیم
          ؟

          و یه نکته دیگه من مداری دیمری دارم که فرمان از قدرت کاملا ایزول ست و از اوپتو کوپلر و اپتو کتنت استفاده کردم و هیچ دخالتی با مدار قدرت ندارم
          اما وقتی پریز برق 200 ولت دیمر قطع و وصل میکنم میکرو هنگ میکنه ؟!!!!!!

          این موارد موارد ریز و مشکل زایی هستن از دوستان خواهش دارم در موردشون تبادل نظر داشته باشیم

          [move]ممنون [/move]

          دیدگاه

          لطفا صبر کنید...
          X