You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

135 lines
2.6 KiB

#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