您的位置: OpenADSP社区论坛 -> SHARC/TigerSHARC专区 -> 技术讨论区 -> 21369 DAI 的控制寄存器名字不统一?
本帖共有1000个阅读者
发表帖子 发表投票 回复主题
21369 DAI 的控制寄存器名字不统一?
piano(论坛新手)
piano
头衔:社区公民
帮派:无帮无派
帖数:3
金钱:124
积分:4
注册时间:2012/12/25
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
21369 DAI 的控制寄存器名字不统一?
简要问题:在VisualDSP里面找不到DAI_IMASK_H , DAI_IMASK_L.我在EZ-kit上使用DAI相连的那两个按钮只能触发DAI High Priority中断。

详细问题:
Hardware Reference P285 做了对比 Core Versus DAI/DPI Interrupts:
A pair of registers ( DAI_IMASK_H  and DAI_IMASK_L ) replace functions normally performed by the IRPTL register.
Hardware Reference P286: DAI Shadow Registers The  DAI_IMASK_L_SH  and DAI_IMASK_H_SH  shadow registers  are provided for the  DAI_IMASK_L  and  DAI_IMASK_H  registers respectively.
这两个用来读取DAI_IMASK的状态,以免直接读取DAI_IMASK导致清零。
但是在P694: DAI Controller Register列表里面寄存器却对应着这些名字:
DAI_IRPTL_H (ROC)
DAI_IRPTL_HS (RO)
DAI_IRPTL_L (ROC)
DAI_IRPTL_LS (RO)


查看def21369.h的内容发现:
#define DAI_IRPTL_FE    (0x2480)   /* DAI Falling Edge Interrupt Latch Register */
#define DAI_IMASK_FE    (0x2480)   /* DAI Falling Edge Interrupt Latch Register */
#define DAI_IRPTL_RE    (0x2481)   /* DAI Rising Edge Interrupt Latch Register */
#define DAI_IMASK_RE    (0x2481)   /* DAI Rising Edge Interrupt Latch Register */
#define DAI_IRPTL_PRI   (0x2484)   /* DAI Interrupt Priority Register */
#define DAI_IRPTL_H     (0x2488)   /* DAI High Priority Interrupt Latch Register */
#define DAI_IRPTL_L     (0x2489)   /* DAI Low Priority Interrupt Latch Register */
#define DAI_IRPTL_HS    (0x248C)   /* Shadow DAI High Priority Interrupt Latch Register */
#define DAI_IRPTL_LS    (0x248D)   /* Shadow DAI Low Priority Interrupt Latch Register */
前面四个寄存器有地址重复的. 跟High/Low Priority有关的只有DAI_IRPTL_H/DAI_IRPTL_L这两个Latch Register, 没有IMASK这一类寄存器。

同时,P280 DAI Interrupt Priorities页面中间提到: By default interrupts are mapped onto low priority interrupt. 为什么我在EZ-kit上默认触发的是High Priority中断?

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2012/12/25 16:34:03
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

IMASK寄存器位于VDSP下寄存器菜单->core ->interruppts下。

EZKIT的按键是经过非门的,所以其按键采用的电平触发方式和配置是相反的。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2012/12/26 11:49:48
piano(论坛新手)
piano
头衔:社区公民
帮派:无帮无派
帖数:3
金钱:124
积分:4
注册时间:2012/12/25
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
谢谢回复。

你提到IMASK属于Core Interrupts控制寄存器,  的确可以在您说的路径找到, 我主要问的是控制DAI Interrupts的DAI_IMASK_xx,相关控制器应该在Register>DAI > DAI Interrupts Latch Register, 但是它只列出了手册694页提到的寄存器。

我的按键问题不在于能否触发中断,而是想把按键SW10和SW9(分别占用DAI 19, DAI20)产生的中断配置到DAI Low Priority 中断, Hardware Reference里面的大意是把DAI_IMASK_H的相应DAI Pin控制位设为1,则触发DAI High Priority,  如果在DAI_IMASK_L相应DAI Pin控制位设为1,则触发DAI Low Priority中断。
这两个DAI_IMASK每一个bit的定义是一样的,但是如1楼所说,手册和头文件里面不能确定DAI_IMASK的存在。

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2012/12/26 17:29:23
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
找不到这个定义,仅能在帮助文件中找到一小段描述。如果是配置中断,你可以参考VDSP下21369例子代码中PBLED_test.c中的代码

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2012/12/26 19:19:39
piano(论坛新手)
piano
头衔:社区公民
帮派:无帮无派
帖数:3
金钱:124
积分:4
注册时间:2012/12/25
4信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
谢谢建议,我试试其他方法绕开这个限制。

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2012/12/28 10:59:07
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.154150 Call, 1 Queries, Processed in 0.015625 second(s),