Beispiel #1
0
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();
}
Beispiel #2
0
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);
}
Beispiel #3
0
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();
}
Beispiel #4
0
/*******************************************************************************
* 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){

    }
}