首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

请帮忙检查AD采集以及频率采集程序有无错误[求助]

请帮忙检查AD采集以及频率采集程序有无错误[求助]

请帮我检查一下我编写的AD采样滤波程序,以及利用输入捕捉功能编写的频率采集程序有无错误。我用信号发生器输出100赫兹的频率,可单片机检测不到。非常感谢!
一AD采集程序
AD:         LDY        #$2000
                 LDX        #$06
                 LDAB        #%10000000        ;LEVEL MODE,ACTIVE HIGH(10000000)
                 STAB        $82                ;ATDCTL2
                 LDAB        #%00101000        ;FIVE CONVERTS IN ONE SQUENCE
                 STAB        $83                ;ATDCTL3
        SAMPLE:         LDAB        #%11000101        ;8-BIT ACUURACY,FREQUENCE 6—24MHZ,SAMPLE PERIOD 8个,MAXIMAM FRE 2MHZ,MIN500KHZ
                 STAB   $84                ;ATDCTL4
                 LDAB        #%00110000        ;LEFT ALIGNED,UNSIGNED,MULTI CHANNEL CONTIOUS
                 STAB        $85                ;ATDCTL5
                 LDAA   #$00            ;CLEAR CONVERT COMPLETE FLAG (something maybe wrong)
                 STAA        $86                ;ATDSTAT
                 BRCLR        $86,#$80,*        ;IF CONVERT IS NOT COMPLETE THEN WAIT
                 CLRA
                 LDAB        $90                ;CHANNEL0 TORQUE1 WAS PUT IN RESULT REGISTER(ATDDR0H)
                 STD        0,Y                ;$2000
                 LDAB        $92                ;CHANNEL1 TORQUE2 WAS PUT IN RESULT REGISTER(ATDDR1H)
                 STD        16,Y                ;$2010
                 LDAB        $94                ;CHANNEL2 MOTOR CURRENT1 WAS PUT IN RESULT REGISTER(ATDDR2H)
                 STD        32,Y                ;$2020
                 LDAB        $96                ;CHANNEL3 MOTOR CURRENT2 WAS PUT IN RESULT REGISTER(ATDDR3H)
                 STD        48,Y                ;$2030
                 LDAB        $98                ;CHANNEL4 H-BRIDGE CURRENT WAS PUT IN RESULT REGISTER(ATDDR4H)
                 STD        64,Y                ;$2040
                     INY                        ;Y POINT TO NEXT EVEN ADDRESS
                 INY                        ;
                 DEX
                      BNE        SAMPLE                ;IF NOT EQUAL ZERO THEN JUMP TO SAMPLE
                 LDX        #$05                ;COUNT TIME IS 5
                 LDY    #$2000                OINT TO TORQUE1
                 LDD        0,Y                ;
        T1MAX:         INY                        ;
                 INY                        ;
                 EMAXD        Y                ;
                 DEX                        ;
                 BNE        T1MAX                ;
                 STD        $200C                ;STORE MAXMIUM OF TORQUE1 TO $200C
                 LDX        #$05                ;
                 LDY        #$2000                ;
                 LDD        0,Y                ;
        T1MIN:         INY                        ;
                 INY                        ;
                 EMIND        Y                ;
                 DEX                        ;
                 BNE        T1MIN                ;MINIMUM OF TORQUE1
                 ADDD        $200C                ;
                 STD        $200E                ;STORE SUM OF MIN AND MAX TO $200E
                 LDX        #$05                ;
                 LDY        #$2000                ;
                 LDD        0,Y                ;
        T1TL:         INY                        ;
                 INY                        ;
                 ADDD        0,Y                ;
                 DEX                        ;
                 BNE        T1TL                ;TORQUE1 TOTAL
                 SUBD        $200E                ;SUM OF FOUR TORQUE
                 LSRD                        ;DIVIDE BY 2
                 LSRD                        ;DIVIDE BY 2
                 STD        $2050                ;RESULT OF TORQUE1
                 LDX        #$05                ;
                 LDY    #$2010                ;
                 LDD        0,Y                ;
        T2MAX:         INY                        ;
                 INY                        ;
                 EMAXD        Y                ;
                 DEX                        ;
                 BNE        T2MAX                ;
                 STD        $201C                ;STORE MAXMIUM OF TORQUE2 TO $201C
                 LDX        #$05                ;
                 LDY        #$2010                ;
                 LDD        0,Y                ;
        T2MIN:         INY                        ;
                 INY                        ;
                 EMIND        Y                ;
                 DEX                        ;
                 BNE        T2MIN                ;MINIMUM OF TORQUE2
                 ADDD        $201C                ;
                 STD        $201E                ;STORE SUM OF MIN AND MAX TO $201E
                 LDX        #$05                ;
                 LDY        #$2010                ;
                 LDD        0,Y                ;
        T2TL:         INY                        ;
                 INY                        ;
                 ADDD        0,Y                ;
                 DEX                        ;
                 BNE        T2TL                ;TORQUE2 TOTAL
                 SUBD        $201E                ;SUM OF FOUR TORQUE
                 LSRD                        ;DIVIDE BY 2
                 LSRD                        ;DIVIDE BY 2
                 STD        $2052                ;RESULT OF TORQUE2
                 LDX        #$05                ;
                 LDY    #$2020                ;
                 LDD        0,Y                ;
        C1MAX:         INY                        ;
                 INY                        ;
                 EMAXD        Y                ;
                 DEX                        ;
                 BNE        C1MAX                ;
                 STD        $202C                ;STORE MAXMIUM OF MOTOR CURRENT1 TO $202C
                 LDX        #$05                ;
                 LDY        #$2020                ;
                 LDD        0,Y                ;
        C1MIN:         INY                        ;
                 INY                        ;
                 EMIND        Y                ;
                 DEX                        ;
                 BNE        C1MIN                ;MINIMUM OF MOTOR CURRENT1
                 ADDD        $202C                ;
                 STD        $202E                ;STORE SUM OF MIN AND MAX TO $202E
                 LDX        #$05                ;
                 LDY        #$2020                ;
                 LDD        0,Y                ;
        C1TL:         INY                        ;
                 INY                        ;
                 ADDD        0,Y                ;
                 DEX                        ;
                 BNE        C1TL                ;MOTOR CURRENT1 TOTAL
                 SUBD        $202E                ;SUM OF FOUR CURRENT
                 LSRD                        ;DIVIDE BY 2
                 LSRD                        ;DIVIDE BY 2
                 STD        $2054                ;RESULT OF MOTOR CURENT1
                 LDX        #$05                ;
                 LDY    #$2030                ;
                 LDD        0,Y                ;
        C2MAX:         INY                        ;
                 INY                        ;
                 EMAXD        Y                ;
                 DEX                        ;
                 BNE        C2MAX                ;
                 STD        $203C                ;STORE MAXMIUM OF MOTOR CURRENT2 TO $203C
                 LDX        #$05                ;
                 LDY        #$2030                ;
                 LDD        0,Y                ;
        C2MIN:         INY                        ;
                 INY                        ;
                 EMIND        Y                ;
                 DEX                        ;
                 BNE        C2MIN                ;MINIMUM OF MOTOR CURRENT2
                 ADDD        $203C                ;
                 STD        $203E                ;STORE SUM OF MIN AND MAX TO $203E
                 LDX        #$05                ;
                 LDY        #$2030                ;
                 LDD        0,Y                ;
        C2TL:         INY                        ;
                 INY                        ;
                 ADDD        0,Y                ;
                 DEX                        ;
                 BNE        C2TL                ;MOTOR CURRENT TOTAL
                 SUBD        $203E                ;SUM OF FOUR TORQUE
                 LSRD                        ;DIVIDE BY 2
                 LSRD                        ;DIVIDE BY 2
                 STD        $2056                ;RESULT OF MOTOR CURRNT2
                 LDX        #$05                ;
                 LDY    #$2040                ;
                 LDD        0,Y                ;
        HCMAX:         INY                        ;
                 INY                        ;
                 EMAXD        Y                ;
                 DEX                        ;
                 BNE        HCMAX                ;
                 STD        $204C                ;STORE MAXMIUM OF H-BRIDGE CURRENT TO $204C
                 LDX        #$05                ;
                 LDY        #$2040                ;
                 LDD        0,Y                ;
        HCMIN:         INY                        ;
                 INY                        ;
                 EMIND        Y                ;
                 DEX                        ;
                 BNE        HCMIN                ;MINIMUM OF H-BRIDGE CURRENT
                 ADDD        $204C                ;
                 STD        $204E                ;STORE SUM OF MIN AND MAX TO $204E
                 LDX        #$05                ;
                 LDY        #$2040                ;
                 LDD        0,Y                ;
        HCTL:         INY                        ;
                 INY                        ;
                 ADDD        0,Y                ;
                 DEX                        ;
                 BNE        HCTL                ;H-BRIDGE CURRENT TOTAL
                 SUBD        $204E                ;SUM OF FOUR TORQUE
                 LSRD                        ;DIVIDE BY 2
                 LSRD                        ;DIVIDE BY 2
                 STD        $2058                ;RESULT OF H-BRIDGE CURRNT       
