اون بالا نوشتی که وقفه تایمر اتفاق نمیوفته وقتی getchar رو ور میدارم درست میشه
پس این یعنی وقفه تایمرت فعاله دیگه!!
و خود getchar درون سرویس کننده وقفه خارجی قرار داره nterrupt [EXT_INT0] void ext_int0_isr
حالا فرض کن وقفه خارجی اتفاق افتاده و CPU دز حال اجرای getchar درون ISR قرار داره، یعنی هنوز reti صادر نشده
حالاااا این وسط تایمر وقفه ایجاد میکنه میشه NESTED interrupt که کلا atmega نداره
حالا چرا درست میشه وقتی getchar نیست؟
چون دیگه getchar نیست که CPU رو نگه داره میرسه به آخر ISR و reti صادر میشه حالا CPU میدونه تو وقفه نیست پس وقفه تایمر قابل اجراس.
- - - Updated - - -
این هرچی تابعیه که شما قبل اتفاق افتادن وقفه خاجی توشی. من چون نمیدونستم چیه اسمشو گذاشتم هرچی
- - - Updated - - -
حالا کد پیشنهادی من میاد یه فلگ رو ست میکنه و از ISR میاد بیرون، حالا وقفه تایمر میتونه اتفاق بیوفته.