#include "msp_adc.h" #include "debug_drv.h" TS_task_adc_ ts_task_adc; void L0_ADC_init (void) { ADCCFG = 0x20; ADC_CONTR = 0x81; //??ADC??ADC1 } U16 L1_ADC_Read_PT (u8 CHA) { U16 adc_data; ADC_CONTR &=0xF8; ADC_CONTR |=0x40;//??AD?? //ADC_CONTR |= CHA; CHA &= 0x07; //??ADC?8???????(0000 0111 ?0?5?) ADC_CONTR = (ADC_CONTR & 0xF0) | CHA; NOP(); NOP(); while (!(ADC_CONTR & 0x20)); //??ADC???? ADC_CONTR &= ~0x20; //??? adc_data = ADC_RES; //adc_data <<= 8; //adc_data |= ADC_RESL; //adc_data = adc_data<<2; //adc_data = ADC_RESL & 0X03; //adc_data = adc_data | adc_data; // L0_uartN_ushex(adc_data); //L0_uartN_0d0a(); /// L1_uartD_senduc('*'); return (adc_data); } #define D_ADC_SCH1 2 #define D_ADC_SCH2 3 ////右列U3 adc2---pin12 adc3 p1.3 //adc数据初始化 void l2_task_adc_init() { L1_task_init(&ts_task_adc.task); L3_task_s_go(ts_task_adc, D_task_init); } //adc采集 void L3_task_adc_handle(TS_task_adc_ *s) { TTSS_Task_init(): printf("\r\n adc1"); s->change = 0; s->fn = 0; s->chok1 = 0;s->sum1 = 0;s->avrage1 = 0;s->ch_now = 0; L2_task_go(D_TASK_adc_read); TTSS_Task_step(D_TASK_adc_read): //adc判断读取 if(1 == s->change) { s->change = 0; s->fn = 0; L2_task_go(D_TASK_adc_change_ch); }else { } TTSS_Task_step(D_TASK_adc_change_ch): //adc判断读取 if(0 == s->ch_now) { s->val = L1_ADC_Read_PT(D_ADC_SCH1); } else { s->val = L1_ADC_Read_PT(D_ADC_SCH2); } printf(" %d:%d-%d ",(int)s->ch_now,(int)s->fn,(int)s->val); s->sum1 += s->val; s->sum1 -= s->avrage1; s->avrage1 = s->sum1 >> 3; if(s->fn >= 12) { s->chok1 = 1; L2_task_go(D_TASK_adc_read); }else { s->fn ++; ///L2_task_Cdelay_go(10000,D_TASK_adc_change_ch);////100000--2s L2_task_Cdelay_go(100,D_TASK_adc_change_ch);////100000--2s } TTSS_Task_end(); } #if 0 ///D_cmd_filter_adc L3_ADC_debug(D_cmd_filter_adc) void L3_ADC_debug(u8 filter) { if(filter == Ts_debug.td->filter) {///filter num d1 d2 d3 ....dn //// FD 08 11 22 33 44 55 66 77 88 L1_uartD_uchexArray(Ts_debug.td,Ts_debug.td->R1); if(0x10 == Ts_debug.td->ocr)///read 读 { //NUM: 0 1 2 3 4 // Fx R1 R2 R3 ocr // sla reg1 num /// f1 32 15 06 10 printf("\r\n ch(%d)=",(int)Ts_debug.td->R1); Ts_debug.au16 = L1_ADC_Read_PT(Ts_debug.td->R1); printf(" %XH %d ",(int)Ts_debug.au16,(int)Ts_debug.au16); } else if(0x11 == Ts_debug.td->ocr) { } else if(0x12 == Ts_debug.td->ocr) { } else { } } } #endif