问题标签 [progmem]

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 回答
822 浏览

c - “'char'之前的预期'=',',',';','asm'或'__attribute__'”是什么意思?AVR

'char' 之前应有 '='、','、';'、'asm' 或 '__ attribute__'

为什么我两次收到此错误消息?

0 投票
0 回答
153 浏览

c - 将 char[] 与另一个 char[] 连接

我正在使用 Arduino IDE 完成 Sketch 并能够在 UNO 上运行它,我必须使用 C char[]。这对我来说并不容易,不久前我已经问过一些关于这个的问题。

char[]我需要通过连接较小的部分来创建更长的时间。到目前为止,我已经能够通过以下方式做到这一点:

但是在我的代码中,我有很多静态字符串,它们占用了大部分 2K RAM 内存,所以我想使用 PROGMEM 所以我尝试了以下方法:

在串行监视器上打印时,第一个片段可以正常工作,而第二个则不能。

我一直在尝试谷歌它,但无济于事。

你们的任何进一步的教育将不胜感激。提前致谢!

0 投票
1 回答
159 浏览

arduino - MacOS High Sierra Arduino Mac 1.8.5 上的 PROGMEM 错误

我正在使用在 MacOS High Sierra 上运行的 MacBook Pro。

每当我尝试上传包含 PROGMEM 的 Arduino 代码以将原始 HTML 字符串(Arduino Mac 1.8.5)存储到我的 ESP 板时,就会出现问题。我使用的开发板是 ESP8266 LoLin V3。

每当我在 Web 浏览器上访问 ESP 的 IP 地址时,串行监视器中就会引发异常 (3) 。我还尝试使用适用于 Windows 的Arduino 的Windows 版本(1.8.5)上传相同的确切代码,并且网页可以完美显示。

代码:

引发的错误如下:

这里的任何人都可以使用 Mac 尝试将代码上传到您的 ESP8266 上,看看您是否遇到与我相同的错误?任何对 PROGMEM 和 ESP8266 有深入了解的人都可以帮我解决这个问题吗?

0 投票
1 回答
414 浏览

arrays - 从程序中读取字节

我正在尝试编写一个简单的程序(作为更复杂程序的前导),它将字节数组存储到 progmem,然后读取并打印该数组。我已经浏览了一百万个在线博客/论坛帖子,并认为我做的一切都很好,但我仍然得到完全的胡言乱语作为输出。

这是我的代码,任何帮助将不胜感激!

如果我使用memcpy,我会得到输出:

如果我buffer = ....在 for 循环中使用语句(而不是memcpy):

0 投票
2 回答
87 浏览

c - 将数据存储在程序存储器(PROGMEM)中并通过usb串行通信发送到puTTY屏幕

我正在尝试将数据存储在 PROGMEM 中并稍后检索它。然后通过 USB 串行通讯将它们发送到屏幕。

它只是行不通。任何提示或替代方案?干杯。

0 投票
1 回答
235 浏览

c++ - 一种避免 pgm_read 访问闪存的方法(avr 微控制器)

当您想访问闪存时,您必须编写如下内容:

我不喜欢这种访问内存的方式。我想以相同的方式访问每种类型的内存(RAM、闪存、EEPROM……)。我想写这样一个更好的东西:

我天真地尝试像这样实现:

并以这种方式进行测试:

它可以编译,但 x 中的数字存储不正确。

我该如何写这门课?

谢谢你。

0 投票
0 回答
143 浏览

c++ - 将内容从 PROGMEM 复制到 const char []

将字符串形式复制到 的最佳方法是PROGMEM什么const char[]

虽然这样的事情可能会起作用:

也许有一个使用内部initializer_listlambda 返回的对象的解决方案pgm_read_byte,类似于http://www.cplusplus.com/forum/beginner/213574/

0 投票
1 回答
329 浏览

c++ - Char 数组的问题,如何正确构造和显示它们

对于我正在共同设计的产品,我想在 LCD 屏幕上显示位图图标。受教程的启发,我创建了一个单独的 C 文件,其中包含我要显示的图标的字节数组。

当我尝试直接显示图标时,它似乎可以工作。但是当我试图间接地做这件事时——这最终会变得很重要——它失败了。

真正让我感到困惑和我想要理解的是;当我将垃圾图标(CHAR ARRAY)的数组打印到串行监视器并将其与字节数组进行比较时,假设它们表示它们正确匹配。但是当我对正确显示的图像(ICON ARRAY)执行相同操作时,我打印到串行监视器的内容与它显示的字节数组不匹配,我打印的信息甚至不一致......这怎么可能?!

我已经为此苦恼了一个星期,所以任何帮助都将不胜感激。

主文件:

位图的单独文件:

屏幕上显示的内容

左边的图像是 CHAR ARRAY,右边的图像是 ICON ARRAY。

0 投票
1 回答
229 浏览

c++ - 在 PROGMEM 中添加更多数据会中断 Arduino Mega 2560 上的 SPI 传输

我正在做一个涉及 Arduino Mega (2560) 和 Waveshare ePaper 显示器的小项目(或者我认为是这样)。

我已经让它与库(epd7in5)一起正常工作,并且我已经将两个图像添加到PROGMEM. 但是,一旦我添加了第三张图像(因此在 中添加了第三个条目PROGMEM),ePaper 屏幕就不再启动了。在库中添加一些调试表明代码卡在特定的SPI.transfer().

编辑:理论 当闪存中有太多数据时,SPI 是否可能不兼容?我读过它,64kb 是最大值。我在两张图片上略高于这一点,但在三张图片上则明显高于这一点。这可能会破坏SPI吗?如果是这样:我可以修复它吗?

我添加了下面的代码和库中SPI.transfer()失败的特定部分。

主文件

删除与 dummy3 相关的代码可确保 dummy3 数组无法编译。仅使用 dummy1 和 dummy2 一切正常。添加 dummy3 并且程序卡在epd.Init().

图像数据.cpp

我已经删除了实际的图像数据,因为它很多。两个图像产生的总闪存为 67326 字节(约占 2560 总闪存的 26%)。三个图像的总闪存为 98052 字节(约占 2560 总闪存的 38%)。头文件只包含声明。

epd7in5.cpp

我已经添加了调试功能。SendData 也包括在内并使用调试。

epdif.cpp

这是不继续的 SPI 传输部分。

该项目的串口打印如下...

因此,一旦它运行SpiTransfer,代码就会停止工作。似乎它处于无限循环中,SPI.transfer();但我不知道这将如何发生。我看不出怎么PROGMEM会干扰传输,我还有足够的闪存...

有什么办法可以解决这个问题?我需要更改 SPI 中的问题吗?还是我需要以不同的方式存储我的数据PROGMEM?我有点不知所措。

提前感谢您的帮助,非常感谢。

0 投票
0 回答
94 浏览

c - 使用带有指向 int 数组的指针的 PROGMEM 时出现问题

我的 arduino nano 驱动一个 LED 矩阵。一切工作正常。但是我的“大纲路径”对于 SRAM 来说太大了,所以我尝试将它放入 PROGMEM。现在从这个程序数组中读取值会导致完全错误的整数。我究竟做错了什么?

谢谢你的帮助!!

再见安德烈

}