二频率采集程序
LDAA        #%00000000        ;DEFINE CHANNEL1 AS INPUT CAPTURE
                 STAA   $40                ;TIOS
                 STAA        $52                ;TC1
                 LDAA        #%10000000        ;COUNTER START
                 STAA   $46                ;TSCR1
                 LDAA        #%00001000        ;CAPTURE EDGE SELECT
                 STAA        $4B                ;TCTL4
                 LDAA        #%00000111        ;CAPTURE FREQUENCE SELECT
                 STAA        $4D                ;TSCR2
                 LDAA   #$2                ;CLEAR FLAG
                 STAA        $4E                ;TFLG1
                 BRCLR  $4E,#$2,*        ;WAIT UNTIL EQUAL
                 CLRA
                 CLRB
                 LDD        $52                ;TC1
                 STD        $2060                ;STORE FIRST NUMBER
                 LDAA        #$2                ;FLAG CLEAR
                 STAA        $4E                ;TFLG1
                 BRCLR        $4E,#$2,*        ;WAIT UNTIL EQUAL
                 LDD        $52                ;TC1
                 SUBD        $2060                ;SECOND NUMBER SUBSTRACT FIRST NUMBER
                 STD        $2062                ERIOD NUMBER
                 XGDX                        ERIOD NUMBER IS DIVISOR
                 LDY        #$02                ;187617 IS DIVIDEND
                 LDD        #$DCE1                ;
                 EDIV                        ;
                 STY        $2064                ;(FREQUENCY)
