We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I've read and reread the Phillips manual and still have a problem with a fast interrupt routine. I want timer 0 to trigger a fast interrupt. In the timer 0 service routine, I just want to do an A/D conversion into an array. I can't seem to get it to work. I'd appreciate it if anyone could tell me what I am doing wrong. The interrupt service routine and the routine which set up timer 0 are shown below. In the rest of the program, I just enable the timer 0 interrupt to start it off and disable it when the array is filled Thanks in advance, Jim void fiqint(void) __fiq // // Timer 0 interrupt routine // { unsigned int val; AD0CR |= 0x01200000; // start A/D conversion do val = AD0DR; while ((val & 0x80000000) == 0); AD0CR &= ~0x01000000; data[index++] = val; T0IR = 0x08; // clear the flag VICVectAddr = 0; } void timer0_init(void) // sets up timer 0 to interrupt every sample time using the FIQ interrupt { // float sample_freq; T0MR0 = (VPB_CLOCK / (SAMPLES_PER_CYCLE * expected_freq)) - 1; // sample_freq = ((double) VPB_CLOCK) / ((double) (SAMPLES_PER_CYCLE * (T0MR0) + 1)); // printf("T0MR0 is %d\n\r", T0MR0); // printf("Sample frequency is %g\n\r", sample_freq); T0MCR = 3; // timer 0 triggers on match and resets itself T0TCR = 1; // start the clock VICIntSelect = (1 << 4); // Timer0 made to be the FIQ }
In the following thread: http://www.keil.com/forum/docs/thread5969.asp there is a description about a timer in fiq mode that works. Dietmar