问题标签 [pic]

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 投票
3 回答
10788 浏览

assembly - Writing to EEPROM on PIC

Are there any PIC microcontroller programmers here?

I'm learning some PIC microcontroller programming using a pickit2 and the 16F690 chip that came with it. I'm working through trying out the various facilities at the moment. I can sucessfully read a byte from the EEPROM in code if I set the EEPROM vaklue in MPLAB but I don't seem to be able to modify the value using the PIC itsself. Simply nothing happens and I don't read back the modified value, I always get the original which implies to me that the write isn't working?

This is my code for that section, am I missing something? I know I'm doing a lot of unnecessary bank switches, I added most of them to ensure that being on the wrong bank wasn't the issue.

0 投票
1 回答
4447 浏览

usb - USB HID 协议问题

我正在使用通用 HID 接口在 PIC 18F2550 上实现 USB 。我已经将 HID 配置文件配置设置为输入和输出都有一个 64 字节的消息。

现在它基本上可以工作了。设备向 Windows 注册 OK。我可以在 PC 上的程序中找到它,并且可以向它发送和接收数据。但问题是——从 PC 到 PIC 的消息被截断为 EP0 端点缓冲区的大小。

在我进一步调试之前,我想在这里澄清我对 USB 协议的理解,并检查我是否做对了。

假设 EP0 输入缓冲区为 8 个字节。我的理解是PC端会发送一个8字节的控制包。其中有要遵循的数据的字节长度。然后它将发送一系列 8 字节数据包,PIC 端必须确认每个数据包。

据我了解,PC端通过查看设备描述符中的最大数据包大小字段知道每个数据包可能有多大,并将相应地将消息分成多个数据包。

在我在代码中寻找更多时间之前,任何人都可以确认这基本上是正确的吗?如果 EP0 缓冲区大小为 8 字节,那么 PC 应该知道这一点,因为我上面提到的配置字段并发送多个数据包?

如果我在 PIC 上设置 64 字节的接收缓冲区,那么我会得到 64 字节的消息,这足以满足我的需要,但我不喜欢不理解为什么它不适用于小缓冲区,总有一天我会可能无论如何都需要它们。

欢迎任何建议或信息。

0 投票
2 回答
768 浏览

embedded - 计算微控制器板载 ADC 的最大物理速率(奈奎斯特性能限制)

我正在尝试评估集成在各种 PIC 微控制器上的 A/D 的最大物理速率(奈奎斯特性能限制)。

但是,要进行计算需要我在数据表中没有明确说明的参数,特别是 Tacq、Fosc、TAD 和除数参数。

我已经进行了一些假设,但进行健全性检查会有所帮助——我是否正确地进行了最大物理速率计算?

仅出于说明目的,我采用了具有 ADC 的最简单的 PIC10F220。这是为了特别关注 Tacq、Fosc、TAD 和除数参数的解释,而不是建议在这个非常基本的芯片上可以实现任何实际功能。(这是克利福德在下面评论中的观点。)

计算

所以:

假设在下一个样本之前实时完成了 10 条简单的加载/存储/阈值指令(这只是一个存根——重点是计算的其余部分):

这意味着该系统的(理论)性能——带有假设实时处理代码的芯片 A/D——适用于带宽限制为 28 kHz 的信号。

在获取 Tacq、Fosc、TAD 和除数参数并使用它们来获得该芯片的最大物理速率或 Nyquist 性能限制时,这是对数据表的正确分配/解释吗?

谢谢,

0 投票
5 回答
478 浏览

microcontroller - 图片问题..~

我目前正在我国家的一所当地大学攻读软件工程课程。我对软件和硬件很感兴趣。所以我决定自学。我的一位前辈告诉我先从 PIC 16 或 18 开始。这里有人有相关网站的链接吗?除了 ebay,我在哪里可以得到一个设备来对 PIC 进行编程?提前谢谢。

0 投票
1 回答
7643 浏览

assembly - 是否有任何工具可用于将 PIC 16F877A 的 ASM 转换为 C