建议您最好先检查ADC转换有没有问题,然后才做信号采样.
不是很明白你想怎么用输入捕捉功能做频率采样工作. 输入的100HZ是什么波形?
請说详细点.
首先我不是很明白你的程序,汗~但你的信号是方波吗?输入捕捉只能用于上升下降沿。我想你的AD转换应该是正确的吧,只是频率识别不了,对吗?如果你的信号是正弦波之类的,那频率可不能这样计算!!
要想让别人弄明白,把条件和结果写清楚吧。
学后而问
我所说的信号当然是100赫兹的方波,用的是捕捉下降沿。我觉得你所说的AD的频率可能有问题也是我所想的。因为我是用+5伏的电源来代替AD输入信号,这样单片机捕捉到的数据应该是#$FD,可结果却相差很大。谢谢你的指点。
我所说的信号当然是100赫兹的方波,用的是捕捉下降沿。我觉得你所说的AD的频率可能有问题也是我所想的。因为我是用+5伏的电源来代替AD输入信号,这样单片机捕捉到的数据应该是#$FD,可结果却相差很大。谢谢你的指点。另外,你能告诉我如果是正弦波的话,应该怎样计算。或者说要看哪些书就能学到。非常感谢!
还有,因为我要测的频率为0到200赫兹,而通过AD转换来实现这么低频采样,硬件电路很难实现。
你说的是两件事情吧。一路在做AD转换,用的是+5V电源输入,结果是数据不是0xFDH;另一路是在做频率捕捉,用的是信号发生器100Hz方波,结果是捕捉不到。
我想1、如果是+5V电源(恒定值),那么你要检查你的硬件连接了,AD的参考电平接好没有。还有AD转换有些条件的,如连续转换、对应的引脚选择、分频1MHz左右等。
2、问题就是最基本的了。寄存器设置、中断函数的号,还有最基本的对应的定时器要不停的计数,根据计数值来计算频率。只要计数停止,那么也就不捕捉了!!我以前也犯过如此错误!
学后而问
8808beter,你好,能不能把你的电话号码或者邮箱告诉我吗?
由于你以前做过这方面的东东,所以我想向你专门请教一下,谢谢!

