问题标签 [pic24]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1968 浏览

c - pic24f 尾随 UART 帧错误

从我的 pic24f 发送每条消息后,我都会收到一个帧错误。消息多长时间或我发送多少条消息都没有关系。在我的情况下发送最后一个字符('\0' 或 0x00)后,我收到一个帧错误,我不知道为什么。我认为这是一个波特率问题,但无论消息长度如何,这都会导致在同一位置或附近出现异位采样,从而导致此时出现帧错误。不是这种情况。错误发生在发送最后一个字符之后。在此处输入图像描述

这是初始化代码:

这是传输代码:

链接到 salae 逻辑捕获:

0 投票
1 回答
888 浏览

pic - adc p24f16ka101 错误值微芯片

我对微芯片技术的 pic p24f16ka101 的 adc 有问题 http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en539798

我预计断点处的值为 0,但有一个增长的值,稳定在 900 左右。AN2(RB0)引脚直接接地,vref+ vref- 连接到 vdd,vss 与 pic alimentation 相同。

我是新手,我不知道我错了什么

这是我的配置

0 投票
3 回答
351 浏览

multitasking - PIC24 中的多任务处理

我有一个基于 PIC24 的系统,配备 24 位、8 通道 ADC(谷歌 MCP3914 评估板了解更多详细信息......)。我已经让电路板对所有 8 个通道进行采样,将数据存储在 512x8 缓冲区中,并在缓冲区已满时使用 USB 模块将数据传输到 PC(由不同的中断完成)。

唯一的问题是,当 MCU 正在传输数据时(UART 传输中断的优先级高于 ADC 读取中断),ADC 没有采样数据,因此会出现数据丢失(采样率约为 500 采样/秒)。有什么办法可以防止这种数据丢失?也许一些多任务处理?

0 投票
1 回答
259 浏览

i2c - Microchip PIC - 灵活的芯片间通信总线

我正在设计灵活的模块-模块总线。

基本上,每个模块都有一个可能属于 PIC24 / PIC32 系列的微控制器。

总线将通过 RJ11 连接器运行,并且必须便宜。

它需要以下功能: - 没有主/从配置,但有仲裁(如 CAN) - 自动寻址 - 可以翻转的 2 或 1 根线 - 正确的数据速率。

最初的想法是使用带有第三条线路的 I2C 总线进行寻址。虽然出于布线的原因,如果总线交叉并且 I2C 微芯片模块在引脚上有硬位置,总线应该支持重新分配线路。

SPI 显然不是解决方案。CAN模块可以工作,但8字节的限制和收发器的需要很烦人。LIN 需要主控。

现在我正在寻找一种方法以某种方式使用具有环回模式的 UART 模块,因为 PPS 可以重新分配引脚。

另一种解决方案是从头开始创建总线并对所有内容进行编码,但这会很耗时。

有什么经验和解决办法吗?

谢谢

0 投票
0 回答
960 浏览

c - PIC24F EDS 阵列导致地址陷阱

嗨,我正在使用 PIC24fj128gc006。我的数据内存用完了,所以我尝试使用 EDS 空间分配一些缓冲区。这里是我的报关表:

我将它作为参数“ eds float *staticBuffer”传递给此方法

但即使在程序到达 main 之前(我在 main 之后设置了一个断点,它永远不会到达那里),我得到了一个地址陷阱。我getErrLoc()在地址陷阱中断中使用。

在调试模式下,返回的 errLoc 是 0x0256,这甚至不是我的程序内存的开始,我可以说它是 SFR 吗?

在我的地图文件中:

为什么在我的 SFR 中使用 EDS 会导致地址错误?

这是我的地图:

这是 EDS 空间中数组的地址

请解释为什么会这样。任何帮助,将不胜感激。谢谢!

我使用模拟器创建了一个新项目只是为了隔离问题

同样的事情发生了,地址陷阱发生在 errLoc = 0x0258 时,它发生在 main 进入之前

我很困惑有人可以为我澄清一下吗?根据我正在使用的设备表http://ww1.microchip.com/downloads/en/DeviceDoc/30009312b.pdf,我的芯片有 8k 数据 ram,但在第 47 页上,8k 数据 ram 是从 0800h 到27FEh。根据该页面,我仍然有从 8000h 到 FFFFh 的 EDS 内存,我可以将其用于缓冲区,对吗?所以我很困惑,我是否被限制为 8k 数据内存?或者我可以使用 8000-FFFFh (EDS) 的 Ram 吗?

如果我不设置 eds 的地址,只允许编译器为我决定,

eds int array[2000]属性((space(eds)));

它把它放在

0x1860 _array

这甚至不在从 8000h 到 FFFFh 的 eds 空间中,我在这里有什么严重的误解吗?

0 投票
3 回答
666 浏览

c - 我想了解使用 pic24 eds 的语法

