打印

关于:中断属性 auto_psv

[复制链接]
11801|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
autuy123|  楼主 | 2011-11-23 10:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在编写中断函数
我如何使用 auto_psv 和 no_auto_psv 呢!我也找不到官方的说明

谁可以解答一下
沙发
autuy123|  楼主 | 2011-11-23 11:02 | 只看该作者
我是这样理解的:
在中断函数中访问了 const中的变量需要指定中断函数  auto_psv  属性

在中断函数中 没有 访问 const  中的变量需要指定中断函数  no_auto_psv  属性

使用特权

评论回复
板凳
yewuyi| | 2011-11-23 11:20 | 只看该作者
网络回答1:
看看英文版的24H编译器用户手册吧。。。
PSV是一个不超过32K的由编译器管理的程序空间,其实就是在程序空间存放一些只读的CONSTANT数据,用户代码要通过特定的PSV寄存器来间接访问它们。
比如:const int __attribute__((space(auto_psv)))  var_pav_sample = 0x30;
auto_psv会使能编译器准备这些额外的代码,以满足用户的PSV数据访问需求。
对一般用户设计程序而言,中断程序必须指明是否需要编译器准备这部分代码,负责默认情况下编译器会增加psv访问的代码段,同时提醒用户确定使用auto_psv还是no_auto_psv,一般给中断程序指定no_auto_psv,一定要使用某些只读的数据,也可以提前在RAM里准备好,毕竟中断程序的应答能力和效率是首要的。
网络回答2:
dsPIC30F6014中断问题
2010-11-11 09:15
中断服务程序如下:

void __attribute__((__interrupt__)) _T1Interrupt (void)
{
   IFS0bits.T1IF = 0;
   ......
}

当使用MPLAB C30的2.04 版本编译时,没有任何警告信息。

但使用MPLAB C30的3.00 版本编译时,显示警告信息如下:

SinusoidalBLDC.c: In function '_T1Interrupt':
SinusoidalBLDC.c:159: warning: PSV model not specified for '_T1Interrupt';
   assuming 'auto_psv' this may affect latency

且该警告影响了程序的正常运行,请大虾们指点是怎么回事,该怎么修改?

你可以看一下MPLAB C30 3.00 版本的released notes

void __attribute__((__interrupt__,auto_psv)) _T1Interrupt (void)
{
   IFS0bits.T1IF = 0;
   ......
}



加上“,auto_psv”,果然好了。

参考C30 release notes 第7部分 Migrating to Version 3.00。
说明:随着可管理的PSV 指针和CodeGuard PSV 常量部分的引入,ISRs不再认为PSVPAG默认设置。为此引入了两个属性(attribute)auto_psv 和 no_auto_psv,以便在中断函数里使能或禁止 PSVPAG管理。如果ISR 引用了const 变量或字符串常量(字符串常量在程序空间里),则应当加上auto_psv 属性,例如:
void __attribute__((interrupt, auto_psv)) myISR()
{
/* This function can reference const variables and
string literals with the constants-in-code memory model. */
}

而no_auto_psv 属性则用于指明ISR不引用auto_psv 常量.
如果没有指明两种属性中的任何一种,C30 将采用auto_psv并插入必要的指令以确保运行时正确的操作。同时也会给出一个警告信息,例如:

warning:   PSV model not specified for '_T1Interrupt';
assuming 'auto_psv' this may affect latency

这主要是提醒程序员通过指定no_auto_psv属性以缩短中断响应时间。

使用特权

评论回复
评论
kavent 2021-7-2 15:14 回复TA
说的很好!刚好遇到这个问题! 
地板
autuy123|  楼主 | 2011-11-24 09:29 | 只看该作者
我想了许久也不明白
我到到底该怎么用

使用特权

评论回复
5
melodyczw| | 2012-1-11 11:07 | 只看该作者
谢谢……如2楼所说

使用特权

评论回复
6
KOP_SING| | 2014-8-11 13:25 | 只看该作者
虽然还是不太明白,但是先用一下再说

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

210

帖子

0

粉丝