اطلاعیه

Collapse
No announcement yet.

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

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

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

    سلام
    من یه برنامه کوچیک دارم که از وقفه int0 استفاده کردم و در پروتئوس وقتی امتحان میکنم همه چیز درست کار میکنه اما وقتی برنامه رو به میکرو mega32 انتقال میدم و توی برد امتحان میکنم وقفه اصلاً کار نمی کنه. وقفه رو برای لبه بالا رونده تنظیم کردم و پابه میکرو رو هم با مقاومت به زمین متصل کردم اما اصلاً وقفه اجرا نمیشه(الیته در سخت افزار). دوستانی که تجربه ای در این مورد دارن ممنون میشم راهنمایم کمید. در ضمن کد رو هم براتون میذارم.


    کد:
    interrupt [EXT_INT0] void ext_int0_isr(void)
    {          interrupt code
    }
    
    
    // Port C Initialization
     // Function : Bit7 = Out Bit6 = Out Bit5 = Out Bit4 = Out Bit3 = Out Bit2 = Out Bit1 = Out Bit0 = Out
    DDRC =(1 << DDC7) |(1 << DDC6) |(1 << DDC5) |(1 << DDC4) |(1 << DDC3) |(1 << DDC2) |(1 << DDC1) |(1 << DDC0);
     // State : Bit7 = 0 Bit6 = 0 Bit5 = 0 Bit4 = 0 Bit3 = 0 Bit2 = 0 Bit1 = 0 Bit0 = 0
    PORTC =(0 << PORTC7) |(0 << PORTC6) |(0 << PORTC5) |(0 << PORTC4) |(0 << PORTC3) |(0 << PORTC2) |(0 << PORTC1) |(0 << PORTC0);
    
     // Port D Initialization
     // Function : Bit7 = In Bit6 = In Bit5 = In Bit4 = In Bit3 = In Bit2 = In Bit1 = In Bit0 = In
    DDRD =(0 << DDD7) |(0 << DDD6) |(0 << DDD5) |(0 << DDD4) |(0 << DDD3) |(0 << DDD2) |(0 << DDD1) |(0 << DDD0);
      // State : Bit7 = T Bit6 = T Bit5 = T Bit4 = T Bit3 = T Bit2 = T Bit1 = T Bit0 = T
    PORTD =(0 << PORTD7) |(0 << PORTD6) |(0 << PORTD5) |(0 << PORTD4) |(0 << PORTD3) |(0 << PORTD2) |(0 << PORTD1) |(0 << PORTD0);
    
    
    TCNT0 = 0x00;
    OCR0 = 0x00;
    TCCR0 = 0x00;
    TIMSK = 0x01;
    lcd_init(16);
    flag = 0;
    PORTC.0 = 0;
    PORTD.5 = 0;
    
     // External Interrupt(s) Initialization
    
    GICR|=(0 << INT1) |(1 << INT0) |(0 << INT2);
    MCUCR =(0 << ISC11) |(0 << ISC10) |(1 << ISC01) |(1 << ISC00);
    MCUCSR=(0<<ISC2);
    GIFR =(0 << INTF1) |(1 << INTF0) |(0 << INTF2);
    
    
    #asm( "cli");
     #asm( "sei");
     
    while(1)
    {
        main code
    }
    
    }

    #2
    پاسخ : مشکل اجرای وقفه در سخت افزار میکرو

    پروتئوس در اکثر مواقع برای AVR درست جواب میده بهتره کد و فایل پروتئوس رو قرار بدین تا بهتر بشه نظر داد
    یه مورد دیگه هم هست! آیا در سخت افزار LCD رو وصل کردین و توی حلقه اصلی یه چشمک زن بزارین تا از اجرای کد اطمینان حاصل بشه

    دیدگاه


      #3
      پاسخ : مشکل اجرای وقفه در سخت افزار میکرو

      در کد نویسی بیشتر دقت کنید. در سطح انجمن نمونه کد و اموزش به وفور یافت میشه.
      در روال وقفه چیزی نیس تا اجرا بشه البته به شرط درست بودن بقیه خطوط... !

      و در نهایت نوشتین شستی با مقاومت به زمین وصل شده که اشتباهه و باید یک سر شستی مشتقیم به زمین و سر دیگر به پایه وقففه متصل بشه. مقاومت هم مابین + تغذیه و پین وقفه قرار خواهد گرفت.(البته ظاهرا پول اپ داخلی فعاله.)

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

      موفق باشید
      چرا ناراحتی پاتریک!
      + امروز ی بچه دیدم سرچهارراه گل میفروخت
      - از دیدنش ناراحت شدی؟
      + نه
      پس چی ناراحتت کرده
      + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
      ------------------------------------------------------------------------------------------------------
      تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
      ------------------------------------------------------------------------------------------------------
      محصولات

      دیدگاه


        #4
        پاسخ : مشکل اجرای وقفه در سخت افزار میکرو

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

        دیدگاه

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