问题标签 [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.
c - Microchip PIC24F单片机的SPI增强缓冲模式如何正确接收数据?
我正在编写与外部射频芯片的 SPI 通信。微控制器是 Microchip 的 PIC24FJ64GA102 型号。
我想使用SPI的增强缓冲模式。
问题:从接收缓冲区中获取接收到的字节。
用到的SPI功能:
这里的电话:
通信很好,用示波器和 SPI 解码模块检查。SPI 总线上的数据就像上面的注释一样: send 0x02 0x01 0xff 0xff
, received 0x00 0x00 0x05 0x01
,但是上面的函数没有正确地从接收缓冲区中检索数据。我已经测试了很多检查标志和中断的星座,但最终我能得到的最好结果是:(0x00 0x01
只有最后一个字节是正确的)。
还检查了勘误表,其中提到了两个不(不应该)影响我的代码的 SPI 问题。
我到底做错了什么?!
如这里所要求的 SPI1_put() 函数:
[最新编辑:2015-02-05]
所以今天我能够在这个特定问题上花更多的时间,并提出了 ElderBug 建议的一个端口,同时处理了勘误表中提到的错误:
这段代码基本上可以工作。除了我无法解决的例外:
通信工作如下:
- 1字节:读/写位+长度
- 1字节:地址
- 1-127byte:数据
因此,当我从从芯片读取 1 个字节,即发送 3 个字节(rw+len、地址、dummybyte)时,in_buf
缓冲区中的数据为 0xFF。现在发生了一件奇怪的事情:当我只读取一个字节,而不改变任何东西(总线上只有一个虚拟字节)时,我的第一个字节in_buf
得到了正确的数据。但这似乎并不总是有效,因为我的程序仍然卡在某些点上。
我留下了很多问号。
奇怪的第二件事:读取 8 个字节,数据在我的缓冲区中正确,直到最后一个字节,最后一个字节是 0xFF,应该是 0x00。什么?
PS:已经在 Microchip 提交了一张票,以获得此问题的支持。
c - PIC24 读取 ADC 错误
我试图让 PIC24 与 ADC 转换器一起工作,使用电位计作为音量旋钮,但为此,我需要读出 ADC,代码不允许我构建。见问题底部。接线正确。
MPlab 在 main.c 中没有显示错误,但是当我构建项目时,user.c 中出现了一些错误。
我将 PIC24FJ64GB002 连接在带有一些按钮和 mdog 显示器的板上。
主程序
用户.c
构建时记录:
pic - 如何使用 24 位(任何 24 系列)pic 微控制器开始编程?
我已经用 8 位微控制器对图片进行了编程。谁能建议我参考手册,24位系列的示例代码......?
pic24 - 32.768 Secondary Oscillator for PIC
I am using a 32.768Khz sec oscillator with the PIC24fj64ga002 to make use of the RTCC of the PIC. So far my RTCC code is working but I am not able to get my oscillator to work properly. I used an alarm of 1 minute to toggle an led using RTCC but I am getting the RTCC interrupt at around 13sec and thus some error. For the secondary oscillator I have connected it in the required pins of the PIC and enabled it using " OSCCONbits.SOSCEN=1;". Do I need to do anything more to make the sec oscillator to work. I checked the oscillator using a logic analyser but I am not getting any signals. But my led does toggle though the interval when set for 1 minute is giving me only 13 seconds. Even when I test my RTCC code the seconds and minuted seems to be updating at a far greater pace. Please tell me if I should paste my RTCC code. Do tell me if I need to make any changes for setting the Sec oscillator other than the one I had mentioned.
embedded - PIC24 SPI 主机模式 - 从机选择的生成?
作为SPI 主机运行的PIC24可以直接在硬件中生成从机选择信号吗?我知道帧同步功能,但是,它只在帧开始时生成一个脉冲,而不是在整个帧中都处于活动状态的片选。
如果没有,还有哪个控制器可以做到这一点?
c - UART 缓冲区未在 PIC24F 上引发标志
我正在使用 RN42-XV 蓝牙模块将字符从计算机发送到 PIC24F。模块连接/配对正确,发送的字符也正确(使用示波器)。
这是它的初始化方式:
我也在使用这个函数来获取缓冲区的内容:
问题是程序永远不会进入函数 waitForChar() 内的 while 循环,因为硬件永远不会引发 UART 中断标志。我尝试了不同的 PIC24F,但都遇到了同样的问题。
math - 0xABCD - 0x1234 是否应该设置进位位?
当我在这里遇到这个问题时,我正在准备期末考试:
看完后,我得到了0x9999的答案,因为当你通过2的补码进行减法时,MSB上有一个进位,所以分支指令会将程序发送到loc1。我的教授说答案是 0x9997,这只有在未设置进位位时才有可能。我查了一下,似乎应该在这里设置进位位。我错过了什么还是我的教授犯了错误?
usb - 是否有将 PIC24f 入门套件用作主机串行仿真器的示例程序?
随套件发送的 USB 主机示例仅用于读取文件,不发送/接收串行数据。我搜索了 Microchip、论坛和谷歌都无济于事。我相信你们中的许多人都知道微芯片 USB 库是出了名的困难,我一直无法取得任何可衡量的进展。我尝试了 microchip USB 配置实用程序,但遇到了错误,而且对它的工作原理没有更好的理解。举个例子,即使是一个以 PIC 为主机的简单字节回显程序也足以让我继续前进。
修订:让我把事情弄清楚一点。大局 - 我正在尝试使用 PIC24F 入门套件与 TI 的 TRF7960A EVM 板通信。TRF7960 板是通过 USB 端口进行通信的 RFID 阅读器。我需要能够向它发送字符串命令,例如“0109000304F0000000”,然后从 TRF7960 接收类似的消息。这就是为什么我需要能够让 PIC24F 作为主机运行并发送串行数据的原因。当我提到“串行仿真器”时,我可能会用词不当,但我不知道还能叫什么。希望这可以帮助...
Revision2:PIC 为主。我将在开机时初始化 RFID 阅读器。当 RFID 标签在范围内时,RFID 阅读器将通过 USB 异步发送数据。数据将是表示来自 RFID 芯片的 UID 的字符串。该程序必须检测 USB 流量并中断处理它。我想我可以轮询数据,但我担心我会错过它。然后,我将获取这些数据并根据其他输入决定要做什么。如果示例将数据放在 LCD 上,那就太好了,这样我就可以验证该步骤是否正常工作。PIC 还将读取其他输入,例如按钮按下、PWM 和 A/D 通道。我将收集所有数据,然后通过 SPI 或 UART 定期将其输出到无线电。
再次...非常感谢。
uart - PIC24FJ128GA010 Uart 不工作
我在 explorer 16 板上使用上面提到的 pic 控制器。我正在尝试配置 UART,但它不起作用我的代码看起来像这样。
上面的代码不起作用。我只在我的主文件中初始化配置位和 Uart 初始化函数。寻求帮助。
问候 Sanket