发 帖  
原厂入驻New
[问答] 关于PIC24上的FreeRTOS的经验和建议?
110 PIC24 rtos
分享
我以前一直在为PIC24寻找RTOS解决方案,但是因为找不到合适的方式进入平台(PIC24FJ256GB206)而放弃了。项目本身也失败了……无论如何,我现在又在寻找关于在这个MCU上使用FreeRTOS的建议。这里是否有人成功地在这个类的MCU上使用了FreeRTOS,并且能够提供一些指导?我已经找到下载,看起来FreeRTOS的当前版本是8.2.3。我的应用程序是一个数据收集系统控制器,它必须能够同时执行如下任务:-通过RS232控制电流发送器-与主机控制器通信通过RS232监控GPS定位-通过RS232监控GPS定位-从测量读数计算结果数据-在SDcard磁盘上存储测量结果等等,为了不产生大量的意大利面条代码,我认为将需要RTOS,但我不知道该向哪里求助。FreeRTOS似乎是一个很好的起点,但是我很担心PIC24闪存的占用空间以及对RAM的需求。所以欢迎您提出任何建议。
0
2019-9-11 10:11:33   评论 分享淘帖 邀请回答

相关问题

19个回答
IMHO,而不是RTOS,你最好使用中断并让硬件做这项工作。这样会更简单,而且效率更高,也就是说,您能够为给定的资源打包更多的功能。除非您需要USB模块,否则考虑PIC24HJ,它运行更快,并且具有通用的DMA。
2019-9-11 10:24:45 评论

举报

我不需要USB。我正在考虑重新使用一个带有PIC24FJ256GB206(或升级到210)控制器的设计,用于更复杂的应用程序,其中通信基本相同,但是控制器还有很多事情要做。GPS定位,精确定时,响应用户输入,处理一个应答isk文件系统等等。comm通道(全部4个)已经在使用中断来处理传入和传出数据流。问题在于必须始终在所有方向上都有响应,而实际的机器控制必须优先于其高精度定时。我能没有描述太多实际的设备操作,无法准确解释……在我以前的工作场所,我们使用Atmel ARM7控制器构建了一个多功能的拾取和放置机器人系统,我们发现除非使用RTOS,否则无法做到这一点。有了RTOS,我们可以划分任务代码,而不用考虑其他任务,只要我们保持它们之间的通信,以RTOS提供的消息。我们取得了很大的成功。现在缩放到PIC24,在机器人公司,我不想再像以前那样实现任务隔离的自由。因此,与永恒循环main()函数相比,使用RTOS似乎更有吸引力……我发现FreeRTOS也确实是免费的。我以前的工作场所付了相当高的许可证。现在我只想得到一些同行开发人员的确认,证明它实际上工作得很好。而且它适合于PIC24闪存,还有空间留给主应用程序。
2019-9-11 10:39:24 评论

举报

ARM7比PIC24大一点。如果你有一个好的端口,它没有理由不工作。但是在时间(堆栈交换和其他处理)和内存空间上有额外的开销。
2019-9-11 10:58:37 评论

举报

关于Fcy和UART波特率,当您选择Fcy=16MHz时,如果使用标准波特率,在误差小于2%的限制下,最大值是57600。如果选择FCY=48 MHz,则最大值为921600。
2019-9-11 11:15:29 评论

举报

我已经在24F/H deviceshttp://www.quasar..com/FreeRTOS上的非商业应用程序上使用过这个选项,但是可能比较慢(他们不允许在许可中进行性能基准比较)关键是用最大(非EDS)RAM选择一个部分,~16Kif您选择一个EDS部分,然后有更多的参与在上下文切换和ISR中是ed的,但是这应该被更快的时钟(希望如此)所抵消。FreeRTOS说它支持E系列,但是我没有深入研究它们是如何支持的。但是它可能是值得的,我没有试过,也没有用任何RTOS标注24E部分。
2019-9-11 11:26:46 评论

举报

我想你弄错了……我引用ARM7项目只是想说我在使用RTOS(Segger)解决方案方面有一些经验。但那时我还在机器人公司工作。现在我已经缩小到一个不同的地方,不使用ARM,但是使用PIC24,我想知道我们是否还可以在平台上使用自由车。
2019-9-11 11:39:24 评论

举报

