Симулятор VDSP 4.0, процессор BF532 rev3.0.
Выполняю программу по шагам:
- разрешаю вырабатывать прерывания от DMA0
при этом SIC_ISR = 0x00000000 - прерываний нет, так как канал DMA0 не разрешен
- разрешаю передатчик SPORT1
теперь SIC_ISR = 0x00000100, т.е. прошло прерывание от DMA0. Хотя, вроде должно быть прерывание от SPORT1 TX (SIC_ISR = 0x00001000)?
Если строки программы переставить местами, то еще интереснее:
- разрешаю передатчик SPORT1
при этом SIC_ISR = 0x00001000, т.е. прошло прерывание от SPORT1 TX, вроде так и должно быть
- разрешаю вырабатывать прерывания от DMA0
теперь SIC_ISR = 0x00000100, т.е. произошло прерывание от DMA0. Хотя, вроде должно остаться прерывание от SPORT1 TX (SIC_ISR = 0x00001000)?
Вот упрощенная версия программы:
#include <cdefBF532.h>
void main()
{
*pDMA0_CONFIG = DI_EN; // разрешаем вырабатывать прерывания от DMA0
asm("ssync;");
// - здесь SIC_ISR = 0x00000000
*pSPORT1_TCR1 |= 0x0001; // разрешаем передатчик SPORT1
asm("ssync;");
//теперь SIC_ISR = 0x00000100, т.е. произошло прерывание от DMA0
}