سلام
من یه برنامه کوچیک دارم که از وقفه int0 استفاده کردم و در پروتئوس وقتی امتحان میکنم همه چیز درست کار میکنه اما وقتی برنامه رو به میکرو mega32 انتقال میدم و توی برد امتحان میکنم وقفه اصلاً کار نمی کنه. وقفه رو برای لبه بالا رونده تنظیم کردم و پابه میکرو رو هم با مقاومت به زمین متصل کردم اما اصلاً وقفه اجرا نمیشه(الیته در سخت افزار). دوستانی که تجربه ای در این مورد دارن ممنون میشم راهنمایم کمید. در ضمن کد رو هم براتون میذارم.
من یه برنامه کوچیک دارم که از وقفه 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 } }
دیدگاه