我特别想了解上面的语法(该程序适用于 pic24 和 C 语言)__ramspace[0x100]。有谁能够帮我?

0 投票
3 回答
1362 浏览

pic - 如何将十六进制文件刻录到图片?“硬件”

晚上好 ..

我是微控制器的新手..

我已经学习了一门关于“pic 16”的课程,据我所知,pic16 需要一个外部设备才能在 rom 中刻录 hex 文件。

现在我想研究 pic24 我在 pic24 中发现了一个叫做 usb 的东西 ..

我可以在没有外部设备的情况下通过 USB 刻录 hex 文件吗?或者这是另一个与刻录 hex 文件无关的术语??

有没有办法在没有额外设备的情况下刻录文件?

还有在 pic32 中是否有任何类型的它可以不使用 kit3 直接连接?

我不想买 kit3 :\

kit3可以编程各种pic微控制器(16、24、32)吗?

抱歉延期

非常感谢你

0 投票
1 回答
1320 浏览

internal - 读写内部 EEPROM PIC24F16KA101 出现问题

我正在尝试与 PIC24F16KA101 MCU 的内部存储器进行交互。在阅读了项目中使用的数据表和本网站上的讨论(提供了非常有用的示例代码)之后, 现在如果我将代码放在程序下面,那么程序就可以正常工作了,因为我能够成功读取与我相同的值之前写过。但是,如果在写入后我拔下 MCU 并仅读取 EEPROOM,它不会返回写入的值。这里可能是什么问题?为什么我可以写入然后读取成功但断电后无法读取?在此先感谢大家的帮助达米安

0 投票
1 回答
2140 浏览

mode - PIC24 SPI 主机拒绝接收时钟生成

我有一个带有 µC PIC24FJ256GB106 的 MPLAB 入门套件板,通过 SPI 在 3 线 SPI 连接(未使用 SDO)中与连接的加速度计芯片 ADXL375 板通信(这似乎不是我的问题的原因)我配置了外设引脚选择激活 SPI 模块 1:

SPI 配置为:

恕我直言,无法建立 SPI 传输和接收之间的不对称行为。

中断处理程序是:

然后我传输了一个数据字节

我可以和时钟一起在示波器上观察。可以触发接收数据(我在这里省略了状态标志检查!)

无论是单次操作还是无限循环,信号线上都没有 CLOCK!

我将我的代码嵌入到演示应用程序的适当位置,这应该不会干扰我的问题。
我尝试了很多带有延迟、生产者、社区的示例代码等的东西。
在调试会话中,没有观察到异常的寄存器值(SPI 错误标志)。
从电子设备的分离对行为没有影响。

这是 PPS 问题吗?

我偶然发现了制造商的 SPI 描述。
在文档PIC24FJ256GB110 系列数据表15.0 节串行外设接口 (SPI)中写道
“SPI 串行接口由四个引脚组成:
SDIx:串行数据输入
SDOx:串行数据输出
SCKx:移位时钟输入或输出
SSx:低电平有效从选择或帧同步 I/O 脉冲
SPI 模块可配置为使用 2、3 或 4 引脚工作。在 3 引脚模式下,不使用 SSx。在 2 引脚模式下,不使用 SDOx 和 SSx 。”
我同样的文件是 64 针芯片 PIC24FJ256GB106 的引脚排列,它只有一个 SPI 数据信号称为 SDA1,物理上位于引脚 nr 43。
如何使用该芯片实现 3++ 线 SPI 解决方案?

如上所示,我使用 PPS 命令映射了这个信号和 SPI 时钟,参考 表 10-3: 可选择的输出源(将函数映射到输出):使用代码 7 的
函数SDO1(SPI1 数据输出)和函数SCK1OUT(SPI1 时钟输出) ) 为 8。

与我的 SPI 从机的通信需要一个写读周期,我告诉他寄存器 nr,他用那个值回答我。
这个 PPS 映射是否足以完成这项工作?

输入映射呢?

表 10-2 中: 可选输入源(将输入映射到函数)是具有函数 SCK1IN
(SPI1 时钟输入)、寄存器 RPINR20、位 SCK1R(5:0) 和SDI1(SPI1 数据输入)、寄存器 RPINR20、位 SDI1R( 5:0)

我将代码行添加到 MapSPIModulPins():

我的 PIC24 SPI 模块 1 仍然没有生成主读取的时钟周期。

怎么了?

如果有人可以提供帮助 - 在此先感谢!
托马斯

0 投票
1 回答
773 浏览

c - PIC24 设置寄存器中的位

我正在使用 C 使用 XC16 编译器在 MPLABX 中为 PIC24FJ192GA106 进行一些编程。我在编译过程中遇到以下问题

问题是:

U1MODE 是在#include "p24FJ192GA106.h" 中定义的结构(文件头包含在文件中),特定结构如下

我也试过

或不同的值

但没有运气,任何想法我做错了什么?

---- main.c ----