点这儿注册 | 用户登陆 | 搜索本站现有11人在线 | 返回论坛首页
三意科技DSP专用网站
服务为本,三意电子科技
BBS 在线服务中心
您是本帖第 13764 个阅读者     Refresh
 *贴子主题: [求助]为什么我的程序中断不稳定保存该页为文件 显示可打印的版本 把本贴加入IE收藏夹
该用户目前不在线 binggirl0451

等级: 四年级
贴数: 61
积分: 136
来自: 哈尔滨
查看binggirl0451的个人信息
    我使能的是通用定时器1周期中断。有中断触发A/D转换。有时程序执行正常,有时进不去中断。为什么?各位大虾帮忙看看。多谢了。还有想问一下如何改变选通通道值。我要采集16路A/D,要怎么改变ADCTRL1的设置呢?
    
.title      "AD.asm"
.include "f240regs.h"
.def         _c_int0

;---------------------------------------------------------------------
; I/O Mapped EVM Register Declarations
;---------------------------------------------------------------------
DAC0      .set    0000h ;DAC Channel 0 Register
DAC1      .set    0001h ;DAC Channel 1 Register
DAC2      .set    0002h ;DAC Channel 2 Register
DAC3      .set    0003h ;DAC Channel 3 Register
DAC_UPDATE  .set    0004h ;DAC Update Register
SWITCHES .set    0008h ;DIP Switch Register
LEDS       .set    000dh ;LEDs Register
temp .set 0010h    

;---------------------------------------------------------------------
; Variable Declarations for on chip RAM Blocks
;---------------------------------------------------------------------
            .sect  ".vectors"

RSVECT     B    _c_int0 ; Reset Vector
INT1    B    PHANTOM ; Interrupt Level 1
INT2    B    GISR2 ; Interrupt Level 2
INT3    B    PHANTOM ; Interrupt Level 3
INT4    B    PHANTOM ; Interrupt Level 4
INT5    B    PHANTOM ; Interrupt Level 5
INT6    B    PHANTOM ; Interrupt Level 6
RESERVED   B    PHANTOM ; Reserved
SW_INT8    B    PHANTOM ; User S/W Interrupt
SW_INT9    B    PHANTOM ; User S/W Interrupt
SW_INT10   B    PHANTOM ; User S/W Interrupt
SW_INT11   B    PHANTOM ; User S/W Interrupt
SW_INT12   B    PHANTOM ; User S/W Interrupt
SW_INT13   B    PHANTOM ; User S/W Interrupt
SW_INT14   B    PHANTOM ; User S/W Interrupt
SW_INT15   B    PHANTOM ; User S/W Interrupt
SW_INT16   B    PHANTOM ; User S/W Interrupt
TRAP    B    PHANTOM ; Trap vector
NMINT    B    PHANTOM ; Non-maskable Interrupt
EMU_TRAP   B    PHANTOM ; Emulator Trap
SW_INT20   B    PHANTOM ; User S/W Interrupt
SW_INT21   B    PHANTOM ; User S/W Interrupt
SW_INT22   B    PHANTOM ; User S/W Interrupt
SW_INT23   B    PHANTOM ; User S/W Interrupt

.bss GPR0,1 ;General purpose register.
.bss LED_STATUS,1 ;LED Status Register
.bss    SW_STATUS,1
.bss RPT_NUM,1 ;RPT value, used in mS_DELAY 
.bss mSEC,1 ;Delay value, used in mS_DELAY 
        .bss    CONTEXT_MEM_PRT,6
        .bss    TRTEMP,1
        .bss    TIME,1
        .bss    AD_RESULT1,1
        .bss    AD_RESULT2,1
        .bss    AD_RESULT3,1
        .bss    AD_RESULT4,1
        .bss    AD_RESULT5,1
        .bss    AD_RESULT6,1
        .bss    AD_RESULT7,1
        .bss    AD_RESULT8,1
        .bss    AD_RESULT9,1
        .bss    AD_RESULT10,1
        .bss    AD_RESULT11,1
        .bss    AD_RESULT12,1
        .bss    AD_RESULT13,1
        .bss    AD_RESULT14,1
        .bss    AD_RESULT15,1
        .bss    AD_RESULT16,1
        
        
         

;=====================================================================
; M A I N   C O D E  - starts here
;=====================================================================

        .text
_c_int0:       
NOP
CALL   SYSINIT
CALL   GP_INIT
CALL   AD_INIT
WAIT:
         NOP
         B    WAIT
                 
                                        
SYSINIT: 
        LDP     #0H
        SPLK    #0H,IMR  
        SETC INTM            ;Disable interrupts
