问题标签 [microchip]

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 投票
15 回答
9763 浏览

c - Pic18 micro最好的c编译器是什么

我们正在开始一个基于微芯片 PIC18F252 的新项目。最好使用的“c”编译器是什么?

0 投票
6 回答
8817 浏览

embedded - 如何在 C 中重置 PIC18?

使用 C 代码和 HiTech Pic18 C 编译器重置 PIC18 的最佳方法是什么?

编辑:

我正在使用

但必须有更好的方法

0 投票
3 回答
6658 浏览

memory - 如何在 MPLAB 中增加内存块的大小?

Microchip PIC MPLAB (MCC18) 编译器将其内存分段为 256 个块 (0x100)。

如何创建大于 256 字节的数组?

为了达到 256,我需要用一个单独的段#pragma

所以我可以强制 MCC18 分配更大的缓冲区吗?还是结合两个内存段?

0 投票
2 回答
2597 浏览

embedded - 我可以在不重置电路板的情况下重置 Microchip 的 TCP/IP 堆栈吗?

我在 8 位微控制器上使用 Microchip 的免费 TCP/IP(4.55 版)堆栈。

我正在尝试在不使用 asm("RESET") 进行全板重置的情况下重置堆栈。

关于如何重新启动此堆栈的任何想法。

更新

我通过以下步骤重置堆栈

  1. 将复位引脚切换到 Microchip 以太网芯片上
  2. 调用 StackInit();
  3. 手动重置 UDP 通告状态机

这似乎从我遇到的致命 SPI 错误中恢复过来。

0 投票
8 回答
4610 浏览

embedded - 微芯片链接器问题

当我尝试在 MPLAB 中构建我的项目时,我收到了此构建错误消息..

我检查了链接器库的路径是否正确。我怀疑它与我的源代码有关......非常感谢任何帮助。

这是我的源代码.. http://cl1p.net/mplabc18

0 投票
11 回答
4664 浏览

embedded - 使用定时器计时会中断嵌入式微控制器

这个问题是关于在没有操作系统的情况下对小型微控制器进行编程。特别是,我目前对图片感兴趣,但问题很笼统。

我已经多次看到以下模式来保持时间:

定时器中断代码(比如定时器每秒触发一次):

主线代码(非中断):

主线代码可能会重复,将计数器设置为各种值(不仅仅是秒)等等。

在我看来,当sec_counter主线代码中的分配不是原子的时,这里有一个竞争条件。例如,在 PIC18 中,分配被转换为 4 个 ASM 语句(同时加载每个字节并在此之前从存储区中选择正确的字节)。如果中断代码出现在中间,则最终值可能已损坏。

奇怪的是,如果分配的值小于 256,则分配原子的,所以没有问题。

我对这个问题是否正确?您使用什么模式来正确实现此类行为?我看到几个选项:

  • 在每次分配给 sec_counter 之前禁用中断并在之后启用 - 这并不漂亮
  • 不要使用中断,而是使用一个单独的计时器,该计时器启动然后轮询。这是干净的,但会用完整个计时器(在前一种情况下,1 秒触发计时器也可以用于其他目的)。

还有其他想法吗?

0 投票
1 回答
3061 浏览

delphi - 如何使用 Delphi 2009 调用 Microchip PIC USB DLL

这不是一个问题,只是一个声明,以帮助任何可能花费数小时让 Microchip PIC USB DLL 与 Unicode 正常工作的人。

它需要几个字符串,虽然这些很简单PAnsiChar,但获得 DLL 调用约定的正确组合却花了我很多时间。网上有很多人使用带有此 DLL 的 Delphi(非 Unicode)并逃脱谋杀。

0 投票
2 回答
1933 浏览

enums - C18 编译器 typedef 枚举数据大小

我正在尝试移植代码以使用 Microchip 的 C18 编译器为 PIC 微控制器进行编译。该代码包括分配了大值(> 8 位)的枚举。它们工作不正常,说明例如 0x02 与 0x2002 相同。

如何强制将枚举值引用为 16 位值?

0 投票
13 回答
85132 浏览

c - 将 ASM 转换为 C(不是逆向工程)

我用谷歌搜索,我看到大量轻率的回答基本上是在嘲笑提问者提出这样的问题。

Microchip免费提供一些源代码(我不想在这里发布它以防万一。基本上,谷歌AN937,点击第一个链接,有一个“源代码”链接及其压缩文件)。它在 ASM 中,当我看到它时,我开始对视。我想将其转换为类似于 ac 类型语言的东西,以便我可以跟进。因为诸如以下的行:

可能很简单,但它们对我来说毫无意义。

那里可能有一些自动 ASM 到 C 的翻译器,但我能找到的只是人们说这是不可能的。坦率地说,它不可能是不可能的。两种语言都有结构,而且这种结构肯定可以翻译。

0 投票
3 回答
2799 浏览

c++ - 从 C++ 程序访问 ASM 文件中的函数?

在这里,我询问了将 ASM 文件翻译成 C 的问题,从回复来看,似乎没有合理的方法可以做到这一点。美好的。因此,其中一个回复建议我只是按原样使用这些功能并完成它。听起来不错。

但是怎么做?

天哪,我已经尝试了我能想到的一切!我使用的是 Microchip 品牌的 MCU (PIC18F4480) 和 Microchip 品牌的 IDE (MPLAB IDE),ASM 文件是 Microchip 创作的……所以你会认为我会找到一些使用它们的方法!到目前为止,一点运气都没有。

我对 ASM(汇编)一无所知。我用 C++ 编写代码,坦率地说,这不会改变。必须有一种方法可以访问 Microchip ASM 文件中的函数,而无需用新语言重写我的所有代码。

如果有人想看一看,ASM 文件和应用说明在这里