Yossi_Students / Mbed 2 deprecated TAU_ZOOLOG_WAVE_Generator

Dependencies:   mbed

Fork of TAU_ZOOLOG_Chirp_Generator by Yossi_Students

Committer:
Arkadi
Date:
Sun Jul 16 12:39:53 2017 +0000
Revision:
9:6d4136d9c074
Parent:
3:25cd717ad782
Small fixes to UI

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TauZoolog 3:25cd717ad782 1 // Predefined output procedure
TauZoolog 3:25cd717ad782 2
TauZoolog 3:25cd717ad782 3 inline void predefined_output(void)
TauZoolog 3:25cd717ad782 4 {
TauZoolog 3:25cd717ad782 5 int i;
TauZoolog 3:25cd717ad782 6 uint32_t ADCValue;
TauZoolog 3:25cd717ad782 7
TauZoolog 3:25cd717ad782 8 // Read ADC input
TauZoolog 3:25cd717ad782 9 // ADCFloat=((uint16_t)(hadc1.Instance->DR) * ADC2Float)-1.0f;
TauZoolog 3:25cd717ad782 10 ADCValue = (uint32_t)hadc1.Instance->DR;
TauZoolog 3:25cd717ad782 11
TauZoolog 3:25cd717ad782 12 // Read ADC input
TauZoolog 3:25cd717ad782 13 ADCFloat=(ADCValue * ADC2Float)-1.0f;
TauZoolog 3:25cd717ad782 14 // ADCFloat=(float)(hadc1.Instance->DR);
TauZoolog 3:25cd717ad782 15
TauZoolog 3:25cd717ad782 16 // toggle pin PA_6 -- D12, Loop frequency indicator
TauZoolog 3:25cd717ad782 17 mytoggle = ! mytoggle;
TauZoolog 3:25cd717ad782 18
TauZoolog 3:25cd717ad782 19 if( ADCValue > ADCValueMax) {
TauZoolog 3:25cd717ad782 20 ADCValueMax = ADCValue;
TauZoolog 3:25cd717ad782 21 // printf("ADCValueMin = %d; ADCValueMax = %d; ADCValueDelta = %d\n", ADCValueMin, ADCValueMax, ADCValueMax - ADCValueMin);
TauZoolog 3:25cd717ad782 22 }
TauZoolog 3:25cd717ad782 23 if( ADCValue < ADCValueMin) {
TauZoolog 3:25cd717ad782 24 ADCValueMin = ADCValue;
TauZoolog 3:25cd717ad782 25 // printf("ADCValueMin = %d; ADCValueMax = %d; ADCValueDelta = %d\n", ADCValueMin, ADCValueMax, ADCValueMax - ADCValueMin);
TauZoolog 3:25cd717ad782 26 }
TauZoolog 3:25cd717ad782 27
TauZoolog 3:25cd717ad782 28 //////////////////////////////////////////////////////
TauZoolog 3:25cd717ad782 29 // Apply Filter to input //
TauZoolog 3:25cd717ad782 30 //////////////////////////////////////////////////////
TauZoolog 3:25cd717ad782 31 if (use_filter_with_predefined_output) {
TauZoolog 3:25cd717ad782 32 LLastInput[0] = LastInput[0];
TauZoolog 3:25cd717ad782 33 LastInput[0] = CurrInput[0];
TauZoolog 3:25cd717ad782 34 CurrInput[0] = ADCFloat;
TauZoolog 3:25cd717ad782 35 for (i=1; i <= NumSectionsHP; i++) {
TauZoolog 3:25cd717ad782 36 LLastInput[i] = LastInput[i];
TauZoolog 3:25cd717ad782 37 LastInput[i] = CurrInput[i];
TauZoolog 3:25cd717ad782 38 CurrInput[i] = SOSMatHP[i-1][0]*CurrInput[i-1] + SOSMatHP[i-1][1]*LastInput[i-1] +
TauZoolog 3:25cd717ad782 39 SOSMatHP[i-1][2]*LLastInput[i-1] -
TauZoolog 3:25cd717ad782 40 SOSMatHP[i-1][4]*LastInput[i] - SOSMatHP[i-1][5]*LLastInput[i];
TauZoolog 3:25cd717ad782 41 ADCFloatFiltered = CurrInput[i];
TauZoolog 3:25cd717ad782 42 }
TauZoolog 3:25cd717ad782 43
TauZoolog 3:25cd717ad782 44 ADCFloatFiltered = ADCFloatFiltered * GscaleHP;
TauZoolog 3:25cd717ad782 45 } else {
TauZoolog 3:25cd717ad782 46 ADCFloatFiltered = ADCFloat;
TauZoolog 3:25cd717ad782 47 }
TauZoolog 3:25cd717ad782 48
TauZoolog 3:25cd717ad782 49 if((ADCValueMax - ADCValueMin) > signal_low_threshold) {
Arkadi 9:6d4136d9c074 50 startPredefinedOutput = 1;
TauZoolog 3:25cd717ad782 51 }
TauZoolog 3:25cd717ad782 52
TauZoolog 3:25cd717ad782 53 if (startPredefinedOutput == 0 ) {
TauZoolog 3:25cd717ad782 54 *(__IO uint32_t *) Dac_Reg = (uint16_t)Float2ADC;
TauZoolog 3:25cd717ad782 55
TauZoolog 3:25cd717ad782 56 } else {
TauZoolog 3:25cd717ad782 57 // Predefined Output
TauZoolog 3:25cd717ad782 58 // printf("ADCValueMin = %d; ADCValueMax = %d; ADCValueDelta = %d\n", ADCValueMin, ADCValueMax, ADCValueMax - ADCValueMin);
TauZoolog 3:25cd717ad782 59
TauZoolog 3:25cd717ad782 60 //printf("play predefined sound\n");
TauZoolog 3:25cd717ad782 61 for (i=0; i < AMOUNT_OF_SIGNIFICANT_SAMPLES; i++ ) {
TauZoolog 3:25cd717ad782 62 // toggle pin PA_6 -- D12, Loop frequency indicator
TauZoolog 3:25cd717ad782 63 mytoggle = ! mytoggle;
TauZoolog 3:25cd717ad782 64 //OutputADCFloat = scaled_sounddata[i];
TauZoolog 3:25cd717ad782 65 //OutputADCFloat = (sounddata[i] * scale_for_predefined_output);
TauZoolog 3:25cd717ad782 66 // ADCValueOut=(uint16_t)(((sounddata[i] * scale_for_predefined_output) + 1.0f) * Float2ADC);
TauZoolog 3:25cd717ad782 67 ADCValueOut=(uint16_t)((scaled_sounddata[i] + 1.0f) * Float2ADC);
TauZoolog 3:25cd717ad782 68 // Output value using DAC
TauZoolog 3:25cd717ad782 69 // HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_1, DAC_ALIGN_12B_R, ADCValueOut);
TauZoolog 3:25cd717ad782 70 *(__IO uint32_t *) Dac_Reg = ADCValueOut;
TauZoolog 3:25cd717ad782 71
TauZoolog 3:25cd717ad782 72 // Delay processor to achieve SAMPLING_FREQUENCY (500KHz)
TauZoolog 3:25cd717ad782 73 wait_us(sampling_frequency_delay); // delay in microseconds
TauZoolog 3:25cd717ad782 74 NOP();
TauZoolog 3:25cd717ad782 75 NOP();
TauZoolog 3:25cd717ad782 76 NOP();
TauZoolog 3:25cd717ad782 77 NOP();
TauZoolog 3:25cd717ad782 78 NOP();
TauZoolog 3:25cd717ad782 79 NOP();
TauZoolog 3:25cd717ad782 80 NOP();
TauZoolog 3:25cd717ad782 81 NOP();
TauZoolog 3:25cd717ad782 82 #if 1
TauZoolog 3:25cd717ad782 83 NumCycles++;
TauZoolog 3:25cd717ad782 84 if((NUM_CYCLES_TO_CHECK_KEYBOARD_INPUT > 0) && (NumCycles % NUM_CYCLES_TO_CHECK_KEYBOARD_INPUT == 0)) {
TauZoolog 3:25cd717ad782 85 // printf("Check keyboard input. Cycle: %d\n", NumCycles);
TauZoolog 3:25cd717ad782 86 UserButtonPressed = checkKeyboardInput();
TauZoolog 3:25cd717ad782 87 }
TauZoolog 3:25cd717ad782 88 #endif
TauZoolog 3:25cd717ad782 89 }
TauZoolog 3:25cd717ad782 90 wait_us(delay_after_signal_transmission);
Arkadi 9:6d4136d9c074 91 //num_back_to_normal = NUM_OF_CYCLES_BACK_TO_NORMAL;
TauZoolog 3:25cd717ad782 92 startPredefinedOutput = 0;
TauZoolog 3:25cd717ad782 93 ADCValueMax = 0;
TauZoolog 3:25cd717ad782 94 ADCValueMin = 0xfff;
TauZoolog 3:25cd717ad782 95 }
TauZoolog 3:25cd717ad782 96
TauZoolog 3:25cd717ad782 97 }
TauZoolog 3:25cd717ad782 98
TauZoolog 3:25cd717ad782 99 inline void test_output()
TauZoolog 3:25cd717ad782 100 {
TauZoolog 3:25cd717ad782 101 int i;
TauZoolog 3:25cd717ad782 102
TauZoolog 3:25cd717ad782 103 for (i=0; i < AMOUNT_OF_SIGNIFICANT_SAMPLES; i++ ) {
TauZoolog 3:25cd717ad782 104 // toggle pin PA_6 -- D12, Loop frequency indicator
TauZoolog 3:25cd717ad782 105 mytoggle = ! mytoggle;
TauZoolog 3:25cd717ad782 106 //OutputADCFloat = scaled_sounddata[i];
TauZoolog 3:25cd717ad782 107 OutputADCFloat = sounddata[i] * scale_for_predefined_output;
TauZoolog 3:25cd717ad782 108 ADCValueOut=(uint16_t)((OutputADCFloat + 1.0f) * Float2ADC);
TauZoolog 3:25cd717ad782 109 // Output value using DAC
TauZoolog 3:25cd717ad782 110 // HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_1, DAC_ALIGN_12B_R, ADCValueOut);
TauZoolog 3:25cd717ad782 111 *(__IO uint32_t *) Dac_Reg = ADCValueOut;
TauZoolog 3:25cd717ad782 112
TauZoolog 3:25cd717ad782 113 // Delay processor to achieve SAMPLING_FREQUENCY (500KHz)
TauZoolog 3:25cd717ad782 114 wait_us(sampling_frequency_delay); // delay in microseconds
TauZoolog 3:25cd717ad782 115 // NOP();
TauZoolog 3:25cd717ad782 116 // NOP();
TauZoolog 3:25cd717ad782 117 // NOP();
TauZoolog 3:25cd717ad782 118 // NOP();
TauZoolog 3:25cd717ad782 119 // NOP();
TauZoolog 3:25cd717ad782 120 // NOP();
TauZoolog 3:25cd717ad782 121 // NOP();
TauZoolog 3:25cd717ad782 122 // NOP();
TauZoolog 3:25cd717ad782 123 #if 1
TauZoolog 3:25cd717ad782 124 NumCycles++;
TauZoolog 3:25cd717ad782 125 if((NUM_CYCLES_TO_CHECK_KEYBOARD_INPUT > 0) && (NumCycles % NUM_CYCLES_TO_CHECK_KEYBOARD_INPUT == 0)) {
TauZoolog 3:25cd717ad782 126 // printf("Check keyboard input. Cycle: %d\n", NumCycles);
TauZoolog 3:25cd717ad782 127 UserButtonPressed = checkKeyboardInput();
TauZoolog 3:25cd717ad782 128 }
TauZoolog 3:25cd717ad782 129 #endif
TauZoolog 3:25cd717ad782 130 }
TauZoolog 3:25cd717ad782 131 wait_us(delay_after_signal_transmission);
TauZoolog 3:25cd717ad782 132 }
TauZoolog 3:25cd717ad782 133