static void doChangeDACWaveform(TouchButton * const aTheTouchedButton, int16_t aValue) { FeedbackToneOK(); sActualWaveform++; if (sActualWaveform == WAVEFORM_NOISE) { DAC_ModeNoise(); DAC_Start(); } else if (sActualWaveform > WAVEFORM_MAX) { sActualWaveform = WAVEFORM_TRIANGLE; DAC_ModeTriangle(); DAC_Start(); } aTheTouchedButton->setCaption(WaveformStrings[sActualWaveform]); aTheTouchedButton->drawButton(); }
void doDACStop(TouchButton * const aTheTouchedButton, int16_t aValue) { FeedbackToneOK(); aValue = !aValue; if (aValue) { aTheTouchedButton->setCaption(StringStop); DAC_Start(); } else { DAC_Stop(); aTheTouchedButton->setCaption(StringStart); } aTheTouchedButton->setRedGreenButtonColorAndDraw(aValue); }
void startDACPage(void) { BlueDisplay1.clearDisplay(COLOR_BACKGROUND_DEFAULT); TouchSlider::setDefaultBarColor(TOUCHSLIDER_DEFAULT_BAR_COLOR); TouchSlider::setDefaultSliderColor(COLOR_BLUE); //1. row int tPosY = 0; TouchButtonStartStop = TouchButton::allocAndInitSimpleButton(BUTTON_WIDTH_3_POS_2, tPosY, BUTTON_WIDTH_3, BUTTON_HEIGHT_4, COLOR_RED, StringStop, TEXT_SIZE_22, BUTTON_FLAG_DO_BEEP_ON_TOUCH, true, &doDACStop); TouchButtonStartStop->setRedGreenButtonColor(); initMainHomeButtonWithPosition(BUTTON_WIDTH_3_POS_3, 0, false); //2. row tPosY += BUTTON_HEIGHT_4_LINE_2; // Frequency slider TouchSliderHorizontal.initSlider(FREQUENCY_SLIDER_START_X, tPosY, DAC_SLIDER_SIZE, MAX_SLIDER_VALUE, MAX_SLIDER_VALUE, sLastFrequencySliderValue, "Frequency", TOUCHSLIDER_DEFAULT_TOUCH_BORDER, TOUCHSLIDER_SHOW_BORDER | TOUCHSLIDER_IS_HORIZONTAL, &doDACFrequencySlider, NULL); // 3. row tPosY += BUTTON_HEIGHT_4_LINE_2; TouchButtonSetWaveform = TouchButton::allocAndInitSimpleButton(BUTTON_WIDTH_3_POS_2, tPosY, BUTTON_WIDTH_3, BUTTON_HEIGHT_4, COLOR_RED, StringTriangle, TEXT_SIZE_11, BUTTON_FLAG_DO_BEEP_ON_TOUCH, 1, &doChangeDACWaveform); TouchButtonAutorepeatFrequencyMinus = TouchButtonAutorepeat::allocAndInitSimpleButton(FREQUENCY_SLIDER_START_X + 6, tPosY, BUTTON_WIDTH_5, BUTTON_HEIGHT_4, COLOR_RED, StringMinus, TEXT_SIZE_22, 1, &doChangeDACFrequency); TouchButtonAutorepeatFrequencyPlus = TouchButtonAutorepeat::allocAndInitSimpleButton(230, tPosY, BUTTON_WIDTH_5, BUTTON_HEIGHT_4, COLOR_RED, StringPlus, TEXT_SIZE_22, -1, &doChangeDACFrequency); TouchButtonAutorepeatFrequencyMinus->setButtonAutorepeatTiming(600, 100, 10, 20); TouchButtonAutorepeatFrequencyPlus->setButtonAutorepeatTiming(600, 100, 10, 20); //Amplitude slider TouchSliderVertical.initSlider(5, 20, DAC_SLIDER_SIZE, VERTICAL_SLIDER_MAX_VALUE, VERTICAL_SLIDER_MAX_VALUE, sLastAmplitudeSliderValue, "Amplitude", TOUCHSLIDER_DEFAULT_TOUCH_BORDER, TOUCHSLIDER_SHOW_BORDER | TOUCHSLIDER_SHOW_VALUE, &doDACVolumeSlider, &mapDACVolumeValue); //Offset slider TouchSliderVertical2.initSlider(BlueDisplay1.getDisplayWidth() - (TOUCHSLIDER_OVERALL_SIZE_FACTOR * DAC_SLIDER_SIZE) - 1, 20, DAC_SLIDER_SIZE, VERTICAL_SLIDER_MAX_VALUE, VERTICAL_SLIDER_MAX_VALUE / 2, sLastOffsetSliderValue, "Offset", TOUCHSLIDER_DEFAULT_TOUCH_BORDER, TOUCHSLIDER_SHOW_BORDER | TOUCHSLIDER_SHOW_VALUE, &doDACOffsetSlider, &mapDACOffsetValue); TouchSliderVertical2.setXOffsetValue(-(2 * TEXT_SIZE_11_WIDTH)); // draw buttons and slider drawDACPage(); registerSimpleResizeAndReconnectCallback(&drawDACPage); ComputeFrequencyAndSetTimer(ComputeReloadValue(sLastFrequencySliderValue), true); DAC_Start(); }
/******************************************************************************* * Function Name : DAC_Demo * Description : DAC_Demo function * Input : None. * Return : None. *******************************************************************************/ void DAC_Demo(void) { DAC_InitTypeDef InitStruct; TMRB_InitTypeDef m_tmrb; /* DA0 Config */ DAC_Start(TSB_DA0); InitStruct.DACClear = DAC_CLEAR; InitStruct.PostTime = 15U; InitStruct.PreTime = 8U; InitStruct.Offset = DAC_0DIV8_VDD; InitStruct.AmpSel = DAC_1DIV4_VDD; InitStruct.TrgSel = DAC_TRG_TMRB2; InitStruct.TrgFunc = DAC_TRG_ENABLE; InitStruct.DMAFunc = DAC_DMA_DISABLE; InitStruct.Wave = DAC_TRIANGLE_WAVE; DAC_Init(TSB_DA0, &InitStruct); DAC_SetOutputCode(TSB_DA0,0x3FFU); /*TMRB Config*/ m_tmrb.Mode = TMRB_INTERVAL_TIMER; m_tmrb.ClkDiv = TMRB_CLK_DIV_8; m_tmrb.Cycle = TMRB_DAC; m_tmrb.UpCntCtrl = TMRB_AUTO_CLEAR; m_tmrb.Duty = TMRB_DAC; TMRB_Enable(TSB_TB2); TMRB_Init(TSB_TB2, &m_tmrb); NVIC_EnableIRQ(INTTB2_IRQn); TMRB_SetRunState(TSB_TB2, TMRB_RUN); while(1){ } }