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

موضوع: مشکل عجیب با وقفه سریال

  1. #1
    کاربر علاقه مند zoz_zozm آواتار ها
    تاریخ عضویت
    Jun 2012
    نام
    علی میرزایی
    نوشته ها
    38
    تشکر
    35
    تشکر شده 23 بار در 16 پست

    پیش فرض مشکل عجیب با وقفه سریال

    درود
    من یه برنامه نوشتم که با وقفه سریال کار میکنه، وقتی این برنامه رو دیباگ میکنم درست جواب میده ولی وقتی اجراش میکنم میره یه جای برنامه گیر میکنه. کسی از دوستان میدونه مشکل از چیه؟

    وقتی هم وقفه سریال رو فعال میکنم بعد چند لحظه وارد سرویس روتین وقفه میشه (فلگش هم ست میشه) با اینکه هیچ وقفه ای نیومده

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

  3. #2
    کاربر فعال processor آواتار ها
    تاریخ عضویت
    May 2010
    نام
    محمد صداقتی
    نوشته ها
    171
    تشکر
    124
    تشکر شده 262 بار در 120 پست

    پیش فرض

    من یه برنامه نوشتم که با وقفه سریال کار میکنه، وقتی این برنامه رو دیباگ میکنم درست جواب میده ولی وقتی اجراش میکنم میره یه جای برنامه گیر میکنه. کسی از دوستان میدونه مشکل از چیه؟

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

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


  5. #3
    کاربر علاقه مند zoz_zozm آواتار ها
    تاریخ عضویت
    Jun 2012
    نام
    علی میرزایی
    نوشته ها
    38
    تشکر
    35
    تشکر شده 23 بار در 16 پست

    پیش فرض

    بدون وقفه درست کار میکنه.وقتی دیباگ میکنم درست کار میکنه ولی وقتی برنامه ران میشه نمیدونم کجا گیر میکنه.
    مرسی از پاسختون.
    ویرایش توسط zoz_zozm : 01-09-2013 در ساعت 01:33

  6. #4
    کاربر علاقه مند zoz_zozm آواتار ها
    تاریخ عضویت
    Jun 2012
    نام
    علی میرزایی
    نوشته ها
    38
    تشکر
    35
    تشکر شده 23 بار در 16 پست

    پیش فرض

    برنامه چیزی حدود 1000 خطه و گیج کننده س این قسمتی از اونه که وقتی تایمر وقفه میده وقفه سریال فعال میشه و داخل برنامه جاهایی که لازم نیست اونو غیر فعال میکنم.
    کد:
    void TIMER0_IRQHandler (void){
    		//Lcd_Cmd(_LCD_TURN_OFF);
    		Lcd_Blt_Off;//lcd back ligh off
    		LockOrUnlock=0;// locked state
    		LPC_TIM0->IR = (1UL<<0);   /* Clear MAT0.0 interrupt flag */
    		LPC_TIM0->IR = (1UL<<1);   /* Clear MAT0.1 interrupt flag */
    		LPC_TIM0->IR = (1UL<<2);   /* Clear MAT0.2 interrupt flag */
    		LPC_TIM0->IR = (1UL<<3);   /* Clear MAT0.3 interrupt flag */
    		LPC_TIM0->IR = (1UL<<4);   /* Clear CAP0.0 interrupt flag */
    		LPC_TIM0->IR = (1UL<<5);   /* Clear CAP0.1 interrupt flag */
    		LPC_UART0->IER = 0x01;          // Enables the Receive Data Available interrupt 
    		//return;
    }

  7. #5
    کاربر دائمی
    تاریخ عضویت
    Jun 2009
    نام
    روح الله خرم بخت
    نوشته ها
    403
    تشکر
    456
    تشکر شده 591 بار در 214 پست

    پیش فرض

    قبل از این که وقفه رو فعال کنید با دستور NVIC وقفه کلیش باید غیر فعال باشه . سپس رجیستر وقفه رو فعال کن و فلگ اون وقفه ای رو که فعال کردی صفر کن . سپس با دستور NVIC_ClearPending تعویق وقفه ی سریال رو پاک کن و سپس با EnableIRQ وقفه رو فعال سازی نهایی کن .

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


  9. #6
    مدیر انجمن mzarkoob آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    مهدی زرکوب
    نوشته ها
    2,902
    تشکر
    1,202
    تشکر شده 2,317 بار در 1,273 پست

    پیش فرض

    سلام
    بر اساس اصول اولیه ( که البته در فیلم آموزشی هم گفته شده) نباید موردی باشه در برنامه نویسی
    من خودم دریافت از سریالم را در کاری با وقفه سریال انجام دادم و از c# هم به میکرو ارسال می کنم به خوبی دریافت ارسال را انجام می دهد حالا دیگه نمی دانم کجای برنامتون را درست تنظیم نکردید که با این موارد عجیبه مواجه شدید شایدم ایراد از نویز محیط باشه!

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


  11. #7
    کاربر علاقه مند zoz_zozm آواتار ها
    تاریخ عضویت
    Jun 2012
    نام
    علی میرزایی
    نوشته ها
    38
    تشکر
    35
    تشکر شده 23 بار در 16 پست

    پیش فرض

    فکر نکنم از نویز باشه آخه هر بار که تکرار می کنم نتیجه همونه و بدون وقفه سریال به خوبی کار می کنه.
    موارد آقا روح الله رو هم تست می کنم نتیجه رو می گم.
    با تشکر از عزیزانی که وقت گذاشتن.

  12. #8
    کاربر علاقه مند zoz_zozm آواتار ها
    تاریخ عضویت
    Jun 2012
    نام
    علی میرزایی
    نوشته ها
    38
    تشکر
    35
    تشکر شده 23 بار در 16 پست

    پیش فرض

    تو دیباگ ها متوجه شدم وقتی وقفه تایمر صفر میاد فلگ وقفه سریال هم فعال میشه. وقتی دیباگ میکنم تو استپ بعدی وقفه سریال پاک میشه ولی وقتی اجرا میکنم اون فلگ پاک نمیشه و باعث میشه بره تو سرویس روتین وقفه سریال و اطلاعات رو بخونه که هیچی نیست و داخل اون تابع گیر میکنه(داخل حلقه while).
    دوستان تا به حال با این مورد برخورد داشتن؟

  13. #9

  14. #10
    کاربر علاقه مند zoz_zozm آواتار ها
    تاریخ عضویت
    Jun 2012
    نام
    علی میرزایی
    نوشته ها
    38
    تشکر
    35
    تشکر شده 23 بار در 16 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mzarkoob نمایش پست ها
    وقفه تایمر چه ربطی به وقفه سریال داره !؟
    خودمم از این متعجبم!!! هر وقت تایمر وقفه میده واحد سریال هم وقفه میده!!!

  15. #11

  16. #12
    کاربر فعال
    تاریخ عضویت
    Jul 2010
    نام
    مرتضی مجتهدی
    نوشته ها
    313
    تشکر
    1
    تشکر شده 358 بار در 203 پست

    پیش فرض

    حزفی که می زنم مسخره است، اما لطفا برای تست یک مقاومت پول آپ به پایه های سریال وصل کنین.قفط یک تست هست

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


  18. #13
    کاربر علاقه مند zoz_zozm آواتار ها
    تاریخ عضویت
    Jun 2012
    نام
    علی میرزایی
    نوشته ها
    38
    تشکر
    35
    تشکر شده 23 بار در 16 پست

    پیش فرض

    خود پایه ها پول آپ داخلی هستند، بازم لازمه؟

  19. #14
    کاربر دائمی
    تاریخ عضویت
    Jun 2009
    نام
    روح الله خرم بخت
    نوشته ها
    403
    تشکر
    456
    تشکر شده 591 بار در 214 پست

    پیش فرض

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

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


  21. #15
    کاربر علاقه مند zoz_zozm آواتار ها
    تاریخ عضویت
    Jun 2012
    نام
    علی میرزایی
    نوشته ها
    38
    تشکر
    35
    تشکر شده 23 بار در 16 پست

    پیش فرض

    حدودا 2 ثانیه طول میکشه.
    پردازنده منتظر دریافت عدد از کیپد میمونه و وقتی که تایمر وقفه داد، وقفه سریال فعال میشه(و تایمر غیر فعال). واگر کاربر عددی را وارد کرد مقدار تایمر ریست میشه. این کار واسه خاموش کردن السیدی و بک لایت اون استفاده میشه که اگر 2 ثانیه(حدودا) گذشت و کاربر عددی وارد نکرد جریان مصرفی رو کم کنم. و موقعی که السیدی خاموش شد(وقفه تایمر اومد) می خوام وقفه سریال فعال بشه (مُد ریموت).
    کد رو دارم کوچیک میکنم که اینجا قرار بدم تا دوستان کمک کنن.
    با تشکر

  22. #16
    کاربر علاقه مند
    تاریخ عضویت
    Aug 2013
    نوشته ها
    23
    تشکر
    0
    تشکر شده 5 بار در 4 پست

    پیش فرض

    با سلام کسی از این جوون مردا nvic رو iar راه انداخته اگه راه انداخته میتونه راهنمایی کنه

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

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