问题标签 [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 回答
185 浏览

c - Display on 7-SEGMENT

I'm writing a code that displays temperature on the following 7 SEGMENT LCD:

LCD-H301C31TF Datasheet

I'm using PIC24FJ64GA006 Micro.

I can only use PORTB[13:6], PORTD[0:7], PORTE[0:7] port pins.

Can you help me find more elegant way to replace the following code?

Thanks!

0 投票
1 回答
770 浏览

mplab - PIC24F eeprom 和 XC16 MPLAB

谁能告诉我为什么在 XC16 MPLAB 中使用此代码时会出错?PIC24FJ64GA004

错误:此目标不支持空间(eedata)

对不起初学者的问题。

0 投票
1 回答
427 浏览

c - PIC24F16KA102 上的 Timer1 不工作

我想配置PIC24F16KA102的timer1来计数。时钟源必须是 8 MHz 的内部时钟。我配置了寄存器 T1CON 并将 TON 位设置为高电平以启动定时器。Timer1 设置为每 100 us 溢出一次,然后在一段时间内我将增加变量计数。我不明白,因为 timer1 不起作用,我观察到它没有增加。为什么?

0 投票
0 回答
878 浏览

i2c - PIC 24F I2C 从机问题

作为 I2C 从机的 PIC 24F 在向主机发送多个数据字节(主读取)时存在锁定问题。

PIC(特别是 24FJ128GB202)作为 I2C 从机接收数据(MASTER WRITE)工作完美,通过了所有单元测试。(仅地址,地址和寄存器,地址寄存器单数据和多数据自动递增)

我的从代码可以只处理地址并读取单个字节。它挂在从主机进行的多次读取(自动增量)上。

我使用Microchip 应用笔记作为我的代码的基础,并查看了 Code Composer 生成的代码。

初始化:

中断写:

中断读取:

Code Composer 为从属操作生成的代码非常相似,并且具有相同的问题。

我的主要问题是如何处理来自主机的多次读取,而不仅仅是在这个读取函数中处理的单个字节。它应该涉及检查 I2CSTATbits.ACKSTAT,但我不清楚该位的时序,因为它应该在字节进入寄存器后 9 个时钟发生,但没有位指示该时间点。任何指导表示赞赏。

0 投票
2 回答
102 浏览

mplab - MPLAB 中的文件类型 mainp24f.c 在哪里?

我刚刚开始(再次!)用 C 语言编程 16 位微控制器,学习飞 PIC24

自从我上次使用 MPLAB 以来,它发生了一些变化!

我要做的第一件事就是安装 C30 或 XC16 编译器。我安装了 XC16 编译器,不久后我得到如下指示:

从 MPLAB X 主菜单中,选择: File> NewFile...

  1. 选择文件类型:在类别面板中,展开 Microchip Embedded 文件夹并单击 C30 编译器。在文件类型面板中选择 mainp24f.c 类型。

唯一的选择是main.c

我从这里 ( https://www.microchip.com/development-tools/downloads-archive )安装了 C30 编译器,但仍然只能看到该main.c选项。

我究竟做错了什么?

0 投票
1 回答
133 浏览

uart - PIC24H Uart 仅发送正确的 4 位 - 需要拆分

我正在使用 explorer16/32 evb 并尝试将数据发送到 UART。我尝试了带中断和不带中断的 UART1、UART2 并且一直遇到同样的问题。
看来,为了发送 1 个字节,我需要用移位将它拆分为两个 4 位

代码:

如果我将数据拆分为 4 位,我可以在 PC 上看到正确的数据(c# 串行端口应用程序),但不应将其拆分为对 U2TXREG 的两次写入。

我不是 100% 确定 FCY 是 16000000,但这是给我合理结果的唯一值。

可能是什么问题呢?

0 投票
1 回答
285 浏览

pic - 我在哪里可以找到关于 SPI2STATbits 的文档?

我最近在以下函数中遇到了 spi2statbits:

我将上述内容与 PIC24FJ128GA010 项目结合使用。

我一直在四处寻找有关 SPI2STATbits 的更多信息,但没有找到实际的文档。我认为这是一个相当基本的要求。

有人可以指导我找到正确的文档吗?

0 投票
1 回答
126 浏览

vhdl - PIC24 符号扩展指令

如何在 VHDL(ALU 中)为 PIC24 实现符号扩展指令?我需要实施以下说明,但我不知道如何实施 SE。

这是 pic24 手册中的 SE

0 投票
1 回答
257 浏览

timer - 定时器精度和中断

我有一个 PIC24F Curiosity Board (PIC24FJ128GA204),我正在尝试使用 TIM1 获得准确的第二次计时。作为源,我使用的是辅助振荡器,它使用 32678 kHz xtl。

定时器配置了32个周期,对应1毫秒

因此,每 1 ms 调用一次以下中断,其中 ms 的计数存储在 uint32_t 变量中

在主循环中,我对 tmr1_obj.count 变量进行了繁忙的等待,当它达到 1000 时,在 UART 中发送一条消息。

在 UART 的另一端,我有一个应用程序,它读取消息并记录收到消息的时间以及相对于前一条消息的毫秒差异。

问题是我为每条消息累积了约 8 毫秒。

怀疑它可能与 UART 传输经常中断有关,我尝试每 10 秒而不是 1 秒发送一次消息。延迟一直累积到每 10 秒约 80 毫秒。

最后,32 个滴答声可能不对应于 1 毫秒,而是对应于 1.x 毫秒。为了测试我把周期改成了32768,也就是1秒。我预计结果大致相同,但事实并非如此

似乎周期会影响计时器的准确性。我不明白怎么做。是不是每次中断都会丢失一些微秒?我在数据表上没有看到任何内容,但我找不到任何其他解释。

0 投票
0 回答
50 浏览

microcontroller - SCPI_ParamString 多个字符串作为输入

我正在使用 SCPI 命令库,即 SCPI_ParamString。我试图实现的函数接受 2 个字符串和一个整数作为输入。为了验证我的代码是否正确读取输入,我只需将输入打印回给我(一旦我确信我使用了正确的字符串,我会将这些传递给函数)。

我发现我的代码没有将逗号识别为两个输入之间的分隔符。它将所有 3 个输入打印为第一个字符串。有趣的是,当我要求它打印第二个输入时 - 它识别出逗号在第一个和第二个输入之间划定。所以它只打印第二个和第三个输入(不将第二个和第三个之间的逗号识别为分隔输入。

我正在使用 MPLABX IDE v3.15 在 C 中的 PIC24 上进行编码。

下面是我的代码,后面是示例输出。

和示例执行:

请注意,当我打印第一个输入时,实际上打印了所有 3 个输入,而当我打印第二个输入时,实际打印了第二个和第三个输入。

我已经尝试了一些不同的方法来解决这个问题 - 没有一个奏效。