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





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









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





  1. #1
    تاریخ عضویت
    2011/03/14
    کرج
    156
    1

    سرعت وقفه های خارجی در AVR

    درود بر همه دوستان.
    همه ما میدونیم در میکرو AVR منابع مختلفی برای وقفه ها وجود داره که در برخی از میکروها تا 3 تاش خارجی هستن.مثل MEGA16
    از طرفی میدونیم که سرعت اجرای دستورات درمیکرو بالاست طوری که برخی از دستورات با فقط یک کلاک پالس بصورت کامل اجرا میشن:
    من تو یکی از پروژه هام متوجه نکته ای شدم که ارتباط مستقیمی داشت با سرعت خود وقفه به این صورت:
    در اون پروژه من یک انکودر رو متصل کردم به وقفه خارجی شماره 0 میکرو مگا 16 و با یه کریستال 12Mhz میکرو رو راه اندازی کردم . انکودری که تو اون سیستم استفاده شده بود دارای دقت فوق العاده بالایی بود طوری که در max پالسهایی با فرکانس 60Khz و با دامنه ولتاژ 5V رو خروجی میفرستاد از طرفی من هم 2 تا دستور شرطی توی کدویژن و زیر موضوع وقفه شماره0 داشتم که تو یکی از اون شرطها یک مقدار یک متغییر داءم به LCd فرستاده میشد. اما مشکلی که تو این مدار بوجود اومد این بود که بعلت فرکانس بالا یا چیزی که من هنوزم اونو متوجه نشدم وقفه تو این پروسه کم میاورد و در همه موارد وقتی فرکانس انکودر بالا میرفت نمیتونست سرعت خودشو با اجرای دستورات آداپته کنه .
    حالا این سوال مطرح میشه که اولا سرعت اجرای وقفه 0 چقدر هست با توجه به اینکه فکر کنم پردازشگر وقفه در میکرو بصورت کاملا جداگانه از CPU کار میکنه(مطابق با بیانات دیتاشیت) ؟
    بعد مگه سرعت پردازش دستوراتی که تو زیر موضوع وقفه ها نوشته میشه رابطه مستقیم با کلاک CPU نداره؟ اگه جواب بله هست پس چرا 2 تا دستور شرطی ساده رو نمیتونه با سرعت پردازش کنه و قبل از رسیدن وقفه جدید برگرده به برنامه اصلی تازه با اینکه کریستال میکرو رو 16Mhz درایو شده؟
    لطفا نظراتتون رو تو این پست در مورد این موضوع قرار بدین ؟ :rolleyes: :rolleyes:

    mer30
    • تبلیغات
      .

  2. #2
    تاریخ عضویت
    2007/03/15
    تبريز
    2,718
    193

    پاسخ : سرعت وقفه های خارجی در AVR ؟

    فقط فرا خوانی روال وفقه و برگشت از اون 7 پالس ساعت میگیره .
    حالا چون با سی برنامه مینویسی کامپایلر مجبوره چندا ریجیستر رو پوش و پاپ کنه حالا من دقیقه نمیدونم ولی فرض کن 5 تا ریجستر پوش و پاپ بشه که ایم هم میشه 10 پالس .
    تا اینجاا 17 پالس فقط سربار فرا خوانیه تابع است تا دستورات داخل وقفه چی باشه باز هم این تعداد افزایش پیدا میکنه مثلا یک تقسیم 2 بایتی حدود 200 پالس زمان میبره یا یک جمه 2 بایتی تا 13 -14 پالس زمان میبره

    میکرو 8 بیتی اینه دیگه
    تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
    داشتن عقله زيادتر از دیگر آدم ها است
  3. #3
    تاریخ عضویت
    2010/11/09
    18
    0

    پاسخ : سرعت وقفه های خارجی در AVR ؟

    سلام .من از وقفه صفر تو mega16 با لبه پایین استفاده کردم ولی اصلا به وقفه ها عکس العمل نشون نمیده میکرو یا اگه عکس العمل نشون بده خیلی ضعیف.میشه را هنمایی کنید از چه مداری رو وقفم استفاده کنم.
  4. #4
    تاریخ عضویت
    2011/03/14
    کرج
    156
    1

    پاسخ : سرعت وقفه های خارجی در AVR ؟

    دوست عزیز مدار خاصی نداره فقط کافیه 0و 1 منطقی به پایه اعمال کنید ولی نکته مهم اینه که اگه از وقفهای دیگه هم استفاده میکنید نباید موقع تست اونارو آزاد بزارین ( حتما زمین کنینش ).
    بعد منظورتونو از ضعیف بودن متوجه نمیشم . وقفه یا اجرا میشه یا نه دیگه ضعیف و قوی نداره که :eek: :eek:
    mer30
  5. #5
    تاریخ عضویت
    2011/12/30
    421
    20

    پاسخ : سرعت وقفه های خارجی در AVR ؟

    نقل قول نوشته اصلی توسط mohsenmax70
    درود بر همه دوستان.
    همه ما میدونیم در میکرو AVR منابع مختلفی برای وقفه ها وجود داره که در برخی از میکروها تا 3 تاش خارجی هستن.مثل MEGA16
    از طرفی میدونیم که سرعت اجرای دستورات درمیکرو بالاست طوری که برخی از دستورات با فقط یک کلاک پالس بصورت کامل اجرا میشن:
    من تو یکی از پروژه هام متوجه نکته ای شدم که ارتباط مستقیمی داشت با سرعت خود وقفه به این صورت:
    در اون پروژه من یک انکودر رو متصل کردم به وقفه خارجی شماره 0 میکرو مگا 16 و با یه کریستال 12Mhz میکرو رو راه اندازی کردم . انکودری که تو اون سیستم استفاده شده بود دارای دقت فوق العاده بالایی بود طوری که در max پالسهایی با فرکانس 60Khz و با دامنه ولتاژ 5V رو خروجی میفرستاد از طرفی من هم 2 تا دستور شرطی توی کدویژن و زیر موضوع وقفه شماره0 داشتم که تو یکی از اون شرطها یک مقدار یک متغییر داءم به LCd فرستاده میشد. اما مشکلی که تو این مدار بوجود اومد این بود که بعلت فرکانس بالا یا چیزی که من هنوزم اونو متوجه نشدم وقفه تو این پروسه کم میاورد و در همه موارد وقتی فرکانس انکودر بالا میرفت نمیتونست سرعت خودشو با اجرای دستورات آداپته کنه .
    حالا این سوال مطرح میشه که اولا سرعت اجرای وقفه 0 چقدر هست با توجه به اینکه فکر کنم پردازشگر وقفه در میکرو بصورت کاملا جداگانه از CPU کار میکنه(مطابق با بیانات دیتاشیت) ؟
    بعد مگه سرعت پردازش دستوراتی که تو زیر موضوع وقفه ها نوشته میشه رابطه مستقیم با کلاک CPU نداره؟ اگه جواب بله هست پس چرا 2 تا دستور شرطی ساده رو نمیتونه با سرعت پردازش کنه و قبل از رسیدن وقفه جدید برگرده به برنامه اصلی تازه با اینکه کریستال میکرو رو 16Mhz درایو شده؟
    لطفا نظراتتون رو تو این پست در مورد این موضوع قرار بدین ؟ :rolleyes: :rolleyes:
    نوشتن روی lcd با تاخیر بسیار زیادی همراه است و نوشتن روی lcd در وقفه اصلا کار صحیحی نیست. درضمن وقتی برنامه وارد وقفه میشه فلگ اجازه وقفه غیر فعال میشه بنابر طبیعی هست که یک سری از پالس ها خوانده نشن.
  6. #6
    تاریخ عضویت
    2012/05/13
    Planet Earth
    962
    444

    پاسخ : سرعت وقفه های خارجی در AVR ؟

    نقل قول نوشته اصلی توسط sadeghmojtabaei

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    نوشتن روی lcd با تاخیر بسیار زیادی همراه است و نوشتن روی lcd در وقفه اصلا کار صحیحی نیست. درضمن وقتی برنامه وارد وقفه میشه فلگ اجازه وقفه غیر فعال میشه بنابر طبیعی هست که یک سری از پالس ها خوانده نشن.
    من هم به همین مشکل برخوردم الان. من هم دارم یک انکودر دقیق رو می خونم و روی OLED نمایش می دم مشکلی که هست اینه که در زیر برنامه وقفه دارم داخل OLED می نویسم و خب این موضوع داره سرعت وفقه رو کم می کنه چه راه حلی پیشنهاد می کنید؟
    گویند سنگ لعل شود در مقام صبر اری شود ولی به خون جگر شود
    همیشه آخر همه چیز خوبه، اگر هم هنوز خوب نشده پس هنوز آخرش نشده(چارلی چاپلین)
  7. #7
    تاریخ عضویت
    2018/01/26
    تهران
    56
    35

    پاسخ : سرعت وقفه های خارجی در AVR

    با درود و احترام,
    چیزی که منم تو تجربه عملی به دست اوردم اینه که توی برنامه نویسی و کار با وقفه,ها
    فقط باید مقادیر و تغیرات رو برنامه نویسی کرد و هرچیزی که طولانی باشه ( مثل حلقه ) و یا از کتابخانه های تاخیر و امثالش استفاده شده باشه, اختلال وخطا ایجاد میکنه....
    نمایش روی LCD و امثال اینها رو باید توی حلقه اصلی بیاریم....

    مثلا برنامه زیر که به نظر خیلی ساده میاد و توی وقفه ارتباط سریال نوشته شده ,
    ,فقط قرار بود یه پیغام ساده بیاد رو نمایشگر که دیتای سریال دریافت شد و حتی مقادیر دیتای دریافتی رو هم نمیخواست که نشون بده....
    اما فقط به خاطر همون 4 خط اول که مربوط به نمایش روی LCD میشه , باعث شده بود که دیتای ارتباط سریال کامل دریافت نشه و یا خطا داشته باشه ( که ذهم آدم میرفت سمت میزان باود ریت , خرابی دستگاه متقابل در ارسال دیتا, مقدار دهی کلاک,, نویز و...)
    تازه زمانی هم که این پیغام رو LCD میومد, با کندی نمایش داده میشد.....
    وقتی که اون چهار خط رو حذف کردم , کامل مشکلم حل شد....

    [LEFT]     lcd_clear();
    lcd_gotoxy(0,0);
    lcd_putsf("Data Received..");
    delay_ms(100);
    RX=1;


    Receive[counter]=data;
    counter++;
    Read=1;
    PORTB.1=1;



    [/LEFT]
نمایش نتایج: از 1 به 7 از 7

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

  1. تداخل وقفه خارجی و وقفه تایمر 0
    توسط sajad7 در انجمن میکروکنترلرهای AVR
    پاسخ: 4
    آخرين نوشته: 2014/11/22, 21:03
  2. سرعت تشخیص وقفه خارجی
    توسط cheetah3 در انجمن XMEGA
    پاسخ: 7
    آخرين نوشته: 2014/10/21, 07:05
  3. مشکل با وقفه خارجی در مگا 64
    توسط abritco در انجمن میکروکنترلرهای AVR
    پاسخ: 8
    آخرين نوشته: 2013/12/27, 14:38
  4. مشکل با وقفه خارجی
    توسط sara789 در انجمن میکروکنترلرهای AVR
    پاسخ: 11
    آخرين نوشته: 2012/07/02, 18:11
  5. مشکل با وقفه خارجی
    توسط bitaelec در انجمن میکروکنترلرهای AVR
    پاسخ: 5
    آخرين نوشته: 2011/01/09, 09:37

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

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

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

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