CLRC SXM ;Clear Sign Extension Mode
CLRC OVM            ;Reset Overflow Mode
CLRC CNF          ;Config Block B0 to Data mem                            
LDP   #0E0h ;DP for addresses 7000h-707Fh
SPLK  #00BBh,CKCR1 ;CLKIN(OSC)=10MHz,CPUCLK=20MHz
SPLK  #00C3h,CKCR0 ;CLKMD=PLL Enable,SYSCLK=CPUCLK/2
SPLK  #40C0h,SYSCR ;CLKOUT=CPUCL
SPLK  #006Fh, WDCR ;Disable WD if VCCP=5V (JP5 in pos. 2-3)
LDP    #0H
SPLK  #0002h,IMR       ;enable INT2
LACC IFR ;Read Interrupt flags
SACL IFR ;Clear all interrupt flags
LDP     #04H
SPLK  #0h,GPR0          ;Set wait state generator for:
OUT   GPR0,WSGR 
    ;LDP   #04H         
    ;SPLK  #09H,TIME                      ;Program Space, 0 wait states
RET        ;Data Space, 0 wait states
   ;I/O Space, 0 wait states

GP_INIT:
        
        LDP  #0E8H
        SPLK #0FFFFh,EVIFRA             
        SPLK #0155h,GPTCON ;0000000101010101 由T1周期中断启动A/D转换,           
        SPLK #0170Ah,T1CON ;0001 0111 0000 1010 采用连续增计数模式,128分频,
                           ;停止计数;内部时钟;;定时比较寄存器立即装载;使能比较操作;使用自己的周期寄存器
        SPLK #02625h,T1PR  ;0.125s
        SPLK #0h,T1CNT
        SPLK #0174AH,T1CON   ;使能计数        
        SPLK #0080H,EVIMRA   ; 0000 0000 1000 0000 enable T1PINT
        ;LACC  EVIMRA
        ;LAR  AR0,#01H
        ;SPLK  #01H,LED_STATUS
        ;OUT   LED_STATUS,LEDS
       
        RET 
AD_INIT:
        LDP   #0E1H
        SPLK   #000FH,OCRA        ;IOPA设为A/D输入,IOPB为I/O输入。        
        LDP   #0E0H
        SPLK   #01800H,ADCTRL1    ;0001 1000 0000 0000使能ADC2,ADC1,不采用连续转换模式
                                  ;屏蔽模数中断,选择通道1,9
        SPLK   #0405H,ADCTRL2     ;0000 0100 0000 0101 bit10 使能事件管理器同步启动A/D,bit9 禁止由外部信号启动A/D
                                  ;bit2-0 16分频
        SPLK   #1801H,ADCTRL1
        ;LDP   #0H
        CLRC  INTM                ;开中断
        RET
        
                  
        
GISR2:
        SETC   INTM
        MAR *,AR7  ;现场保护
        SST #1,*+
        SACH *+
        SACL *+
        SST #0,*+
        SPH *+
        SPL *+
        MPY #1
        SPL *
    LDP   #0E8H                  ;是否是T1PINT
        LACL  EVIVRA  
        XOR    #0027H
        BCND   T1GP_ISR,EQ           
        B      GISR2_RET
      
T1GP_ISR:
        LDP    #0E0H
        ;LACC   ADCTRL1
        ;XOR  #01H
        ;SACL   ADCTRL1           
        BIT    ADCTRL1,8              ;查询AD转换是否完成?为0完成。
        BCND   T1GP_ISR,TC
        LACL   ADCFIFO1
        RPT    #05H
        SFR
        LDP    #004H
        SACL   AD_RESULT1
         LDP   #0E0H
        LACL   ADCFIFO2
        
        
        RPT    #05H
        SFR
        LDP    #04H
        SACL   AD_RESULT2
        ;SACL   AD_RESULT2
        LACC   AD_RESULT1
        SUB    #01ADH            ;比较值设为2.1V
        BCND   BJ1,LEQ           ;ACC<=0
        LACC   AD_RESULT2
        SUB    #0147H             ;比较值设为1.6V
        BCND   BJ2,LEQ
        B      GISR2_RET
BJ1:
        LDP     #04H
        SPLK    #40H,LED_STATUS   ;点亮相应的灯
        OUT     LED_STATUS,LEDS
SPLK #2000,mSEC       
CALL    mS_DELAY           ;延时1s
SPLK    #00H,LED_STATUS   
LDP     #0H
                  OUT     LED_STATUS,LEDS
B       GISR2_RET
        
        
BJ2:
        LDP     #04H
        SPLK    #80H,LED_STATUS    ;点亮相应的灯
        OUT     LED_STATUS,LEDS
SPLK #2000,mSEC
CALL    mS_DELAY             ;延时1s
SPLK    #00H,LED_STATUS   
LDP    #0H
                  OUT     LED_STATUS,LEDS
B       GISR2_RET ;Set mSEC for a 50ms delay
;LAR AR3,#6h ;Load AR0 with 6 for loop counter
        ;LAR AR2,#3H
        ;LAR AR0,#09H

mS_DELAY:
        LDP     #004h ;DP-->0000h-007Fh
    LACC #5000 ;Load RPT value to GPR0
SACL RPT_NUM
LAR AR1,mSEC ;Set AR0 to generate a
MAR *,AR1 ;(AR0*0.1)mSEC delay loop

mS_LOOP:
        LDP #004h ;DP-->0000h-007Fh
RPT RPT_NUM ;2000 cycles = 0.1mS
NOP ;1 cycle
BANZ mS_LOOP ;Repeat DELAY_LOOP
    RET ;Return from DELAY SR

