NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 4595 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 7 از 7

موضوع: هنگ میکرو

  1. #1
    عضو جدید
    تاریخ عضویت
    Dec 2010
    نوشته ها
    8
    تشکر
    14
    تشکر شده 0 بار در 0 پست

    Talking هنگ میکرو

    با سلام خدمت همگی
    توی کار با ارم lpc2368 من یک اینتراپت تایمر اضافه کرده ام که به خوبی کار میکنه
    این تا وقتی هست که من تیک
    enable ARM/Thumb interworking
    د ر تب C/C++ تنظیمات پروژه را نزده ام

    به محض زدن این تیک که جهت اضافه کردن مموری یه پروژه ام احتیاج دارم
    میکرو من شروع به کار میکنه
    تایمر هم بخوبی راه اندازی میشه
    تابع درون تایمر هم بخوبی اجرا میشود
    ولی کافی است من در حلقه main یک تابع (هر تابعی را صدا بزنم حتی یه تابع تاخیر معمولی)
    میکرو هنگ میکنه
    لازم به ذکره که اگر هیچ تابعی فراخوانی نشه کد بدون فراخواندن تابع درون زیر روال main اجرا میشود
    کسی می دونه مشکله من از کجاست؟
    و این
    enable ARM/Thumb interworking دقیقا کارش چیه؟

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    مدیرکل انجمنها agape آواتار ها
    تاریخ عضویت
    Feb 2009
    نام
    Zeus
    نوشته ها
    1,235
    تشکر
    139
    تشکر شده 2,209 بار در 846 پست

    پیش فرض

    enable ARM/Thumb interworking این قسمت به صورت پیشفرض فعال هست و به سورس اسمبلر اجازه میده بین حالت های آرم و تامب سویچ کنه !
    فکر نمیکنم مشکل از این بخش باشه!
    مشکل از جایی دیگه هست

  4. تشکرها از این نوشته :


  5. #3
    مدير بخش STM32 sadmonew آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    صادق محمدي
    نوشته ها
    2,002
    تشکر
    6,283
    تشکر شده 3,115 بار در 1,408 پست

    پیش فرض

    با سلام
    براي اضافه كردن حافظه اصلا نيازي نيست كه شما جايي رو تيك بزنيد. برام شده سوال؟؟؟؟
    همونطور كه دوستمون گفتن مشكل احتمالا از جاي ديگس.

  6. تشکرها از این نوشته :


  7. #4
    عضو جدید
    تاریخ عضویت
    Dec 2010
    نوشته ها
    8
    تشکر
    14
    تشکر شده 0 بار در 0 پست

    پیش فرض

    ممنون از دوستایی که جواب دادند
    دو سه تا معلوم دیگه را میگم شاید بتونم شرائط را توضیح بدم
    راستی منظورم از مموری حاظه خارجی مموری کارت هست نه مموری سیستم

    1- من داخل تابع اینتراپت میکرو یک تابع را صدا میزنم که اون هم به نوبه خود یک چند تا متغیر را به صورت spi ارسال میکنه
    2- اگر من داخل اینتراپتم هیچ تابعی را صدا نزنم و همه کدها را اونجا بذارم مشکل پیش نمیاد
    3- مطمئن هستم تابع اینتراپت من مشکلی نداره و به هیچ عنوان تاخیر زیادی نداره
    4- تنها مشکل وقتی پیش میاد که همزمان داخل اینتراپت یک تابع فراخوانده بشه و داخل main برنامه هم یک تابع حتی تابع ساده فراخوانده بشه (یعنی هر دو جا یک تابع)
    5- به نظر در این حالت میکرو نمیتونه ادرس برگشت خودش را پیدا کنه که از تابع ها به جای اول باید پرش کنه
    یا اینکه توی قمست هایی از پرش ها رم کم میاره مثله حافظه استک
    6- به نظر دوستان مشکل آیا میتونه از نوع کرک باشه یا اینکه کرک توی بازار درست کار نکنه
    7- باید جایی تنظیم خاصی برای حافظه ها انجام داد؟
    در ضمن آیا اینتراپت ها و یا تایمرها در ارم نکته خاصی دارند؟
    من کد نمونه را هم اینجا میذازم

    void Timer0Handler (void) __irq
    {


    T0IR = 1; /* clear interrupt flag */
    IENABLE; /* handles nested interrupt */

    My_Function();



    IDISABLE;
    VICVectAddr = 0; /* Acknowledge Interrupt */
    }
    جالب اینجاست این تیکی که دوستان میگن فقط برای همین هست اگه نباشه کامپایلر کیل به هیچ عنوان نمیتونه توابع مربوط به راه اندازی مموری کارت را راه اندازی کنه
    ویرایش توسط sepide : 28-09-2011 در ساعت 09:31

  8. #5
    عضو جدید
    تاریخ عضویت
    Dec 2010
    نوشته ها
    8
    تشکر
    14
    تشکر شده 0 بار در 0 پست

    پیش فرض

    با تشکر از همگی دوستان
    مشکل حل شد

    تنها کاری که انجام شد
    IENABLE; /* handles nested interrupt */
    IDISABLE;
    از کدهای اینتراپت حذف شد

    کسی می دونه چرا اصلا این مشکل وجود داشت مگر نه اینکه در زیر روال اینتراپت باید این دو تا کد را نوشت؟

  9. #6
    مدیرکل انجمنها agape آواتار ها
    تاریخ عضویت
    Feb 2009
    نام
    Zeus
    نوشته ها
    1,235
    تشکر
    139
    تشکر شده 2,209 بار در 846 پست

    پیش فرض

    نقل قول نوشته اصلی توسط sepide نمایش پست ها
    با تشکر از همگی دوستان
    مشکل حل شد

    تنها کاری که انجام شد
    ienable; /* handles nested interrupt */
    idisable;
    از کدهای اینتراپت حذف شد

    کسی می دونه چرا اصلا این مشکل وجود داشت مگر نه اینکه در زیر روال اینتراپت باید این دو تا کد را نوشت؟
    خوب خدا رو شکر که مشکل حل شد!
    فکر میکنم این دستورارت برای ماسک برداری از وقفه ها هست!
    چون میکروی آرم وقفه های چند لایه رو ساپورت میکنه،
    اگه میکرو نتونه به آدرس برگشت رو پیدا کنه تنها دلیلش اینه که استیک برنامه مشکل داره و هنگام فراخوان یه تابع احتمالا آدرس فعلی اشاره گر برنامه درست توی استیک ذخیره نمیشه و هنگام برگشت درست لود نمیشه

  10. #7
    کاربر علاقه مند
    تاریخ عضویت
    May 2010
    نوشته ها
    67
    تشکر
    727
    تشکر شده 145 بار در 49 پست

    پیش فرض

    نقل قول نوشته اصلی توسط sepide نمایش پست ها
    با تشکر از همگی دوستان
    مشکل حل شد

    تنها کاری که انجام شد
    IENABLE; /* handles nested interrupt */
    IDISABLE;
    از کدهای اینتراپت حذف شد

    کسی می دونه چرا اصلا این مشکل وجود داشت مگر نه اینکه در زیر روال اینتراپت باید این دو تا کد را نوشت؟
    با سلام
    همانطوری که جناب agape نوشتند، 2368 در مورد اینتراپتها ، تنها به یکی پاسخ می دهد و در حین کار اینتراپت ، نباید آدرس برگشت را که در رجیسترهای شادو ذخیره نموده تغییر داد ( مثلا با صدا زدن یک تابع دیگر در ون اینتراپت )

    اگر می خواهید درون اینتراپت ، توابعی را صدا بزنید ، آن توابع را باید از نوع __inline تعریف کنید.

    پ.ن:
    در آرم7 که شامل 2368و2378و2478و sam7x256 می شود، استک در کار نیست!!!
    رجیسترهای شادو در تعداد محدود برای (ذخیره رجیسترهای اصلی و آدرس برگشت ) و سرویس دادن به یک اینتراپت فقط ...........

    http://www.eca.ir/forum2/index.php?t...2223#msg262223

    با سپاس
    ویرایش توسط gangi : 29-09-2011 در ساعت 13:42

  11. کاربران : 2 تشکر کرده اند از شما gangi برای ارسال این پست سودمند:


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

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