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
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
|
|
|
|
|
|
|