دوستان سلام.
یک برنامه ساده برای راه اندازی وقفه تایمر0 نوشتم و با Keil شبیه سازی کردم. جریان برنامه با تطابق تایمر0 با MR0 وارد سرویس وقفه میشه ولی یک مشکلی هست. فقط برای اولین باری که تطابق صورت گرفت وقفه اتفاق می افته.
یعنی بعد از خروج از اولین وقفه دیگه وقفه صورت نمیگیره. کدش به صورت زیر هست. اگه امکان داره شما هم تست کنید و ببینید کجا مشکل داره؟ با سپاس.
یک برنامه ساده برای راه اندازی وقفه تایمر0 نوشتم و با Keil شبیه سازی کردم. جریان برنامه با تطابق تایمر0 با MR0 وارد سرویس وقفه میشه ولی یک مشکلی هست. فقط برای اولین باری که تطابق صورت گرفت وقفه اتفاق می افته.
یعنی بعد از خروج از اولین وقفه دیگه وقفه صورت نمیگیره. کدش به صورت زیر هست. اگه امکان داره شما هم تست کنید و ببینید کجا مشکل داره؟ با سپاس.
کد:
#include <stdio.h> #include <lpc23xx.h> void t0_isr(void) { __nop(); T0IR=0xff; // clear flags __nop(); } int main(void) { PCONP= (1<<1); PCLKSEL0 &=~(3<<2); T0MCR=(3<<0); T0MR0=9; T0IR=0xff; // clear flags T0PR=0x03; T0CTCR=0x00; T0TCR=0x01; ////////////////// VICIntEnClr=0xffffffff;// Clear All interrupt VICIntSelect=0x0000; VICVectAddr4=(unsigned int)t0_isr; VICVectPriority4=0x04; VICIntEnable|=(1<<4); while(1) { __nop(); __nop(); __nop(); } // return 0; }
دیدگاه