Hi,
this is originally a Starterware/BeagleBone Black question but since it is still not solved I try to find some ideas and help here (original thread can be found at http://e2e.ti.com/support/embedded/starterware/f/790/t/302178.aspx )
Within Starterware there is a example that utilitises DMTimer2 to call an ISR periodically. That example works well with TIMER_INITIAL_COUNT (0xFF000000u) and TIMER_RLD_COUNT (0xFF000000u). I tried to extend it a bit to let the ISR be called more often but found a limitation with timer intial/reload count values of 0xFFFFFE00. It is impossible to set bigger values so that the ISR is called more often - the related values are ignored and the ISR can't be called more often than every 21 usecs. But according to CPU and CLK_M_OSC value it should be possible to have much higher frequencies here.
After adding some other code to this example I could go down to a ISR that is called every 10 usec - but unfortunately I don't know which of the (complex) initialisations of this additional code caused this improvement.
Now the current state is as follows:
- timer/reload values bigger than (0xFFFFFFFF-12) are ignored, it is not possible to call a ISR more often than every 10 usec
- when I set up an other timer (DMTimer3) to call a second ISR so that both are called alternating, the whole speed goes down and I no longer reach the 10 usec period, additionally the whole system is stalled, my main loop is no longer processed
Of course execution time of my ISRs is much shorter than these 10 usecs.
So...any idea what could cause this slow-down and speed-limitation?
Thanks!