- UID
- 803021
|
所用单片机为HCS12DP512,采集6路转速,但发现只能采集2路,而且数据不稳定,漂的厉害。程序如下:初始化:
void ECT_init(void){
TSCR1=0x90;
TSCR2_PR=0x04;
ICSYS = 0x0A;
TIOS = 0x00;
TCTL3=0x51;
TCTL4=0x54;
ICOVW = 0xF0;
TFLG1 = 0xFF;
DLYCT=0x02;
TIE_C1I=1;
TIE_C2I=1;
TIE_C3I=1;
TIE_C4I=1;
TIE_C6I=1;
TIE_C7I=1;
中断处理如下:
void interrupt 15 ECT7_Rx(void){
TFLG1_C7F = 1;
TC7;
if(TC7>IC_TEMP7) {
IC_Period7 = TC7 - IC_TEMP7;
}
else {
IC_Period7=0xFFFF-IC_TEMP7+TC7;
}
IC_TEMP7=TC7;
}
void interrupt 14 ECT6_Rx(void){
TC6;
if(TC6>IC_TEMP6) {
IC_Period6 = TC6 - IC_TEMP6;
}
else{
IC_Period6=0xFFFF-IC_TEMP6+TC6;
}
IC_TEMP6=TC6;
}
void interrupt 9 ECT1_RX(void){
TFLG1_C1F = 1;
first1=TC1H;
second1=TC1;
if(second1>first1){
IC_Period1=second1-first1;
}
else{
IC_Period1=0xFFFF+second1-first1;
}
}
void interrupt 10 ECT2_RX(void){
TFLG1_C2F = 1;
first2=TC2H;
second2=TC2;
if(second2>first2){
IC_Period2=second2-first2;
}
else{
IC_Period2=0xFFFF-first2+second2;
}
}
void interrupt 11 ECT3_RX(void){
first3=TC3H;
second3=TC3;
if(second3>first3){
IC_Period3=second3-first3;
}
else{
IC_Period3=0xFFFF-first3+second3;
}
}
void interrupt 12 ECT4_Rx(void){
TC4;
if(TC4>IC_TEMP4){
IC_Period4 = TC4 - IC_TEMP4;
}
else{
IC_Period4=0xFFFF-IC_TEMP4+TC4;
}
IC_TEMP4=TC4;
}
请达人帮忙,谢谢。 |
|