void DAC_IRQHandler(void) { // clear interrupt flag DAC_CLR_INT_FLAG(DAC, 0); DAC_WRITE_DATA(DAC, 0, a16Sine[index0]); index0 = (index0 + 1) % SINE_ARRAY_SIZE; return; }
/*---------------------------------------------------------------------------------------------------------*/ void DACFunctionTest(void) { printf("\n"); printf("+----------------------------------------------------------------------+\n"); printf("| DAC software trigger test |\n"); printf("+----------------------------------------------------------------------+\n"); printf("\n\nPlease hit any key to start DAC output\n"); getchar(); /* Set the software trigger, enable DAC even trigger mode and enable D/A converter */ DAC_Open(DAC, 0, DAC_SOFTWARE_TRIGGER); /* The DAC conversion settling time is 8us */ DAC_SetDelayTime(DAC, 8); /* Set DAC 12-bit holding data */ DAC_WRITE_DATA(DAC, 0, sine[index]); /* Clear the DAC conversion complete finish flag for safe */ DAC_CLR_INT_FLAG(DAC, 0); /* Enable the DAC interrupt */ DAC_ENABLE_INT(DAC, 0); NVIC_EnableIRQ(DAC_IRQn); /* Start A/D conversion */ DAC_START_CONV(DAC); printf("\nHit any key to quit!\n"); while(1) { /* Start A/D conversion */ DAC_START_CONV(DAC); if((DEBUG_PORT->FIFOSTS & UART_FIFOSTS_RXEMPTY_Msk) != 0) continue; else break; } return; }
/*---------------------------------------------------------------------------------------------------------*/ void DAC_IRQHandler(void) { if(DAC_GET_INT_FLAG(DAC, 0)) { if(index == array_size) index = 0; else { DAC_WRITE_DATA(DAC, 0, sine[index++]); /* Clear the DAC conversion complete finish flag */ DAC_CLR_INT_FLAG(DAC, 0); } } return; }