#include #include unsigned long int w_repeat = 0; //Aktuelle Halbwelle unsigned long int w_repeat_stop = 0; //Maximale Anzahl von Halbwellen unsigned int w_MaxSPG = 0; //Maximale Spannung im aktuellen Sweep unsigned int w_ResCOUNT = 0; //Zählerstand bei maximaler Spannung im aktuellen Sweep float f_ResFRQ = 0; //Resonanzfrequenz im aktuellen Sweep int w_SetCCR = 0; //Variable zum Setzen der Capture/Compare Register von Timer B unsigned long int w_Periode = 1; //Anzahl Perioden gleicher Frequenz unsigned long int w_PeriodCOUNT = 0; unsigned long int w_StartFRQ; //Startfrequenz in kHz unsigned long int w_StopFRQ; //Stopfrequenz in kHz unsigned long int w_StartCOUNT; //Zählerstand bei Startfrequenz unsigned long int w_StopCOUNT; //Zählerstand bei Stopfrequenz int w_free_covered = 0; //free = 0, covered = 1 int w_AirFRQ = 24242; //Sensor frequency air int w_SwitchFREE = 0; // Switch frequency coverde -> free int w_SwitchCOVERED = 0; // Switch frequency free -> covered long int i = 0; int i2 = 0; int h = 0; int b; long int j = 0; long int w = 200; //DAC-Werte long int a[200]; int r[6]; //***********************Initialization**************************************************************************** void start() { _EINT(); a[1] = 2047; a[2] = 2112; a[3] = 2177; a[4] = 2241; a[5] = 2305; a[6] = 2368; a[7] = 2432; a[8] = 2495; a[9] = 2557; a[10] = 2619; a[11] = 2681; a[12] = 2742; a[13] = 2802; a[14] = 2861; a[15] = 2920; a[16] = 2978; a[17] = 3035; a[18] = 3091; a[19] = 3145; a[20] = 3199; a[21] = 3253; a[22] = 3303; a[23] = 3353; a[24] = 3402; a[25] = 3450; a[26] = 3496; a[27] = 3541; a[28] = 3584; a[29] = 3626; a[30] = 3666; a[31] = 3705; a[32] = 3742; a[33] = 3777; a[34] = 3811; a[35] = 3843; a[36] = 3873; a[37] = 3901; a[38] = 3928; a[39] = 3952; a[40] = 3975; a[41] = 3996; a[42] = 4015; a[43] = 4032; a[44] = 4047; a[45] = 4060; a[46] = 4071; a[47] = 4080; a[48] = 4087; a[49] = 4092; a[50] = 4095; a[51] = 4095; a[52] = 4092; a[53] = 4087; a[54] = 4080; a[55] = 4071; a[56] = 4060; a[57] = 4047; a[58] = 4032; a[59] = 4015; a[60] = 3996; a[61] = 3975; a[62] = 3952; a[63] = 3928; a[64] = 3901; a[65] = 3873; a[66] = 3843; a[67] = 3811; a[68] = 3777; a[69] = 3742; a[70] = 3705; a[71] = 3666; a[72] = 3626; a[73] = 3584; a[74] = 3541; a[75] = 3496; a[76] = 3450; a[77] = 3402; a[78] = 3353; a[79] = 3303; a[80] = 3253; a[81] = 3199; a[82] = 3145; a[83] = 3091; a[84] = 3035; a[85] = 2978; a[86] = 2920; a[87] = 2861; a[88] = 2802; a[89] = 2742; a[90] = 2681; a[91] = 2619; a[92] = 2557; a[93] = 2495; a[94] = 2432; a[95] = 2368; a[96] = 2305; a[97] = 2241; a[98] = 2177; a[99] = 2112; a[100] = 2048; a[101] = 1984; a[102] = 1919; a[103] = 1855; a[104] = 1791; a[105] = 1728; a[106] = 1664; a[107] = 1601; a[108] = 1539; a[109] = 1477; a[110] = 1415; a[111] = 1354; a[112] = 1294; a[113] = 1235; a[114] = 1176; a[115] = 1118; a[116] = 1061; a[117] = 1005; a[118] = 951; a[119] = 897; a[120] = 844; a[121] = 793; a[122] = 743; a[123] = 694; a[124] = 656; a[125] = 600; a[126] = 555; a[127] = 512; a[128] = 470; a[129] = 430; a[130] = 391; a[131] = 354; a[132] = 318; a[133] = 285; a[134] = 253; a[135] = 223; a[136] = 195; a[137] = 168; a[138] = 143; a[139] = 121; a[140] = 100; a[141] = 81; a[142] = 64; a[143] = 49; a[144] = 36; a[145] = 25; a[146] = 16; a[147] = 9; a[148] = 4; a[149] = 1; a[150] = 1; a[151] = 4; a[152] = 9; a[153] = 16; a[154] = 25; a[155] = 36; a[156] = 49; a[157] = 64; a[158] = 81; a[159] = 100; a[160] = 121; a[161] = 143; a[162] = 168; a[163] = 195; a[164] = 223; a[165] = 253; a[166] = 285; a[167] = 318; a[168] = 354; a[169] = 391; a[170] = 430; a[171] = 470; a[172] = 512; a[173] = 655; a[174] = 600; a[175] = 656; a[176] = 694; a[177] = 743; a[178] = 793; a[179] = 844; a[180] = 897; a[181] = 951; a[182] = 1005; a[183] = 1061; a[184] = 1118; a[185] = 1176; a[186] = 1235; a[187] = 1294; a[188] = 1354; a[189] = 1415; a[190] = 1477; a[191] = 1539; a[192] = 1601; a[193] = 1664; a[194] = 1728; a[195] = 1791; a[196] = 1855; a[197] = 1919; a[198] = 1984; a[199] = 2044; a[200] = 2047; //***********************Basic Clock Modul Setting***************************************************************** DCOCTL = DCO0 + DCO1 + DCO2 ; BCSCTL1 = RSEL0 + RSEL1 + RSEL2 + RSEL3 + XT2OFF + XTS + DIVA_0; BCSCTL2 = DIVM_0 + DIVS_0 + +SELS + SELM_2; BCSCTL3 = LFXT1S_2 + XCAP_3 + XT2S_2; //***********************Port 1 Initialization********************************************************************* P1OUT = 0x00; P1DIR = 0x0f; //Enable Port1.0 - Port1.3 as output, Port1.4 - Port1.7 as input P1IES = 0x00; P1SEL = 0x00; //***********************Port 2 Initialization********************************************************************* P2OUT = 0x00; P2DIR = 0x0f; //Enable Port2.0 - Port2.3 as output, Port2.4 - Port2.7 as input P2IES = 0x00; P2SEL = 0x00; //***********************Port 3 Initialization********************************************************************* P3OUT = 0x00; P3DIR = 0xff; //Enable Port3 as output P3SEL = 0x00; //***********************Port 5 Initialization********************************************************************* P5OUT = 0x00; P5DIR = 0xff; //Enable Port3 as output P5SEL = 0x70; //***********************Port 6 Initialization********************************************************************* P6DIR = 0xf0; //Enable Port6.0 - Port6.3 as input, Port2.4 - Port2.7 as output P6SEL = 0xff; //***********************Watchdog Timer Initialization************************************************************* WDTCTL = WDTPW + WDTHOLD; //Stop Watchdog Timer // IE1 |= WDTIE; // Watchdog Interrupt Enable //***********************Timer A*********************************************************************************** /*TACTL = TASSEL_1 + MC_1 + TAIE; TACCR0 = 500;*/ //***********************Timer B*********************************************************************************** w_repeat_stop=2*w_Periode; w_StartCOUNT = 16000; w_StopCOUNT = 6333; w_PeriodCOUNT = w_StartCOUNT; TBCTL = TBCLGRP_0 + CNTL_0 + TBSSEL_2 + ID_0 + MC_1 + TBIE + TBIFG; TBCCTL0 = SCS + CCIE + CLLD_0; TBCCTL1 = SCS + CCIE + CLLD_0; TBCCR0 = w_PeriodCOUNT; TBCCR1 = w_PeriodCOUNT/w; //***********************DAC12************************************************************************************* DAC12_0CTL = DAC12SREF_0 + DAC12LSEL_0 + DAC12AMP_7 + DAC12IR; DAC12_1CTL = DAC12SREF_0 + DAC12LSEL_0 + DAC12AMP_7 + DAC12IR; //***********************ADC12************************************************************************************* ADC12CTL0 = SHT1_1 + SHT0_1 + REF2_5V + REFON + ADC12ON ; //2,5V Reference on, ADC12 ON ADC12CTL1 = CSTARTADD_0 + SHS_0 + ADC12DIV_1 + ADC12SSEL_2 + SHP; ADC12MCTL0 = EOS + SREF_0 + INCH_0; ADC12IE = 0x0001; } //***********************MAIN************************************************************************************** void main() { start(); while(1) { if(w_SetCCR != 0) { TBCCR0 = w_PeriodCOUNT; TBCCR1 = w_PeriodCOUNT/w; w_SetCCR = 0; } else; } } #pragma vector=TIMERB0_VECTOR __interrupt void Timer_B0_INTERRUPT (void) { j++; if (j % 2 == 0) { P3OUT ^= 0x01; w_PeriodCOUNT = w_PeriodCOUNT - 2; w_SetCCR = 1; } if (w_PeriodCOUNT <= w_StopCOUNT) { w_PeriodCOUNT = w_StartCOUNT; } } #pragma vector=TIMERB1_VECTOR __interrupt void Timer_B1_INTERRUPT (void) { i2++; if(TBIV == 0x02) { i++; if(i == 1) { P1OUT ^= 0x02; DAC12_0DAT = a[i]; TBCCR1 = i*w_PeriodCOUNT/w; } if(i == 51) { P1OUT ^= 0x01; DAC12_0DAT = a[i]; TBCCR1 = i*w_PeriodCOUNT/w; } if(i == 101) { P1OUT ^= 0x02; DAC12_0DAT = a[i]; TBCCR1 = i*w_PeriodCOUNT/w; } if(i == 151) { P1OUT ^= 0x01; DAC12_0DAT = a[i]; TBCCR1 = i*w_PeriodCOUNT/w; } if(i == 200) { DAC12_0DAT = a[i]; TBCCR1 = i*w_PeriodCOUNT/w; i = 0; } else { DAC12_0DAT = a[i]; TBCCR1 = i*w_PeriodCOUNT/w; } } } //***********************END***************************************************************************************