NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 4607 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از 1 به 20 از 23

موضوع: نحوه استفاده از Interrupts

  1. #1
    کاربر فعال mapmap آواتار ها
    تاریخ عضویت
    Mar 2010
    نام
    M
    نوشته ها
    158
    تشکر
    246
    تشکر شده 74 بار در 61 پست

    پیش فرض نحوه استفاده از Interrupts

    سلام
    بعداز پیکربندی Enable Interrupts
    و ....
    on int0 lable1
    on int0 lable2
    do
    loop
    end

    label1:
    set Porta.1
    waitms 50
    reset porta.1
    return
    lable2:
    set Porta.2
    waitms 50
    reset Porta.2
    return
    برنامه چندین بار به Lable میپره - چرا؟؟
    من نمیخوام تا وقتی که int فعال نشده برنامه به Lable پرش کنه

    با سپاس

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


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

  4. #2
    مدیر انجمن cmuiran آواتار ها
    تاریخ عضویت
    Jan 2011
    نام
    پیمان غلامی
    نوشته ها
    1,071
    تشکر
    407
    تشکر شده 966 بار در 553 پست

    پیش فرض

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

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


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

    پیش فرض

    با سلام
    برنامتون رو به صورت زير تغيير بديد من تست كردم درست جواب ميده:
    [HTML]$regfile = "m8def.dat"
    $crystal = 16000000

    Config Pind.2 = Input
    Config Portc = Output

    Enable Interrupts
    Enable Int0

    On Int0 Label2

    Do
    Reset Portc.1
    Loop

    Label2:
    Set Portc.1
    Waitms 50
    Reset Portc.1
    Waitms 50
    Return

    End[/HTML]
    يه مقاومت 4.7K هم كه يه سرش به VCC وصله به پايه INT0 وصل كنيد. اگه INT0 به GND متصل بشه دستورات موجود در Label2 اجرا ميشه.
    ________________________
    برنامه نويسي، الكترونيك(PE)
    ________________________
    ویرایش توسط sadmonew : 15-09-2011 در ساعت 12:10

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


  8. #4
    مدیر انجمن cmuiran آواتار ها
    تاریخ عضویت
    Jan 2011
    نام
    پیمان غلامی
    نوشته ها
    1,071
    تشکر
    407
    تشکر شده 966 بار در 553 پست

    پیش فرض

    [QUOTE=sadmonew;28804]با سلام
    برنامتون رو به صورت زير تغيير بديد من تست كردم درست جواب ميده:
    [HTML]$regfile = "m8def.dat"
    $crystal = 16000000

    Config Pind.2 = Input
    Config Portc = Output

    Enable Interrupts
    Enable Int0

    On Int0 Label2

    Do
    Reset Portc.1
    Loop

    Label2:
    Set Portc.1
    Waitms 50
    Reset Portc.1
    Waitms 50
    Return

    End[/HTML]
    يه مقاومت 4.7K هم كه يه سرش به VCC وصله به پايه INT0 وصل كنيد. اگه INT0 به GND متصل بشه دستورات موجود در Label2 اجرا ميشه.
    سلام
    شما از این دستور config int0/1=rising/falingاستفاده نمیکنین؟؟

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


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

    پیش فرض

    با سلام
    بله ميشه استفاده كرد اما نه براي موقعي كه داريم از Switch يا كليد استفاده مي كنيم
    زماني از دستور config INT0 = Falling/Rising استفاده مي كنيم كه پالس هاي لحظه اي به INT0 اعمال ميشه مثلا مدار دورسنج موتور كه پالس هاي لحظه اي ارسال ميكنه.

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


  12. #6
    مدیر انجمن cmuiran آواتار ها
    تاریخ عضویت
    Jan 2011
    نام
    پیمان غلامی
    نوشته ها
    1,071
    تشکر
    407
    تشکر شده 966 بار در 553 پست

    پیش فرض

    سلام دوست عزیز
    دوست ما قید نکرد که برای چه کاری قراره استفاده کنه

    نکته جالبی بود موفق باشید

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


  14. #7
    کاربر فعال mapmap آواتار ها
    تاریخ عضویت
    Mar 2010
    نام
    M
    نوشته ها
    158
    تشکر
    246
    تشکر شده 74 بار در 61 پست

    پیش فرض

    از کمکاتون بی نهایت سپاسگذارم
    بنده از Atmega32 استفاده میکنم و میخوام یه دزدگیر برای خونمون بسازم که بشه باهاش لامپ تو حیاط رو هم به شکل تایمر روشن خاموش کنم.
    از سه تا INT هاش میخوام استفاده کنم.
    از لبه پایین رونده هم استفاده میکنم آخه سنسورم Ultrasonic هستش و خروجیش از 5 به 0 میرسه.
    برنامه هام رو طبق گفته های شما پیاده میکنم اگه خدا بخواد جوابش رو خدمتتون میدم.

    راستی یه سوالم برام پیش اومد میتونم از INT یه پورت که برای LCD 2*16 پیکربندی شده استفاده کنم؟؟

    ممنون
    ویرایش توسط mapmap : 15-09-2011 در ساعت 22:02

  15. #8
    کاربر فعال mapmap آواتار ها
    تاریخ عضویت
    Mar 2010
    نام
    M
    نوشته ها
    158
    تشکر
    246
    تشکر شده 74 بار در 61 پست

    پیش فرض

    سوال :
    اگه بخوام از انکدر PT-2272 استفاده کنم خروجیهای انکدر رو باید به مقاومت 4.7 و VCC وصل کنم؟؟
    INT in AVR.jpg - 4shared.com - photo sharing - download image
    در ضمن کارارو طبق دستورات پیش رفتم همه چی درست شد متشکرم فقط:
    1-تو سیکل اول همه Label ها یه بار اجرا میشه اگه بخوایم اینطور نشه باید چیکار کنیم؟؟
    2-گهگاه بعداز چند بار زدن وقفه ها (تو برنامه پروتئوس ) LCD نوشته های شبیه *5+3r- نشون میده!!!

  16. #9
    کاربر فعال mapmap آواتار ها
    تاریخ عضویت
    Mar 2010
    نام
    M
    نوشته ها
    158
    تشکر
    246
    تشکر شده 74 بار در 61 پست

    پیش فرض

    دوستان من هر کاری که میکنم مشکلایی رو که تو پست قبلیم عرض کردم رو نمیتونم حل کنم.

    لطفا" راهنمایی بفرمائید.

    ممنون
    ویرایش توسط mapmap : 19-09-2011 در ساعت 17:04

  17. #10
    کاربر فعال mapmap آواتار ها
    تاریخ عضویت
    Mar 2010
    نام
    M
    نوشته ها
    158
    تشکر
    246
    تشکر شده 74 بار در 61 پست

    پیش فرض

    برنامه ام رو هر طور که تغییر میدم یه مشکل جدید پیش میاد.
    خواهشا" کمکم کنید.
    میخوام با ماژول آلتراسونیک یه دزدگیر بسازم

    برنامه رو به این شکل تغییر دادم که مشکل عمل نکردن یا دیر عمل کردن Interrupts پیش اومد.
    میخوام با یه بار زدن INT0 دزدگیرم فعال شه و با زدن مجدد INT0 غیر فعال -همین
    اینم برنامه :

    Enable Interrupts
    Enable Int0
    Config Int0 = Rising
    On Int0 Lable0
    A:
    Do
    If Pinc.6 = 1 Then
    Lcd " Sys IS ON "
    Set Portc.0
    Waitms 300
    Cls
    Else
    Goto A
    End If
    Loop
    End
    Lable0:
    Lcd " Sys IS OFF "
    Waitms 100
    Toggle Pinc.6
    Return

    متشکر و منتظرم

  18. #11
    مدیر انجمن cmuiran آواتار ها
    تاریخ عضویت
    Jan 2011
    نام
    پیمان غلامی
    نوشته ها
    1,071
    تشکر
    407
    تشکر شده 966 بار در 553 پست

    پیش فرض

    مشکل جشمی نداره که بتونیم با یک بار دیدن بشه جواب داد
    شما چرا از پورت استفاده نمیکنین ؟؟؟
    راستی مقاومت pull-up/down گذاشتین؟؟؟

  19. #12
    کاربر فعال mapmap آواتار ها
    تاریخ عضویت
    Mar 2010
    نام
    M
    نوشته ها
    158
    تشکر
    246
    تشکر شده 74 بار در 61 پست

    پیش فرض

    نقل قول نوشته اصلی توسط cmuiran نمایش پست ها
    مشکل جشمی نداره که بتونیم با یک بار دیدن بشه جواب داد
    شما چرا از پورت استفاده نمیکنین ؟؟؟
    راستی مقاومت pull-up/down گذاشتین؟؟؟
    1-درسته اما اگه میشه یه راهنمایی بفرمائید که تو برنامه ام بتونم از Int0 استفاده کنم به شکلی که موقع فعال شدن وقفه همه ورودیا و خروجیام غیرفعال شن و Int0 کارشو انجام بده.
    من هر کاری میکنم عکس العمل INT0 کنده.

    2-از پورت استفاده میکنم اما میخوام به محض فعال شدن INT0 همه دستوراتم Stop شن.
    3- pull-up/down هم گذاشتم.

    متشکرم

  20. #13
    کاربر فعال mapmap آواتار ها
    تاریخ عضویت
    Mar 2010
    نام
    M
    نوشته ها
    158
    تشکر
    246
    تشکر شده 74 بار در 61 پست

    پیش فرض

    ضمنا" توی DO - LOOP هم مشکل دارم
    اگه بخوام چند تا اگر داشته باشم باید چیکار کنم ؟؟
    مثلا" اگه یه روز از میکرو بخوام چنتا پایه رو چک کنه بعداز True بودن اونا یه پایه رو فعال کنه باید چیکار کنم ؟؟؟

    متشکرم

  21. #14
    کاربر فعال mapmap آواتار ها
    تاریخ عضویت
    Mar 2010
    نام
    M
    نوشته ها
    158
    تشکر
    246
    تشکر شده 74 بار در 61 پست

    پیش فرض

    خواهشا" کمکم کنید
    اگه بخوام 6 تا ورودی حساس با عکس العمل سریع داشنه باشم که به محض فعال شدن هر کدوم اگه شرایط if برقرار باشه یکی از خروجیهام فعال شن باید چیکار کنم؟؟


    ممنون

  22. #15
    کاربر فعال mapmap آواتار ها
    تاریخ عضویت
    Mar 2010
    نام
    M
    نوشته ها
    158
    تشکر
    246
    تشکر شده 74 بار در 61 پست

    پیش فرض

    بابا مگه کاری داره ؟؟
    6 تا ورودی با عکس العملی سریع و با داشتن شرایطی مختلف (if - then-else )
    برای من سخته برای شماها که سخت نیست پس لطفا" منو راهنمایی بفرمائید ثواب داره
    کامپایلرم بسکامه
    متشکرم
    ویرایش توسط mapmap : 23-09-2011 در ساعت 02:15

  23. #16
    مدیر انجمن cmuiran آواتار ها
    تاریخ عضویت
    Jan 2011
    نام
    پیمان غلامی
    نوشته ها
    1,071
    تشکر
    407
    تشکر شده 966 بار در 553 پست

    پیش فرض

    سلام
    میگه سرعت چقدر مهمه مگه پروژه موشک یا نیروگاه داری میبندی
    بابا بزن به همین پورت های خودمون

    یا از atmega128 استفاده کن که 7 یا 8 تا اینتراپت داره
    یا اگه داری از 32 استفاده میکنی
    میتونی از اینتراپت ها و تایم را ببر تو حالت کانتر و مقدار بالا بده که در صورت سرریز شدن به لیبل خودش پرش کنه

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


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

    پیش فرض

    من از بیسکام متنفرم ولی کلی میگم :
    یکی از مشکلات اساسی شما استفاده از تاخیر توی روال اینتراپت هست! فرض کنیم که اینتراپت اتفاق افتاد میآد توی روال اینتراپت شما توی این روال از دستور waitms 50 استفاده میکنید ، این باعت میشه که تا 100 میلی ثانیه{چون دو بار از این دستور استفاده کردید} به هیچ وقفه ای پاسخ نده! باید برنامت رو جوری بنویسی که توی روال وقفه از تاخیر استفاده نشه و روال خیلی زود تمام بشه تا میکرو اماده دریافت وقفه بعدی باشه.
    برای این که بتونی هر تغییری رو روی پورت دلخواهت با اینتراپت ساپورت کنی باید برای پورتت مقاومت پول آپ بزاری ، اینتراپت مورد نظرت هم با به مقاومت به پول آپ میکنی بعد از بیت های دلخواه یه دیود به اینتراپت وصل میکنی به صورتی که کاتددیود به سمت پورت باشه و آند به اینتراپت وصل بشه،
    مثلا برای 8 بیت ، هشت تا دیود میذاری که اندشون رو همه به هم وصل کردی و به اینتراپت اتصال دادی.

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


  27. #18
    مدیرکل سایت kavir آواتار ها
    تاریخ عضویت
    Jun 2007
    نام
    زارعی
    نوشته ها
    3,547
    تشکر
    1,218
    تشکر شده 5,684 بار در 1,801 پست

    پیش فرض

    سلام
    فکر می کنم شما وقتی وارد زیر برنامه وقفه می شید وقفه رو غیر فعال کنید و قبل از return وقفه رو حل کنید
    موفق باشید
    کویر ویدئو راه اندازی شد

    اگر چه دیر ولی برگشتم به جمع دوستان قدیمی....

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


  29. #19
    مدیر انجمن cmuiran آواتار ها
    تاریخ عضویت
    Jan 2011
    نام
    پیمان غلامی
    نوشته ها
    1,071
    تشکر
    407
    تشکر شده 966 بار در 553 پست

    پیش فرض

    نقل قول نوشته اصلی توسط kavir نمایش پست ها
    سلام
    فکر می کنم شما وقتی وارد زیر برنامه وقفه می شید وقفه رو غیر فعال کنید و قبل از return وقفه رو حل کنید
    موفق باشید
    سلام اقای زارعی ببخشید وسط حرفتون
    اگه این دستور را قرار ندین ادامه برنامه را اجرا میکنه
    در صورتی که متغییر داشته یاشن این دستور کاربرد داره
    حالا امتحانش که بد نیست
    ولی ما که return نمیزاریم

  30. #20
    مدیرکل سایت kavir آواتار ها
    تاریخ عضویت
    Jun 2007
    نام
    زارعی
    نوشته ها
    3,547
    تشکر
    1,218
    تشکر شده 5,684 بار در 1,801 پست

    پیش فرض

    خواهش میکنم
    منظور من این بود
    [PHP]$regfile = "m8def.dat" $crystal = 16000000 Config Pind.2 = Input Config Portc = Output Enable Interrupts Enable Int0 On Int0 Label2 Do Reset Portc.1 Loop Label2:
    Disable interrups
    Set Portc.1 Waitms 50 Reset Portc.1 Waitms 50
    enable interrups
    Return End[/PHP]
    کویر ویدئو راه اندازی شد

    اگر چه دیر ولی برگشتم به جمع دوستان قدیمی....

صفحه 1 از 2 12 آخرینآخرین

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

  1. پاسخ: 3
    آخرين نوشته: 24-03-2013, 18:38

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

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