اطلاعیه

Collapse
No announcement yet.

وقفه های خارجی میکرو

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

    وقفه های خارجی میکرو

    با سلام
    بچه ها من یک مشکل بزرگ با میکرو ها (برای نمونه atmega32)دارم در مورد وقفه های خارجی من می خواهم وقتی برنامه در حال اجرا ء می باشد در هر حالتی حتی در دستورdelayبه محض فعال شدن یک ورودی که نمی دونم به کدوم پایه وصل کنم فعال شد برنامه متوقف شود و برنامه دیگری اجرا شود نه سخت افزاری بلدم نه نرم افزاری لطفا کمکم کنید با تشکر

    #2
    پاسخ : وقفه های خارجی میکرو

    نه سخت افزار بلدی و نه نرم افزار پس راهی طولانی در پیش داری
    مثلا از int0 استفاده کن
    config int0=low level
    همیشه به یاد خدا باش !

    دیدگاه


      #3
      پاسخ : وقفه های خارجی میکرو

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

      دیدگاه


        #4
        پاسخ : وقفه های خارجی میکرو

        کسی نمی تونه یه نمونه برنامه برام بزاره

        دیدگاه


          #5
          پاسخ : وقفه های خارجی میکرو

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

          www.intelart.ir


          ساخت کنترلر دما PID فازی با AVR [آموزشی]

          دیدگاه


            #6
            پاسخ : وقفه های خارجی میکرو

            میکروکنترلر ATMEGA32 دارای 3 وقفه External (خارجی) میباشد که وقفه های int0 , int1 میتوانند حساس به لبه یا سطح پیکره بندی شوند ولی وقفه int 2 فقط با لبه بالا رونده یا پایین رونده تحریک میشود.نحوه تریگر شدن وقفه های خارجی در bascom توسط دستور زیر تعیین میشوند.
            config intX=lowlevel/falling/rising
            lowlevel: حساس به سطح پایین یا صفر پالس ورودی
            falling: حساس به لبه پایین رونده
            rissing: حساس به لبه بالا رونده
            حتما پس از نوشتن دستور بالا باید دستور زیر را بنویسید تا وقفه مورد نظر فعال شود.
            Enable Interrupts
            Enable Intx
            on intx lable
            حالا با یک پالس یا لبه به یکی از پایه های 16و17و3 که پایه های int0,1,2 میباشند میتوان وقفه ی مربوطه را فعال کرد و به برچسب lable پرش کرد.ناگفته نمونه که بازگشت از زیر برنامه توسط دستور Return انجام میگیرد.
            نکته ی مهم: وقفه ی خارجی و تایمر کانتر ها در درون میکرو کنترلر ها دارای یک سخت افزار مجزا هستند و این به معنای این است که وقتی وقفه ای اتفاق میافتد مهم نیست که CPU در حال انجام چه کاری است و به محض دریافت وقفه (ISR (Interrupt Subroutine مروبط به آن وقفه اجرا میشود.
            یک برنامه ی ساده نوشتم که led متصل به پورت b0 هر 300 میلی ثانیه چشمک میزند و زمانی که وقفه با لبه ی پایین رونده دریافت شد led متصل به پورت b1 تغییر وضعیت میدهد.

            کد:
            [$regfile = "m32def.dat"
            $crystal = 1000000
            Config Portb = Output
            Config Int0 = Rising
            Enable Interrupts
            Enable Int0
            On Int0 Jalal
            Do
            Toggle Portb.0
            Waitms 300
            Loop
            Jalal:
            Toggle Portb.1
            Return]

            دیدگاه


              #7
              پاسخ : وقفه های خارجی میکرو

              مرسی از جوابتون با برنامه cکدویژن چیزی ندارید اخه من بسکام بلد نیستم :biggrin:

              دیدگاه

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