OpenEdv-开源电子网

 找回密码
 立即注册
正点原子新作:阿波罗STM32F429&探索者STM32F4开发板&飞音1(FY1) HiFi USB声卡面市啦,赶快来下载资料哦。

查看: 52|回复: 12

ADXL345和STMF4中断设置问题

[复制链接]

  离线 

34

主题

98

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2016-12-29
在线时间
28 小时
发表于 7 天前 | 显示全部楼层 |阅读模式
我ADXL345传感器的中断是当有数据更新时发生高或低电平的中断口变化,直到数据被单片机采集完后才复位,继续循环下次数据更新。
我程序是写成发生中断之后采集了,之后还需要做些处理的,而我看中断设置只能设置成上升沿或下降沿触发。
那如果我在数据处理这段时间,传感器又做出了电平变化,那我单片机数据处理完不是就接受不到中断了吗?
这种数据处理方法是不行的是吗?还是我对中断方式有误解?
回复

使用道具 举报

  离线 

42

主题

5633

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
8607
金钱
8607
注册时间
2014-4-1
在线时间
733 小时
发表于 7 天前 | 显示全部楼层
我要学习嵌入式 发表于 2017-1-10 15:08
谢谢你的回复。我本是想利用中断对数据采集,然后放到个数组里,然后串口发生到电脑上,用LABVIEW去看下 ...


数据显示,本身就是非常非常慢的设备,还能指望多高的“实时性”?

处理方法很多,思路很多,和数据格式、编码有关。
我一般是这样:
自己建立几个指针来管理缓冲区,中断一次存一个数据,库存量加一,退出;
在main里面判断库存量的值,然后根据数据特点进行处理。

这种数据处理的思路和CPU型号关系不大。


回复 支持 1 反对 0

使用道具 举报

  离线 

42

主题

5633

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
8607
金钱
8607
注册时间
2014-4-1
在线时间
733 小时
发表于 7 天前 | 显示全部楼层

你理解没错。
所以,呆在中断内的时间越短越好,一般只做必要的工作,
比如把数据转存一下,立刻退出,以后的处理放在main中进行。

这样最优化处理以后所耗费的时间,就不能再少了,
这时要对使用方法提出要求,即外部设备两次中断间隔不能少于这个时间。

如果外部设备要求高,就必须考虑其他方法了。

CPU很多中断都要这样处理。

回复 支持 反对

使用道具 举报

  离线 

34

主题

98

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2016-12-29
在线时间
28 小时
 楼主| 发表于 7 天前 | 显示全部楼层
xuande 发表于 2017-1-10 14:28
你理解没错。
所以,呆在中断内的时间越短越好,一般只做必要的工作,
比如把数据转存一下,立刻退出, ...

谢谢你的回复。我本是想利用中断对数据采集,然后放到个数组里,然后串口发生到电脑上,用LABVIEW去看下信号变化什么的。
你说的把数据存起来,分为另外的任务做处理,而不是在中断这里处理它,我也是打算再以后数据处理这块这么做,但现在还没熟悉UC操作系统(我打算把程序镶进去,我迷惑的是数据采集中断是否会影响我数据显示的实时性)。
还有不讨论用操作系统的话,是不是就是把数据存起来,比如说存了2000个数,然后关中断!!!算完再开。主要还是两任务的并行问题会是什么样子的。
我以前用的是51.。。。
回复 支持 反对

使用道具 举报

  离线 

34

主题

98

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2016-12-29
在线时间
28 小时
 楼主| 发表于 7 天前 | 显示全部楼层
xuande 发表于 2017-1-10 17:07
数据显示,本身就是非常非常慢的设备,还能指望多高的“实时性”?

处理方法很多,思路很多,和数据 ...

像探索者给的一些源程序里 那个串口例程,在接收到数据后,进行了些协议的确定,(最后回车表示结束)判断它的标志位这些,代码比较少的是不会影响到下一次中断接收的?就是不会丢失到数据,是吧?越短的代码处理风险越低,可以DEBUG计算下那个运行时间。还有个问题,为什么通信中断不需要消除标识位的。而 IO口的要加这个“EXTI_ClearITPendingBit(EXTI_Line1); //清除LINE1上的中断标志位 ”是清除中断标识位吗?
回复 支持 反对

使用道具 举报

  离线 

42

主题

5633

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
8607
金钱
8607
注册时间
2014-4-1
在线时间
733 小时
发表于 7 天前 | 显示全部楼层
我要学习嵌入式 发表于 2017-1-10 19:11
像探索者给的一些源程序里 那个串口例程,在接收到数据后,进行了些协议的确定,(最后回车表示结束)判 ...


只要在下次中断到来之前退出中断处理程序,下次就是安全的。

清除标志位,有些设备需要,有些不需要。这要看手册。

回复 支持 反对

使用道具 举报

  离线 

0

主题

4

帖子

0

精华

新手上路

Rank: 1

积分
28
金钱
28
注册时间
2016-11-24
在线时间
2 小时
发表于 6 天前 | 显示全部楼层
ADXL345不是SPI和I2C接口么?
回复 支持 反对

使用道具 举报

  离线 

34

主题

98

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2016-12-29
在线时间
28 小时
 楼主| 发表于 6 天前 | 显示全部楼层
是呀。。哎,就是现在连不上我的芯片,不知道代码敲错还是什么问题。又不会仿真
回复 支持 反对

使用道具 举报

  离线 

34

主题

98

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2016-12-29
在线时间
28 小时
 楼主| 发表于 6 天前 | 显示全部楼层
leasun 发表于 2017-1-11 20:52
ADXL345不是SPI和I2C接口么?

是呀。。哎,就是现在连不上我的芯片,不知道代码敲错还是什么问题。又不会仿真
回复 支持 反对

使用道具 举报

  离线 

0

主题

4

帖子

0

精华

新手上路

Rank: 1

积分
28
金钱
28
注册时间
2016-11-24
在线时间
2 小时
发表于 5 天前 | 显示全部楼层
我要学习嵌入式 发表于 2017-1-11 21:14
是呀。。哎,就是现在连不上我的芯片,不知道代码敲错还是什么问题。又不会仿真

跟中断没关系吧,你用的SPI还是I2C?
回复 支持 反对

使用道具 举报

  离线 

34

主题

98

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2016-12-29
在线时间
28 小时
 楼主| 发表于 5 天前 | 显示全部楼层
leasun 发表于 2017-1-12 17:04
跟中断没关系吧,你用的SPI还是I2C?

不知道,搞仿真,看视频,跟原子哥学
回复 支持 反对

使用道具 举报

  离线 

0

主题

4

帖子

0

精华

新手上路

Rank: 1

积分
28
金钱
28
注册时间
2016-11-24
在线时间
2 小时
发表于 5 天前 | 显示全部楼层
我要学习嵌入式 发表于 2017-1-12 17:09
不知道,搞仿真,看视频,跟原子哥学

如果用SPI,可以直接读寄存器看看能不能读到数。
回复 支持 反对

使用道具 举报

  离线 

34

主题

98

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2016-12-29
在线时间
28 小时
 楼主| 发表于 5 天前 | 显示全部楼层
我看了下PA1引脚 没有中断信号。。IDR  仿真不错,虽然我现在还是很迷惑
回复 支持 反对

使用道具 举报


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

本版积分规则


QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2017-1-17 08:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表