3756|3

78

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请求关于LF2407A ad转换的问题 [复制链接]

小弟初学dsp  在做直接电机的PWM控制 其中电流反馈用到了ad转换

程序中用事件管理器A的定时器1的周期中断启动ad转换

程序已经可以进入中断

我只设了一个转换通道

但是每次采样读数都是0

可能是什么样的问题啊

程序在下面

.INCLUDE  \"LF2407.H\"
.include  \"vector.h\"
.DEF _c_int0
;-----------------------------------以下定义变量合常数--------------------------------------------
.BSS N_KP,1                        ;速度调节比例系数
.BSS N_KI,1                        ;速度调节积分系数
.BSS N_KC,1                        ;速度调节积分饱和修正参数
.BSS I_KP,1                        ;电流调节比例系数
.BSS I_KI,1                        ;电流调节积分系数
.BSS I_KC,1                        ;电流调节积分饱和修正系数
.BSS I_REF,1                       ;电流参考值
.BSS N_REF,1                       ;速度参考值
.BSS DIRECTION,1                   ;速度方向标志
.BSS STACK,6                       ;软堆栈初始地址
.BSS I_EK,1                        ;电流偏差
.BSS I_RK,1                        ;电流第K次积分调节累计
.BSS I_U,1                         ;电流调节输出
.BSS I_ELPI,1                      ;电流极限偏差
.BSS TMP1,1                         ;临时变量
.BSS TMP2,1
.BSS ENCODEROLD,1                  ;前一次编码器读数
.BSS ENCINCR,1                     ;编码增量
.BSS SPEEDTMP,1                    ;编码脉冲累计
.BSS SPEEDSTEP,1                   ;速度调节计数器
.BSS KSPEED,1                      ;编码脉冲-速度转换系数
.BSS N,1                           ;速度反馈量
.BSS N_EK,1                        ;速度偏差
.BSS N_RK,1                        ;速度第K次积分调节累计
.BSS N_U,1                         ;速度调节输出
.BSS N_ELPI,1                      ;速度极限偏差
.BSS I_MIN,1                       ;电流最小值
.BSS I_MAX,1                       ;电流最大值
.BSS PWM,1                         ;PWM波的占空比对应的比较点

