硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3636|回复: 11
收起左侧

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

[复制链接]

1

主题

4

回帖

13

积分

新手上路

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





126542879.jpg
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

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

3、用PWM+DMA方式,不知道你这个应用方便不。
回复

使用道具 举报

1

主题

4

回帖

13

积分

新手上路

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

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

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

楼上,重新编辑了回复。
回复

使用道具 举报

65

主题

432

回帖

632

积分

金牌会员

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

使用道具 举报

1

主题

4

回帖

13

积分

新手上路

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

使用道具 举报

1

主题

4

回帖

13

积分

新手上路

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

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

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

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

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

http://www.armbbs.cn/forum.php?m ... hlight=%BE%AB%C8%B7
回复

使用道具 举报

1

主题

4

回帖

13

积分

新手上路

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

http://www.armbbs.cn/forum.php?mod=viewthread&tid=89128 ...

谢谢您提供的参考!
回复

使用道具 举报

14

主题

78

回帖

120

积分

初级会员

积分
120
发表于 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显示,没有关中断,温度读出好像没有发现错误。
这样做有问题吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

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

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

切换时间的话,此贴
http://www.armbbs.cn/forum.php?m ... hlight=%CD%EA%B1%AC
回复

使用道具 举报

14

主题

78

回帖

120

积分

初级会员

积分
120
发表于 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|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-1 09:59 , Processed in 0.255692 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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