我现在正在使用PIC24FJ256GB206。它有96 KB的RAM和256 KB的闪存。我不知道你所说的非EDS,但是……你使用了哪一个芯片,在那个部分的闪存内存在多大?
2019-9-11 11:45:42 评论

举报

EDS RAM是32 K以上的RAM。
2019-9-11 11:53:57 评论

举报

我只是简单地查看了FreRotos演示段中的PIC24示例:注意它们不遵循建议:
2019-9-11 12:12:49 评论

举报

事实上,必须指出的是,当写入全端口时,它并不那么有害。
2019-9-11 12:25:42 评论

举报

看看TeNoRTOS,看看:“TeNo概述”和“我是如何结束编写新的实时内核”的。
2019-9-11 12:44:33 评论

举报

非常糟糕。他们应该用LATX代替,我猜你得到了你所付的钱。
2019-9-11 13:00:19 评论

举报

如果你可以做机器定时高优先级定时器中断例程,那么你可以做相反的方式,让机器控制主要是中断,而主回路只是免费的休息。使用40MHzdspics和pic24上的中断驱动串行,可以很容易地获得20us以下的主回路的延迟。如果你精确的机器控制在100s秒或更慢,我不会担心太多。
2019-9-11 13:15:20 评论

举报

非常糟糕。他们应该用LATx代替。我猜你会得到你付的钱。数据表的第10.1节和图10-1表明建议不适用于这个设备。
2019-9-11 13:24:04 评论

举报

非常有趣。我刚读完第二篇文章的一半。可能试着在我的硬件上实现。最关键的输出定时是通过OutputCompare实现的,所以这精确到不到1us(具有GPS时间同步)。因为它们是硬件的,所以我可以让中断设置下一个周期通过RTOS来处理。但是现在我有一个硬件中断设置为高优先级,用于同步GPS PPS信号,并且为了获得高精度,我计算了延迟+ISR执行周期,直到在ISR的时间偏差调整完成。然后用FCY时钟计算从内部时间和GPS PPS计算出的差值,并将其作为OC定时器设置的时钟频率调整项。此中断不能受到任何其它因素的影响。这是可能的吗?当有GPS信号时,每秒发生一次。
2019-9-11 13:32:39 评论

举报

以什么方式?该图表显示PORTx的读数获得管脚上的状态,而写到PORTx则改变锁存器的状态(与其他PIC一样)。因此,如果您有效地将从管脚读取的状态复制到LATx寄存器中,从而销毁可能存在的任何东西。
2019-9-11 13:38:55 评论

举报

如果我记得正确的话,我在24H210上做了FRIERTOS线程度量基准。那是很久以前的事了。很难说,因为它很大程度上取决于基于队列、互斥体、信号量、邮箱、光纤、内存池的配置,……我使用了24H310,然后是310A。RAM是杀手,因为每个线程都必须有一个栈,该栈必须保证所有嵌套中断(最坏的情况)能够将上下文推送到当前线程栈上。(除非您使用光纤或协同例程)并且您希望使用单个ISR优先级,正如您希望使用速率单调分析建议的不同线程优先级一样。每个RTOS执行上下文切换的方式都不同,但我记得少于3us。
2019-9-11 13:48:46 评论

举报

好,这里有几层“这绝对必须发生”:我首先要提到人们经常忽略的一个:让另一个微控制器来处理它。如果你真的想绝对确定某些事情发生了,“分层核心”架构可以工作,其中一些8位确保数据被收集,然后16位向他们询问。你是。例如,PICS可以再次中断,而他们在ISR中,如果你重置GIE。你最好擅长ASM。如果你知道某件事在某个时间会发生,你也可以禁用所有其他中断,或者禁用中断,并轮询它的来源。正如前面所提到的,这种类型的项目可能通过聪明的ISR范例来更好地处理。现在发生了什么。
2019-9-11 14:05:22 评论

举报

但唯一真正重要的是这个GPS PPS同步。它的作用是,它从UTC中第二个真正提示的时间和软件认为它在CPU上提示的时间计算一个增量。或者一个精确的时间。只要FCY用的水晶不冷不热,三角形本身就应该保持一段时间。虽然这种情况发生得很慢。所以我唯一需要控制的就是这个H/W PPS中断,我可以把它设置为一个高值,对吧?
2019-9-11 14:24:28 评论

举报

只有小组成员才能发言,加入小组>>

54个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /10 下一条

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