;---------------------------------------以下始主程序--------------------------------------------
.TEXT
;---------------------------------------初始化程序------------------------------------------------
_c_int0
CLRC    CNF
CLRC    OVM
SETC    SXM                                      ;符号扩展
SETC    INTM                                     ;关中断
LAR     AR1,#STACK                               ;软堆栈指针
LDP     #0E0H                                    
SPLK    #0E8H,WDCR                               ;不用看门狗
SPLK    #0684H,SCSR1                             ;20MCLKIN,20MCLKOUT
LDP     #0E1H
SPLK    #03D8H,MCRA                              ;引脚设置为PWM1~4,QEP1~2
LDP     #0E8H
SPLK    #0FFFFH,T2PR                             ;最大周期
SPLK    #0000H,T2CNT
SPLK    #9870H,T2CON                             ;定向增减,允许编码接口
SPLK    #500,T1PR                                ;PWM设置,周期50微秒
SPLK    #0000H,T1CNT
SPLK    #01F4H,DBTCONA                           ;死区1.6微秒
SPLK    #250,CMPR1                               ;占空比为50%
SPLK    #250,CMPR2
SPLK    #8200H,COMCONA                           ;允许比较,T1下溢重载
SPLK    #084CH,T1CON                             ;连续增减计数,内部时钟,不分频
SPLK    #0100H,GPTCONA                           ;T1周期中断标志启动AD转换
LDP     #0
SPLK    #0001H,IMR                               ;允许INT1中断
SPLK    #0FFFFH,IFR                              ;清标志
LDP     #0E8H
SPLK    #0FFFFH,EVAIFRA                          ;清标志
SPLK    #0FFFFH,EVAIFRB
SPLK    #0FFFFH,EVAIFRC
SPLK    #0,EVAIMRA
SPLK    #0,EVAIMRB
SPLK    #0,EVAIMRC
LDP     #0E1H                                     ;A/D设置
SPLK    #0500H,ADCTRL2                            ;允许EVA启动AD转换
SPLK    #0910H,ADCTRL1                            ;10分频,级连模式
SPLK    #0000H,MAXCONV                            ;一个转换通道
SPLK    #0007H,CHSELSEQ1                          ;ADCIN7通道
LDP     #4                                        ;变量初始化
SPLK    #1,DIRECTION                              ;正转
SPLK    #0,I_REF
SPLK    #0,N_REF                                  ;100对应额定转速3000r/min
SPLK    #0C8H,I_KP                                ;给电流比例系数赋值
SPLK    #15H,I_KI                                 ;给电流积分系数赋值,Q22格式
SPLK    #2H,I_KC                                  ;给电流积分饱和修正系数赋值,Q26格式
SPLK    #2AH,N_KP                                 ;给速度比例系数赋值
SPLK    #70H,N_KI                                 ;给速度积分系数赋值,Q16格式
SPLK    #3H,N_KC                                  ;给速度积分饱和系数赋值,Q16格式
SPLK    #0,I_RK
SPLK    #0,I_ELPI
SPLK    #0,SPEEDTMP
SPLK    #1,SPEEDSTEP                              ;使得第一次就进行速度调节,以后每1000PWM周期调节一次
SPLK    #313BH,KSPEED                             ;编码脉冲-速度转换系数,Q13格式
SPLK    #0,N_RK
SPLK    #0,I_MIN                                  ;给电流最下值赋值
SPLK    #2304,I_MAX                               ;给电流最大值赋值
CLRC    INTM                                      ;开总中断                              
LOOP
LDP     #4
BIT     DIRECTION,15                              ;检查转向标志
BCND    CW,TC                                     ;正转跳转
LDP     #0E8H
SPLK    #0096H,ACTRA                              ;PWM1,4高有效,2,3低有效
B       LOOP

CW
LDP     #0E8H
SPLK    #0069H,ACTRA                              ;PWM1,4低有效,2,3高有效
B       LOOP
;------------------------------------------假中断处理----------------------------------------------------
PHANTOM
CLRC           INTM
RET
;-------------------------------------------AD转换处理子程序---------------------------------------------
ADCINT
MAR     *,AR1                                     ;保存现场
MAR     *+                                       
SST     #1,*+                                     ;保存ST1
SST     #0,*                                      ;保存ST0
LDP     #0E0H
LACC    PIVR                                      ;清ADC中断标志
LDP     #0E8H
SPLK    #0FFFFH,EVAIFRA                           ;清T1周期中断标志
LDP     #0E1H
LACC    ADCTRL2
OR      #0202H
SACL    ADCTRL2
;-------------------------------------------电流的PI调节---------------------------------------------
LACC    RESULT7
LDP     #0E8H
SACL    CMPR2
SACL    CMPR1                                      ;更新看空比
;---------------------------------------恢复现场退出-----------------------------------------------------
GO
MAR     *,AR1                                      ;恢复现场
LST     #0,*-                                      ;恢复ST0
LST     #1,*-                                      ;恢复ST1
CLRC    INTM
RET
.END

最新回复

问题已经解决了 上面的错误在于 应该是 LACC    RESULT0 而不是 LACC    RESULT7 谢谢各位了  详情 回复 发表于 2008-5-16 14:00
 
点赞 关注

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
顶你.希望高手出招,说说ad用汇编到底应该怎么写,我也碰到了很怪的问题...
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我用C语言编译的A/D程序,不是很懂你的汇编语言
只是想提醒一下,在采集A/D时,开发板上有两个需要短接的引脚,还有就是有6个开关键,其中有一个必须在ON的位置,缺少这两个,A/D都采集不成功
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

4
 
问题已经解决了

上面的错误在于

应该是
LACC    RESULT0
而不是
LACC    RESULT7

谢谢各位了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表