感激涕淋!!!
给你留言了,EMAIL我吧。
学后而问
我觉得我的寄存器设置应该没问题,不过你所说的计数器要不断的计数,这是通过设置什么来实现的?我用ECT编写输出比较的程序就一点问题没有,可输入捕捉就不行。   
1。频率采样                              
                                  LDAA        #%00000000        ;系统默认输入,我选择通道1为输入捕捉通道
                 STAA   $40                ;TIOS寄存器
                 STAA        $52                ;将通道1计数器清零
                 LDAA        #%10000000        ;计数器开始工作
                 STAA   $46                ;TSCR1
                 LDAA        #%00001000        ;通道1捕捉下降沿
                 STAA        $4B                ;TCTL4
                 LDAA        #%00000111        ;ECT频率设置为E/128(E=24MHZ)
                 STAA        $4D                ;TSCR2
                 LDAA   #$2                ;通道1标志位清零
                 STAA        $4E                ;TFLG1
                 BRCLR  $4E,#$2,*        ;等待下降沿.
                 CLRA
                 CLRB
                 LDD        $52                ;将通道1计数器值送入$2060单元
                 STD        $2060                ;
                 LDAA        #$2                ;通道1标志位清零
                 STAA        $4E                ;TFLG1
                 BRCLR        $4E,#$2,*        ;等待第二次下降沿
                 LDD        $52                ;读取通道1计数器第二次
                 SUBD        $2060                ;将第二次值减去第一次值,结果放入$2062单元(周期数)
                 STD        $2062                ;
                 XGDX                        ;把周期数(除数)放入X寄存器
                 LDY        #$02                ;187617是被除数
                 LDD        #$DCE1                ;
                 EDIV                        ;
                 STY        $205A                ;频率值
2 AD转换的硬件连接肯定没问题,因为我用的是清华大学MC9S12DG128的最小系统,上面AD的参考电平都已经设置好。不过你所说的把AD转换分频为1MHZ,这是怎样分到的。系统E时钟为24MHZ。下面两条指令是对AD进行分频的,请查一下有错吗?
LDAB #%11000101 ;
  STAB $84  ;
3另外,您的邮箱能告诉我吗?
您的邮箱我已看到,谢谢![em12][em06]

才看清楚你的芯片型号,我先当成8位的了

在PDF中有这样一句。The minimum pulse width for the input capture input is greater than two bus clocks.
我想你的时钟频率可能慢于信号源。你先把信号源的频率调慢些试试,如50Hz。
学后而问
仔细看了一下你的AD转换,你定义的是10BIT数据结果吧。那么+5V的结果应该不是FDH,应该是FE00左右(具体和你定义的数据类型相关)。
你定义的转换时钟是2M(可以),连续转换,
总之,你的程序用汇编写实在让人5,注释也没写清楚。你最好去抄个典型的用。
学后而问
你好!
1、我AD用的是8位精度。其实我的程序也不复杂,主要是有5个信号,所以看起来复杂。因为每个信号采样6次,然后减去最大最小值,再求平均值。而为了考虑累加时可能会有溢出,所以都把8位数字放入低字节中,然后用D累加器进行相加。
2、输入捕捉的信号脉冲宽度要大于两个总线时钟,你建议我把信号源的频率减小,那我可否通过增大时钟频率来实现?另外,我设的输入捕捉时钟周期约为5微秒,而100赫兹的脉冲宽度为10毫秒,应该能满足你提示的那句英文啊!
3、请教一私人问题,你现在在哪?原先是哪个学校毕业的?现在工作了吗?
你不是分频24MHz/128=187.5Hz吗,怎么能满足呢?你的时钟周期5ms是怎么来的。另外脉冲宽度是10ms吗?应是5ms吧,不是指周期呀。
当然可以将分频系数减小试一下。
我上班N年了,,,


[此贴子已经被作者于2005-5-10 8:54:28编辑过]

学后而问
返回列表