اطلاعیه

Collapse
No announcement yet.

فعال کردن وقفه تغییر وضعیت پین ها یاpin chane interruptدر بسکام برای attiny13a

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

    فعال کردن وقفه تغییر وضعیت پین ها یاpin chane interruptدر بسکام برای attiny13a

    سلام دوستان
    میخوام قابلیت pciرو فعال کنم ولی نمی دونم چطوری باید اینکارو انجام داد لطفا راهنمایی کنید
    نمونه کدم باشه خوبه

    #2
    پاسخ : فعال کردن pin chane interruptدر بسکام برای attiny13a

    :angry: :angry: :angry: :angry: :angry: :question: :question: :question:

    دیدگاه


      #3
      پاسخ : فعال کردن pin chane interruptدر بسکام برای attiny13a

      بیا دوست عزیز اینم یه مثال البته با 45 نه 13.دیتا شیتشو بگیر و طبق اون انجامش بده ولی روالش مثل همه:
      $regfile = "attiny45.dat"
      $crystal = 1000000

      Config Portb = &B11100001 'config inputs / outpus
      Config Timer0 = Timer , Prescale = 1 'need timer to check interrupt vector
      Dim Flag As Byte


      Enable Interrupts
      Enable Timer0

      Set Pcmsk.pcint1 'configure pin to be sensed
      Set Pcmsk.pcint2
      Set Pcmsk.pcint3
      Set Pcmsk.pcint4
      Set Gimsk.pcie 'enable PCIE

      On Timer0 Active 'go sub active

      Set Portb.0 'set pin to see activity
      Flag = 1
      Start Timer0
      Do
      Wait 5
      Flag = 0
      Wait 1
      If Flag = 0 Then
      Reset Portb.0
      End If
      Loop

      Stop Timer0
      End

      Active:
      If Gifr.pcif = 1 Then 'check interrupt
      Reset Gifr.pcif
      Flag = 1
      Set Portb.0
      End If
      Return
      الهم صل علی محمد و آل محمد و عجل فرجهم

      دیدگاه


        #4
        پاسخ : فعال کردن pin chane interruptدر بسکام برای attiny13a

        سلام
        دوستان اگه کسی توضیح جامعی داره در مورد این قابلیت که چیه وروند اجراش چه طوریه ممنون میشم

        دیدگاه


          #5
          پاسخ : فعال کردن pin chane interruptدر بسکام برای attiny13a

          دوستان کسی توضیح نمیده این وقفه چطور عمل میکنه وبرنامه نویسی چه طور انجام میشه؟

          دیدگاه


            #6
            پاسخ : فعال کردن pin chane interruptدر بسکام برای attiny13a

            نوشته اصلی توسط میثم قاسمی نیا
            دوستان کسی توضیح نمیده این وقفه چطور عمل میکنه وبرنامه نویسی چه طور انجام میشه؟
            مشکل حل شد. :applause: :applause: :applause: :applause:

            دیدگاه


              #7
              پاسخ : فعال کردن pin chane interruptدر بسکام برای attiny13a

              سلام دوستان برنامه رو به این شکل نوشتم،فقط خواهش میکنم ببینید شکل دستوری وقفه خصوصا on pcint0 onmicدرسته یا خیر

              دیدگاه


                #8
                پاسخ : فعال کردن pin chane interruptدر بسکام برای attiny13a

                من اول از دوست گلم جناب shahpoori تشکر میکنم برای برنامه ایی که گذاشتند و واقع کمک کرد در درک وقفه تغییر وضعیت پین ها،این مشکل برطرف گردید ودستگاه به خوبی کار میکنه و بهتره که تجربم رو در ارتباط با نحوه فعال کردن وریجستر هاش بگم

                پین هایی که قابلیت تغییر وضعیت دارند به صورت pcintxبیان میشون که x از 0 تا5 هست در کل وقفه مربوط به این پین ها توسط چند ریجستر کنترل میشود
                1..sreg که بیت 7 آن وقفه سراسری رو فعال می کنه و همون enable interrupt هست،بنابراین که می خواید فعالش کنید یا دستور خود بسکام رو بنویسید یا بدین صورت sreg.7=1
                2..gimsk که بیت 5 آن وقفه تغییر وضعیت را فعال می کنه ودر بنامه بصورت gimsk.5=1بیان میشود.
                3..gifr که در واقعflag وقفه تغییر وضعیت است و وقتی پین هایی که فعال شدن تغییر می کنند این پرچم 1 منطقی میشه وبا اجرای روتین وقفه یا نوشتن 0 در این رجیستر غیر فعال میشود واین ریجستر همون دستور on pcinx ....می باشد (دوستان حرفه ایی اگه اشتباه می کنم متذکر بشید)
                4. pcmskکه با یک کردن بیتهای 0 تا 5اون می تونیم هریک از پین های pcint رو بعنوان پین تغییر وضعیت بیان کنیم وبه این شکله:pcmsk.x=1 که x میتونه پین های 0تا5(pcint0..pcint1.........pcint5) باشه(در attiny13a)
                اینم برنامه:
                کد:
                $regfile = "attiny13a.dat"
                $crystal = 1000000
                $hwstack = 15
                $swstack = 8
                $framesize = 8
                
                 Dim P As Bit
                 P = 0
                
                Config Portb.2 = Output
                
                Sreg.7 = 1
                
                 Gimsk.5 = 1
                 Pcmsk.0 = 1
                
                 On Pcint0 Onmic1
                 Pinb.2 = 0
                
                Do
                 If P = 1 Then : Portb.2 = 1 : Waitms 1000 : Portb.2 = 0 : Power Powerdown : End If
                
                
                
                Loop
                End
                
                Onmic1:
                  P = 1
                 Return

                دیدگاه


                  #9
                  پاسخ : فعال کردن وقفه تغییر وضعیت پین ها یاpin chane interruptدر بسکام برای attiny13a

                  دوستان ببخشید بعد از مذت زیادی که از این بحث گذشته دوباره این رو مطرح می کنم من هم می خوام از پایه PCINT3 به عنوان اینترپت خارجی استفاده کنم و رجیشتر ها رو هم همونطوری که دوستمون گفتن مقدار دهی کردم ولی جواب نمیده باید چیکار کنم :sad:
                  اینم برنامه من :
                  کد:
                  #include <tiny13.h>
                  #include <delay.h>
                  
                  
                  void main ()
                   {
                    DDRB.4=1;    
                    
                    DDRB.3=0;    
                         
                    GIMSK=0x20;
                    PCMSK=0x04;
                    GICR=0x40;   
                    MCUCR=0x03;   
                    GIFR=0x20;    
                    #asm("sei");
                    while(1);
                   }
                   //------------------------->>> زیر روال وقفه<<<-----------------------------
                   
                  interrupt [3] void ext_pcint3(void)
                   {
                    #asm("cli");
                    PORTB.4=1;
                    delay_ms(100);
                    PORTB.4=0;
                    delay_ms(200);
                    #asm("sei");
                   }
                  یه برنامه خیلی سادست با اجرای روتین وقفه باید یه ال ای دی چشمک بزنه :angry:
                  خداوند بی نهایت است اما به قدر نیاز تو فرود می آید ، به قدر آرزوی تو گسترده می شود و به قدر ایمان تو کارگشاست.
                  [hr]

                  دیدگاه

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