سلام دوستان
در برنامه ای قصد دارم پالس های ورودی را به وسیله اینتراپت خارجی بخونم و وقتی به تعداد معینی رسید، وضعیت یک پین toggle بشه. اما برنامه در حال زیر جواب نمیده.
اما جالبه زمانی که چک کردن متغییر count را به داخل روتین وقفه انتقال میدم همه چیز درسته و برنامه زیر درست کار میکنه
در دو نمونه الگوریتم یکیه. اما نمیدونم توی حالت اول مشکل از کجاست. متغییر count هم به صورت سراسری تعریف شده.
ممنون میشم راهنماییم کنید.
در برنامه ای قصد دارم پالس های ورودی را به وسیله اینتراپت خارجی بخونم و وقتی به تعداد معینی رسید، وضعیت یک پین toggle بشه. اما برنامه در حال زیر جواب نمیده.
کد:
unsigned int count=0; ISR(PORTB_INT0_vect) { count++; } int main(void) { // External interrupt 0 on PB0, enable pullup, sence Rising edge PORTB.PIN2CTRL = PORT_ISC_RISING_gc | PORT_SRLEN_bm; PORTB.INT0MASK = PIN2_bm; //PORTD.INT1MASK = PIN2_bm; PORTB.INTCTRL = PORT_INT0LVL0_bm; // Enable low level interrupts PMIC.CTRL |= PMIC_LOLVLEN_bm; sei(); PORTC.DIR = 0x3F; while(1) { if (count == 50) { count =0; PORTC.OUTTGL = 1<<0; } } }
کد:
ISR(PORTB_INT0_vect) { count++; if (count == 50) { count =0; PORTC.OUTTGL = 1<<0; } }
ممنون میشم راهنماییم کنید.
دیدگاه