I'm using some DMtimer-code to create regularly interrupts. The code is taken out of DMTimer-example for BeagleBone and is running with a frequency of 2 MHz and highest interrupt priority:
#define TIMER_INITIAL_COUNT (0xFFFFFFFFu-12) #define TIMER_RLD_COUNT (0xFFFFFFFFu-12) IntPrioritySet(SYS_INT_TINT2, 0, AINTC_HOSTINT_ROUTE_IRQ);
Beside of this USB (out of USBDevSerial-example), Ethernet (out of enetLwip-example) and SD-card/FatFS is used, there the interrupts are running with lower priority in order to not to influence the DMtimer-interrupt:
// ethernet IRQs IntPrioritySet(SYS_INT_3PGSWTXINT0, 1, AINTC_HOSTINT_ROUTE_IRQ); IntPrioritySet(SYS_INT_3PGSWRXINT0, 1, AINTC_HOSTINT_ROUTE_IRQ); ... //EDMA IRQs for SD-Card IntPrioritySet(EDMA_COMPLTN_INT_NUM, 3, AINTC_HOSTINT_ROUTE_IRQ); IntPrioritySet(EDMA_ERROR_INT_NUM, 3, AINTC_HOSTINT_ROUTE_IRQ); //MMCSD-IRQs IntPrioritySet(SYS_INT_MMCSD0INT, 3, AINTC_HOSTINT_ROUTE_IRQ); IntPrioritySet(SYS_INT_MMCSD1INT, 3, AINTC_HOSTINT_ROUTE_IRQ); ... //USB IntPrioritySet(SYS_INT_USB0, 2, AINTC_HOSTINT_ROUTE_IRQ);
All of them run with a higher priority value, means a lower priority than the DMTimer interrupt.
Nevertheless I notice a deviation of timer accuracy, it is about factor 1,68 too slow.
Any ideas what could cause this? Are there any other interrupts I should care about? Or what else could slow down the DMtimer?