我想将 ASM 文件转换为 C 程序。有没有可用的工具。我的意图是将 PIC 16F877A 程序的汇编程序转换为 C 程序...

0 投票
3 回答
965 浏览

microcontroller - 8051微控制器套件推荐?

我是一名计算机科学专业的一年级学生,希望开始开发微控制器。我想用8051,因为它很常见,在现实世界中也经常使用。

在我大三或大四的时候,我将参加一个基于 PIC 微控制器的嵌入式设计课程,所以我现在宁愿不做 PIC;否则,我在那门课上会很无聊。

我看到的大多数商业套件都是用于 AVR 或 PIC 系列微处理器的。我只是在寻找具有体面的开发工具、文档和足够的附加组件的东西,以让我的新手在夏天保持忙碌。

对 8051 系列套件有什么建议吗?谢谢!

0 投票
3 回答
1639 浏览

embedded - 需要 PIC 反汇编程序

我想反汇编PIC16F877A的十六进制文件。有什么好的反汇编程序吗?反汇编后是否可以再次编译?我需要照顾哪些事情?

0 投票
4 回答
2288 浏览

microcontroller - 微控制器到微控制器 SPI 通信

我正在阅读,甚至在我的微控制器上得到了一个“主”SPI。这是我的问题,基本上如果主机想要初始化写入我们写入 SSPBUF 的从机,我们如何控制从机响应什么?在这种情况下,数据表对我来说似乎并不清楚事件的顺序。

IE Master 将一个 char 放入 SSPBUF,这会启动 SPI 模块向从机发送数据,在移位期间,从机返回一个字节。

在从端,有没有什么东西告诉你有传入数据,你可以先写入你的 SSPBUF,然后接受数据?

或者

在主设备有机会发起传输之前,您是否必须向 SSPBUF 写入您想要发回的第一个“返回值”?

0 投票
1 回答
7045 浏览

pic - 使用微芯片 c18 编译器在 pic18f 上创建大缓冲区

使用带有 pic18f 的 Microchip C18 编译器,我想在程序数据空间中创建一个 3000 字节的“大”缓冲区。

如果我把它放在 main() 中(在堆栈上):

我有这个错误:

如果我把它放在全局中,我有这个错误:

如何创建一个大缓冲区?你有关于如何使用 c18 管理 pic18f 上的大缓冲区的教程吗?

0 投票
3 回答
691 浏览

microcontroller - 与 Pic 16F913 通信

这是我的问题,PIC 16F913 的所有通信线路似乎都位于同一组引脚上,这很方便,因为我不必为了通信而牺牲 GPIO 引脚,但是我遇到的问题现在是如果我在芯片上使用 SPI,我怎样才能将信息发送到 RS232?

出现这个问题的原因是我刚买了一个通过 SPI 通信的 CAN 总线芯片,我很想看到 RS232 上的数据,所以我可以看到消息。(我真的对 CAN 了解不多,所以谁知道这是否有意义)。

这是我看到的选项,也许其他人有更好的想法,而我只是错过了。

  1. 不知何故设置了一个时间方案,每次我获取数据时都会在 SPI 和 RS232 之间切换,

-- 这似乎并不难,应该可以工作,但是假设我不想错过一条消息,如果我在写 RS232 时写了一条消息,我会不会错过它?

2 ..我总是可以使用 SPI,但是然后通过 8 条 GPIO 线构建我自己的通信总线,到另一个 PIC 16F913,只使用 GPIO 线,然后由于 RS232 线在第二个 PIC 上是空闲的,我可以简单地读取数据并吐出。

-- 这个是可行的,但现在我们浪费了 2 个芯片和所有的 GPIO 线,

一定有更好的方法。或者有吗?

任何帮助是极大的赞赏。

更新:我想澄清一下,显然一种解决方案是使用完全不同的芯片(如果我可以对 18F 进行编程,这实际上可能是我最终要做的),但是,我对最坏的情况感兴趣,在我资源有限,只有一些913,上面描述的方法是用这个芯片做的唯一方法,还是有更好的方法?