请选择 进入手机版 | 继续访问电脑版

安富莱电子论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 654|回复: 11
收起左侧

[FreeRTOS] 请教一个FREERTOS,IO口模拟输出波形被干扰发生畸变的问题

[复制链接]

1

主题

5

帖子

13

积分

新手上路

积分
13
发表于 2018-9-10 11:25:19 | 显示全部楼层 |阅读模式
本人刚接触FREERTOS,用IO口模拟归零码(800KHZ),控制一串LED灯。
归零码要求:
0、300ns高电平,900ns低电平;
1、900ns高电平,300ns低电平;
在波形输出过程中,我关闭了中断,但仍然不知道被什么进程影响到,导致波形畸变。
如图片所示,中间的几个高电平和低电平无辜加长。





126542879.jpg
回复

使用道具 举报

5667

主题

3万

帖子

4万

积分

管理员

做人第一,工作第二

Rank: 9Rank: 9Rank: 9

积分
45615
QQ
发表于 2018-9-10 11:27:42 | 显示全部楼层
1、这种精度的模拟,开个800KHz的中断做IO输出。同时将此中断设置为最高优先级,并且中断代码最好寄存器操作。貌似你的这个得开10MHz的中断,F4系列处理不了。
2、如果是任务里面执行是可以的,不过这段操作时间务必关中断。防止任何干扰。

3、用PWM+DMA方式,不知道你这个应用方便不。
淘宝小店: https://armfly.taobao.com/
专注,努力,用心的做好每一件事情,Fighting!
回复

使用道具 举报

1

主题

5

帖子

13

积分

新手上路

积分
13
 楼主| 发表于 2018-9-10 11:31:39 | 显示全部楼层
最早就使用的中断,开了300ns一次的中断,但一进中断,系统就崩溃了,不断的重启
回复

使用道具 举报

5667

主题

3万

帖子

4万

积分

管理员

做人第一,工作第二

Rank: 9Rank: 9Rank: 9

积分
45615
QQ
发表于 2018-9-10 11:33:16 | 显示全部楼层
joy 发表于 2018-9-10 11:31
最早就使用的中断,开了300ns一次的中断,但一进中断,系统就崩溃了,不断的重启

楼上,重新编辑了回复。
淘宝小店: https://armfly.taobao.com/
专注,努力,用心的做好每一件事情,Fighting!
回复

使用道具 举报

31

主题

235

帖子

297

积分

高级会员

积分
297
发表于 2018-9-10 11:36:42 | 显示全部楼层
这种方案最好是外挂一块CPLD
回复

使用道具 举报

1

主题

5

帖子

13

积分

新手上路

积分
13
 楼主| 发表于 2018-9-10 11:41:27 | 显示全部楼层
中断是关了的, 用的 cli()。
PWM+DMA没试过,我用的这款芯片没看到有DMA的内容。除中断外,我用了两种方式,一种是配置定时器时基计数器累加,然后读定时器时基计数器,进行延时;一种是加NOP;但都有这个问题,感觉某个地方没有被屏蔽掉,导致时序被干扰到了。
回复

使用道具 举报

1

主题

5

帖子

13

积分

新手上路

积分
13
 楼主| 发表于 2018-9-10 11:46:05 | 显示全部楼层
taobaofarmer 发表于 2018-9-10 11:36
这种方案最好是外挂一块CPLD

周末项目就要结束了,来不及改方案了
回复

使用道具 举报

5667

主题

3万

帖子

4万

积分

管理员

做人第一,工作第二

Rank: 9Rank: 9Rank: 9

积分
45615
QQ
发表于 2018-9-10 14:13:07 | 显示全部楼层
joy 发表于 2018-9-10 11:41
中断是关了的, 用的 cli()。
PWM+DMA没试过,我用的这款芯片没看到有DMA的内容。除中断外,我用了两种方 ...

参考我这个,如果你是Cortex-M内核的话

http://forum.armfly.com/forum.ph ... hlight=%BE%AB%C8%B7
淘宝小店: https://armfly.taobao.com/
专注,努力,用心的做好每一件事情,Fighting!
回复

使用道具 举报

1

主题

5

帖子

13

积分

新手上路

积分
13
 楼主| 发表于 2018-9-10 14:28:09 | 显示全部楼层
eric2013 发表于 2018-9-10 14:13
参考我这个,如果你是Cortex-M内核的话

http://forum.armfly.com/forum.php?mod=viewthread&tid=89128 ...

谢谢您提供的参考!
回复

使用道具 举报

14

主题

89

帖子

117

积分

初级会员

积分
117
发表于 2019-3-1 17:02:02 | 显示全部楼层
本帖最后由 mcza30 于 2019-3-1 17:10 编辑
eric2013 发表于 2018-9-10 11:27
1、这种精度的模拟,开个800KHz的中断做IO输出。同时将此中断设置为最高优先级,并且中断代码最好寄存器操 ...

请教eric2013,在407时钟168MHz下freertos任务切换需要多少时间?
我用了2个同优先级任务,一个是触摸屏,一个是18b20显示,没有关中断,温度读出好像没有发现错误。
这样做有问题吗?
回复

使用道具 举报

5667

主题

3万

帖子

4万

积分

管理员

做人第一,工作第二

Rank: 9Rank: 9Rank: 9

积分
45615
QQ
发表于 2019-3-1 17:15:45 | 显示全部楼层
mcza30 发表于 2019-3-1 17:02
请教eric2013,在407时钟168MHz下freertos任务切换需要多少时间?
我用了2个同优先级任务,一个是触摸屏 ...

给18B20加上CRC校验,读出数据有错误可以直接丢弃。
基于V6的DS18B20带CRC校验参考例程
http://forum.armfly.com/forum.ph ... 9423&fromuid=58
(出处: 安富莱电子论坛)

切换时间的话,此贴
http://forum.armfly.com/forum.ph ... hlight=%CD%EA%B1%AC
淘宝小店: https://armfly.taobao.com/
专注,努力,用心的做好每一件事情,Fighting!
回复

使用道具 举报

14

主题

89

帖子

117

积分

初级会员

积分
117
发表于 2019-3-1 20:10:55 | 显示全部楼层
本帖最后由 mcza30 于 2019-3-1 23:33 编辑
eric2013 发表于 2019-3-1 17:15
给18B20加上CRC校验,读出数据有错误可以直接丢弃。
基于V6的DS18B20带CRC校验参考例程
http://forum.a ...

谢谢eric2013
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|安富莱电子论坛 ( 鄂ICP备09023347号,公安机关备案号42010602000201 )

GMT+8, 2019-5-21 06:46 , Processed in 0.199423 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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