GISR2_RET:
        MAR *,AR5 ;恢复现场                 
        LDP #0                                    
        LACL *-                                   
        SACL TRTEMP                               
        LT *-                                     
        MPY #1                                    
        LPH *-                                    
        LT TRTEMP                                               
        LST #0,*-                                 
        LACL *-                                   
        ADD *-,16                                 
        LST #1,*                 
        LDP     #0E8H
        SPLK  #0H,T1CNT
        LACC    EVIFRA
        SACL    EVIFRA
        CLRC    INTM
        RET     
PHANTOM  ;KICK_DOG ;Resets WD counter
    B PHANTOM
   





 

发贴时间:2005-4-20 19:56:53IP:61.51.*.*
该用户目前不在线 support1::版主::

等级: 江泽水
贴数: 1380
积分: 2764
来自: 上海三意
查看support1的个人信息
程序中断不稳定有可能是其他程序抢占了先机,使得AD中断不能被及时响应造成的。如果要分析这个问题,最好把其他不相关的东西关掉,这样就能看出来影响的地方。
改变通道值很简单,只需要改变下面两个寄存器的值就可以了。MAX_CONV为通道数+1,CHSELSEQ1 - 4就是16个通道的安排次序。如这个就是第一个采0通道,第二个采1通道,第三个采5通道。也可以如CHSELSEQ1 = 0x1111,这就是采四次1通道。依此类推其他的CHSELSEQ2,3,4

MAX_CONV  = 0x02;   
CHSELSEQ1 = 0x510;


发贴时间:2005-4-21 9:27:42IP:202.120.*.*
该用户目前不在线 binggirl0451

等级: 四年级
贴数: 61
积分: 136
来自: 哈尔滨
查看binggirl0451的个人信息
我用的是240。没有你说的两个寄存器。还有我在单步之行时,进入中断后IFR是000。不是进入中断后应该是002吗?我使能的是INT2.在中断和初始化程序中设置断点,程序在连续进入中断几次后又回到初始化程序,然后又进入中断。这是为什么?在中断中执行A/D转换为什么我在改变了输入电压后,采样结果还是上次的输入电压转换结果,而且还保持好几次。是不是与ADCFIFO的读取有关系呢?


发贴时间:2005-4-21 22:54:32IP:61.51.*.*
该用户目前不在线 xiao_de

等级: 高三
贴数: 196
积分: 423
来自: 西安电子科技大学
查看xiao_de的个人信息 xiao_de的OICQ是120375546xiao_de的OICQ是120375546
“程序在连续进入中断几次后又回到初始化程序,然后又进入中断。”,你的程序跑飞了,应该是中断设置的问题,中断结束后是否把IFR写“1”清零了?!你是用汇编做的?


---------------------------------------------------------------
我用dsp240、2407做温度控制、电机!
e-mail:xintanchen@sina.com

发贴时间:2005-4-22 11:58:42IP:219.245.*.*
该用户目前不在线 binggirl0451

等级: 四年级
贴数: 61
积分: 136
来自: 哈尔滨
查看binggirl0451的个人信息
我是用汇编做的。就是上面的程序。我看不出有什么问题呀。帮忙看看是哪里弄错了。新手。请多支教


发贴时间:2005-4-22 17:12:33IP:61.51.*.*
该用户目前不在线 buerlove

等级: 托儿所
贴数: 4
积分: 9
来自: 南京
查看buerlove的个人信息 buerlove的OICQ是308489647buerlove的OICQ是308489647
我想问下关于现场保护的问题...
保护和恢复现场的指令一般是不是固定的啊,我看差不了多少喔,不过就是看不懂..




发贴时间:2008-6-17 15:05:18IP:218.94.*.*
该用户目前不在线 buerlove

等级: 托儿所
贴数: 4
积分: 9
来自: 南京
查看buerlove的个人信息 buerlove的OICQ是308489647buerlove的OICQ是308489647
我想问下关于现场保护的问题...
保护和恢复现场的指令一般是不是固定的啊,我看差不了多少喔,不过就是看不懂..




发贴时间:2008-6-17 15:11:36IP:218.94.*.*
该用户目前不在线 support2::版主::

等级: 江泽水
贴数: 2426
积分: 4864
来自: 上海三意电机驱动技术有限公司
查看support2的个人信息
呵呵 ...汇编!



---------------------------------------------------------------
大头,大头,下雨不愁.
欢迎大家来我司BBS共同交流啊

发贴时间:2008-6-26 15:53:09IP:202.22.*.*
该用户目前不在线 name

等级: 三年级
贴数: 80
积分: 81
来自: KoViQlPMjdSdKXj
查看name的个人信息 name的OICQ是772809855name的OICQ是772809855
hRVsXz


---------------------------------------------------------------
comment6, 

发贴时间:2011-4-28 18:21:51IP:213.186.*.*
第1页
快速回复主题[求助]为什么我的程序中断不稳定
输入用户名和密码:用户名: 没有注册?  密码: 忘记密码?
内容





 极限论坛 版权所有© 2001 v6000+ u0001
EzRick.com All Rights Reserved
设计 | 程序:Rick