This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP-EXP430FR4133:退出方法(&quot);增加方法(&quot);可用的 FRAM 内存

Guru**** 2595160 points
Other Parts Discussed in Thread: BOOST-IR, MSP430FR4133

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/724470/msp-exp430fr4133-methods-to-increase-available-fram-memory

器件型号:MSP-EXP430FR4133
主题中讨论的其他器件:BOOST-IRMSP430FR4133

您好!  

我正在尝试在 MSP430FR4133-BOOSTIR 封装的基础上执行一个项目、其中控制器能够保存多组 IR 信号/代码。 这样、我就可以在不同的设置之间切换、发送/接收相应的 IR 信号以及控制不同的家用电器。

但是、问题在于:

  • FR4133只有16kB 的 FRAM、其中一些用于变量和代码。
  • IR 代码需要:
  • 2 (无符号整型的字节)* 14 (要编码的按钮)* 255 (存储的最大时间间隔数)= 7140字节!!! 每组(即使只有2组需要14.3KB 的存储器)
  • 示例代码通过使用计时器接收、存储和重复2个"高"和"低"之间的时间间隔来存储信息-> Q1:是否有其他方法来存储此信息、从而减少所需的存储?

主要问题:如何"增加"可用于所需存储的内存?

我考虑了几个变通办法,其中一些已经尝试但失败(因此,我在这里寻求帮助):

1.将部分程序存储器移至 RAM 或闪存

这是我首先尝试做的事情之一-但我无法完全理解链接器文件上的文档。

  • 到目前为止、除了我最初在 FRAM 中的代码、常量和 PERSISTENT pragma 之外、我还能够将所有内容移动到 RAM 中、从而节省了一小部分60字节。
  • 尝试将代码移动到 RAM 会导致"program will not fit into available memory" 错误。 (根据内存分配、.text 总共约为3.3kB)
  • 尝试将常量移动到 RAM 编译但会导致 ISR_TRAPS
  • 根据其他论坛的建议、我尝试将.text 和.const 移至闪存、但 FR4133似乎没有闪存?

-> Q2:如何成功地将 部分代码(.text、.const)分区到  RAM 或闪存?

 

2.存储信息/压缩红外信息的另一种方法

起初、我认为我可以将信息减少近1/4、因为我假设255个计数是 overkill、只有 unsigned char 是存储时间间隔所必需的。  

在使用 A/C 信号进行测试后、我出了问题-不知怎么说、这两者都是必要的。

--> Q3:还有其他巧妙的方法压缩、存储或表示我没有想到的必要 IR 信息?

 

3.使用另一个 MSP430作为"外部存储"

这是一种我可以想象的工作方式、但尚未尝试过。  

--> Q4:是否可以通过 SPI 或 I2C 在2个相似的 MSP430之间通信和传输 FRAM 信息?

 

4. SD 卡 BoosterPack

最后一种选择是 overkill、可能与 BOOST-IR BoosterPack 不兼容(它占用所有公头引脚)

感谢您的提前帮助!

塞缪尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Samuel、

    让我来解决您的权变措施...

    1.将部分程序存储器移至 RAM 或闪存

    你真的不能这么做。 我不相信芯片有闪存。 您有 FRAM 和 RAM。 (虽然 FRAM 是闪存的一个很好的替代器件。) 您可以在 RAM 中运行代码、但该代码来自哪里? 调试器可以暂时将其放置在那里、直到您关闭电源。 您可以在每次启动时从 FRAM 复制它、但这不会节省任何 FRAM。 默认情况下、RAM 已用于所有运行时变量。 这是您在最大程度地降低 FRAM 利用率方面可以做的最好的事情。 .text 和.const 中的所有内容都必须位于非易失性位置。

    2.存储信息/压缩红外信息的另一种方法

    我并不完全清楚这里会发生什么情况。 默认情况下是否使用 unsigned long、并且您正在尝试将其截断为 unsigned char? 如果是、您看到的值的范围是多少? 这与空调有什么关系?

    无符号短整型(16位)是否会提供足够的范围?

    您可以对馈送计时器的时钟进行分频、以减小值的幅度。 但这会对计时的粒度产生不利影响。 也许这是可以的、值得进行折衷。

    更新了:我看到了。 从 int 下降到 char、并将阵列尺寸缩小近一半、即可达到1/4。

    3.使用另一个 MSP430作为"外部存储"

    如果您有可用的串行或并行接口、则可以执行此操作、但有更好的方法。 这就是存储器器件的用途。 您可以获取 EEPROM、闪存或 FRAM 器件、并将其连接到 MSP430以进行外部存储。 您仍需要一个备用接口来实现这一目的。

    如果您聪明、可以使用单个 SPI 主器件与存储器芯片和可能连接的任何其他器件通信。 这就是芯片选择的发挥作用。

    4. SD 卡 BoosterPack

    这似乎是过死了。 SD 卡的接口为 SPI;与使用上述存储器芯片中的一个没有太大区别。

    主要问题:如何"增加"可用于所需存储的内存?

    我认为您最好的选择是尝试将信息压缩得更严格、就像您一直在尝试的那样。 否则、您需要考虑添加外部存储器或切换到具有更多内置非易失性存储器的不同 MSP430。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Greg、

    感谢您的回复!

    我将重点询问远程可行解决方案的问题...

    2.存储信息/压缩红外信息的另一种方法

    如果是、您看到的值的范围是多少? 这与空调(空调)有什么关系?

    让我在这里解释一下红外信号的“收集”和“传输”是如何工作的(“因为我没有真正清楚地解释,对不起):

    来自 TI:

    在学习模式下接收信号时、MSP430FR4133器件使用计时器捕捉功能来记录高脉冲和低脉冲信号边沿之间的时间。 脉冲长度的序列存储在 FRAM 中、供以后在按下按钮时生成相同的信号使用。 有关学习模式软件工作原理的更多详细信息、请参阅第3.1.1.5节。 请注意、BoosterPack 上的红外接收器和解调器调谐为38kHz 载波频率。 这是许多远程控制制造商针对多种器件使用的最常见载波频率之一。 如果需要与使用不同载波的器件(例如、40kHz)进行通信、则可以使用不同的接收器和解调器器件替换该组件。

    • 我在 FRAM 中存储了2个数组、 rx_cnt  和  tx_data
    • RX_cnt [total_modes][total_codes]:  每个按钮的数组。 它计算有多少个高脉冲和多少个低脉冲。 默认最大值为(MAX_RX_CNT=  255)、这是我在空调远程信号中确实看到的值(调试模式)
    • TX_DATA [TOTAL_MODE][TOTAL_CODES][MAX_RX_Counts] : 这是主要问题。 它存储信号边沿之间的时间。 现在、它是 unsigned int、但我想以某种方式将其"压缩"为 unsigned char。 同样、看起来不是很可能的、因为我看到的值超过了无符号字符值255。

    您可以对馈送计时器的时钟进行分频、以减小值的幅度。 但这会对计时的粒度产生不利影响。 也许这是可以的、值得进行折衷。

    • 听起来好像是一种可能的解决方案、但我不确定这在载波频率需要为38kHz 时有多大的可行性。
    • 也许我错过了一些有关调制的东西、这种方法是可行的

    更新:我只是在一个位周围进行了转换、并意识到每次"读取"和"发出" IR 代码的存储方式不同(尽管实际代码是相同的)。 我可能想进一步研究 ASK 调制,看看是否可以将整个 IR 代码存储为一组长整数(从单个位转换??) 而不是一组时间差。

    更新2: 绘制数据图形后、我注意到电视和空调信号的重复信号。 遥控器具有较短的脉冲、而 A/C 具有较长的脉冲。

    我似乎能够通过将空调信号的最大计数设置为255、而电视信号的最大计数设置为小于100来执行权变措施。  

    图形如下所示:

    图1:电视信号(同一按钮的2个图形)

      

    图2:空调信号

    3.使用另一个 MSP430作为"外部存储"

    我有一个额外的 MSP430FR4133 (这是一个没有公头引脚的故障、因为 TI 在制造过程中拧紧了插头、但我可以使用它)、我可以将其用作建议的存储器。

    根据 BOOST-IR 规范、SPI 端口未使用、因此我认为这可能是最可行但又很麻烦的解决方案。

    外部闪存和 FRAM 存储似乎是一个可行的主意(希望它们不会太贵)。

    [引用用户="Greg Fundyler"]

    您好、Samuel、

    让我来解决您的权变措施...

    1.将部分程序存储器移至 RAM 或闪存

    你真的不能这么做。 我不相信芯片有闪存。 您有 FRAM 和 RAM。 (虽然 FRAM 是闪存的一个很好的替代器件。) 您可以在 RAM 中运行代码、但该代码来自哪里? 调试器可以暂时将其放置在那里、直到您关闭电源。 您可以在每次启动时从 FRAM 复制它、但这不会节省任何 FRAM。 默认情况下、RAM 已用于所有运行时变量。 这是您在最大程度地降低 FRAM 利用率方面可以做的最好的事情。 .text 和.const 中的所有内容都必须位于非易失性位置。

    2.存储信息/压缩红外信息的另一种方法

    我并不完全清楚这里会发生什么情况。 默认情况下是否使用 unsigned long、并且您正在尝试将其截断为 unsigned char? 如果是、您看到的值的范围是多少? 这与空调有什么关系?

    无符号短整型(16位)是否会提供足够的范围?

    您可以对馈送计时器的时钟进行分频、以减小值的幅度。 但这会对计时的粒度产生不利影响。 也许这是可以的、值得进行折衷。

    更新了:我看到了。 从 int 下降到 char、并将阵列尺寸缩小近一半、即可达到1/4。

    3.使用另一个 MSP430作为"外部存储"

    如果您有可用的串行或并行接口、则可以执行此操作、但有更好的方法。 这就是存储器器件的用途。 您可以获取 EEPROM、闪存或 FRAM 器件、并将其连接到 MSP430以进行外部存储。 您仍需要一个备用接口来实现这一目的。

    如果您聪明、可以使用单个 SPI 主器件与存储器芯片和可能连接的任何其他器件通信。 这就是芯片选择的发挥作用。

    4. SD 卡 BoosterPack

    这似乎是过死了。 SD 卡的接口为 SPI;与使用上述存储器芯片中的一个没有太大区别。

    主要问题:如何"增加"可用于所需存储的内存?

    我认为您最好的选择是尝试将信息压缩得更严格、就像您一直在尝试的那样。 否则、您需要考虑添加外部存储器或切换到具有更多内置非易失性存储器的不同 MSP430。

    [/报价]

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    默认最大值为(MAX_RX_CNT= 255)、这是我在空调远程信号中确实看到的值(调试模式)

    是否确定空调确切为255、而不是更多?

    在绘制数据图形后、我注意到电视和 A/C 信号的重复信号。 遥控器具有较短的脉冲、而 A/C 具有较长的脉冲。  我似乎能够通过将空调信号的最大计数设置为255、而电视信号的最大计数设置为小于100来执行权变措施。  

    让我们对此进行澄清。 当您说脉冲更长时、您是指数组中的更多值、还是意味着存储的每个值(无符号整型)都更大?

    您观察到的最大存储值是多少? 它是否仅略高于255、如300或400?

    [时钟分频]听起来像是一种可能的解决方案、但我不确定这在载波频率需要为38kHz 的情况下有多可行。 也许我错过了一些有关调制的东西、这种方法是可行的。

    调制发生在 MSP430之外。 如何测量和重新创建脉冲与该调制无关。 因此、如果测得的脉冲从未超过511、那么您可以将定时器时钟除以2。 (如果使用不同的计时器来测量脉冲并创建脉冲、则必须以相同的方式对两个计时器进行分频。) 这样做将使您的值减少2倍、从而使其适合无符号字符。

    当然、另一种方法是将值存储到存储器中时除以2、并在读回时将其乘以2。 但重新配置计时器更干净。

    正如您可以想象的那样、当您将值减少2倍时、您将丢失 LSB 中的信息。 但是、正如我之前提到的、这可能是可以的。 IR 的容差较松。 在这方面...

    我只是在一个位置进行了 mued、并意识到每次"读取"和"发出"的 IR 代码的存储方式不同(尽管实际代码是相同的)。

    您捕获的值可能不会每次都完全相同、但应该非常接近。 它是对实际时间到数字时钟计数的模数转换。 预期误差。

    将主题更改为其他存储代码的方法:我尝试了一次从电视遥控器获取的代码。 如果存储器对我正常工作、有两种模式:一种是低位模式、另一种是高位模式。 我已确定遥控器上的每个按钮都以这种方式生成了32位。 因此、我将每个按钮存储为无符号长整型。 我编写了一个函数、在给定32位代码的情况下、为低位和高位生成适当的定时脉冲。  这将允许您以总计56字节的方式存储14个按钮。 但它将特定于这种远程控制。

    更大的存储空间:如果您需要大量的存储空间、SD 卡 Booster Pack 可能是您的不二之选。 它很简单、因为您只需将其堆叠即可、无需焊接等 您甚至可以将 IR 设备的整个数据库存储在其中,就像通用远程控制一样。 如果您只需要更多一些空间、您可以使用类似 这样的东西。 但坦率地说、10美元+运费是目前32KB 的大量资金。 您可以在  DIP 封装中轻松获得256KB FRAM 或128KB EEPROM。 如果您可以使用微型封装、则有更多选择。 是256MB 闪存、仅需5美元。 但对您的应用来说绝对不实用。 让您了解可能的情况。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Greg、  

    非常感谢您的帮助和耐心...

    因此、我认为我的术语有点令人困惑(抱歉)。

    让我们对此进行澄清。 当您说脉冲更长时、您是指数组中的更多值、还是意味着存储的每个值(无符号整型)都更大?

    [问题的直接寻址:] 我是说阵列中的更多(不重复)值、即空调可能发送64或128位信号、而不是像电视那样发送32位信号。

    [说明:]  TX_DATA:可变长度 Rx_cnt 的数组 我意识到这种变化的长度对应于在我按下"OK"(确定)之前它接收到的数据量。 每个值 TX_DATA[ i ] 都包含一个从0到最大40、000的数字(就我所见而言),这是 TA0CCR0 - OLD_TA0CCR0所规定的时间差。  

    当我绘制 TX_DATA 的图形时、我得到了以下结果:

    空调

    电视

    这些图根据 I (y 轴)绘制了 TX_DATA[i](y 轴)。  

    请注意、每张图都有重复模式(由于第二次重复没有完成、因此空调不太明显)?

    电视的重复模式"较短":#2到#27、#28到#53、#54到#79等。 索引之间的差异约为25。

    空调的重复模式为"更长":#2至#148、#149至(..trunced..) 等等。 索引之间的差异约为146。  这就是我所说的"短"/"长"脉冲。

    我怀疑这种重复模式是空调和电视正在发送的32/64/128位代码。 我计划查看是否可以将图形解码为一组0和1。 由于您以前已经设置了优先级,我知道这可能是可能的,至少对于电视来说:)

    调制发生在 MSP430之外。 如何测量和重新创建脉冲与该调制无关。 因此、如果测得的脉冲从未超过511、那么您可以将定时器时钟除以2。 (如果使用不同的计时器来测量脉冲并创建脉冲、则必须以相同的方式对两个计时器进行分频。) 这样做将使您的值减少2倍、从而使其适合无符号字符。

    当然、另一种方法是将值存储到存储器中时除以2、并在读回时将其乘以2。 但重新配置计时器更干净。

    正如您可以想象的那样、当您将值减少2倍时、您将丢失 LSB 中的信息。 但是、正如我之前提到的、这可能是可以的。 IR 的容差较松。 在这方面...

    将时钟除以2可能没有帮助、因为这些值通常大约为2、000-40、000。 我怀疑2、000 (例如)是电视的1位、4、000是大约2位等 极高的40、000值可能是在下一次重复相同32位数之前的暂停。  

    您捕获的值可能不会每次都完全相同、但应该非常接近。 它是对实际时间到数字时钟计数的模数转换。 预期误差。

    感谢您以这种方式进行解释... 现在就有道理了!

    将主题更改为其他存储代码的方法:我尝试了一次从电视遥控器获取的代码。 如果存储器对我正常工作、有两种模式:一种是低位模式、另一种是高位模式。 我已确定遥控器上的每个按钮都以这种方式生成了32位。 因此、我将每个按钮存储为无符号长整型。 我编写了一个函数、在给定32位代码的情况下、为低位和高位生成适当的定时脉冲。  这将允许您以总计56字节的方式存储14个按钮。 但它将特定于这种远程控制。

    谢谢! 我可能会继续这样做、因为这是我的家用电器、我可以调节到每个电器。

    无论如何、感谢 A ton Greg! 如果我看到任何有趣的图案,我会更新:)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的澄清。 这更有意义。  我很高兴我迄今能够提供帮助。

    现在、我更好地理解了您的图形、让我们看看我们是否可以导出一些图形。 让我们从电视遥控器开始、因为它看起来更简单。

    如您所示、重复模式非常短。 让我们关注一下2-25。 我看到一系列短脉冲和长脉冲、长脉冲的振幅大约是短脉冲的两倍。 让我们将最短脉冲作为基本的时间单位、并将命令编码为一系列存储为位的时间间隔。 例如、0101表示一个单位的一行中的四个脉冲(或4个短脉冲)。 0110010表示1个单元、2个单元、2个单元、1个单元、1个单元(或短超长超短)。 该命令可编码为01101011010110101101010101。 这只有28位。

    这不是一个很好的编码方案。 对于一种情况、所需的位数将取决于您具有的长脉冲数。 但是、如果您需要对超过2种类型的脉冲进行编码、这种方案可能是合适的。 因此、它还可以对前2个真正长的脉冲进行编码:000000000000000000001111。 然后、从0到25的整个命令为:  0000000000000000000000000000000011110101101010101。整个过程需要56位、您已经知道要重新广播几次了。

    现在、让我们尝试进一步优化它。 再看2-25、假设短脉冲为0、长脉冲为1。 您可以将该命令编码为010001000100000100000000。 这只有24位、有多少脉冲是长脉冲还是短脉冲无关紧要。

    再多走一步? 似乎脉冲成对出现、一对中的第一个脉冲始终很短。 假设 short - short 是0、short - long 是1。 命令为101010010000。 这只有12位! 老实说,我敢肯定,这个特定的电视遥控器是基于12位代码的。

    前2个真正长的脉冲会怎么样? 对我来说、它们看起来像是同步模式。 我敢打赌遥控器上的每个按钮都会生成相同的同步模式。 因此、您不需要尝试为每个按钮存储它。 只需编写一个函数、该函数知道如何解读12位代码并 从中生成 TX_DATA 数组、包括[0]和[1]中的同步模式。

    您应该能够对空调执行同样的操作。 脉冲看起来更长、但原理是相同的。 它可能会更复杂一点、因为某些脉冲看起来非常非常短。 还是图形的呈现方式? 更有可能出现这些干扰、因为定时器认为信号短暂出现或消失、但实际上并未出现。 遗憾的是、它将忠实地在输出上重现这些毛刺脉冲。

    通过计时器进行捕获和复制的方法非常适合通用 IR 应用、在这些应用中、您不知道格式是什么、也不在乎格式。 但效率极低。

    另一个不重要的细节:如果我回忆正确、电视代码将以 LSB 优先的方式传输。 上面的12位代码实际上是000010010101。 您可能会发现所有按钮都以0000开头、在这种情况下、它实际上是一个8位代码、您可以将其存储为单字节:0x95。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    再次感谢 Greg 的帮助... 每次都变得更加清晰:)

    我认为、如果我在 Google 电子表格 中提供了指向 TX_DATA 原始数字的链接:https://docs.google.com/spreadsheets/d/1n5Po7JMPqhbGrt-DqBWE_TvRk053VFcgUd0s_vl1pZw/edit#gid=226443439、将会很有帮助

    只需再次澄清一下、看看我们是否在正确的页面上... 下面是电视远程数据的表格、除以最低数字并四舍五入到1 D.P

    2 3号 4. 5号 6号 7号 8号 9号 第10条 第11条 第12条 问题13. 14号 15号 第16条 17号 18号 19号 20号 21号 22号 23号 24号 25号 26号 27号
    4.4. 1 2.2. 1 1.1. 1 2.2. 1 1.2. 1 2.2. 1 1.2. 1 1.2. 1 2.2. 1 1.2. 1 1.2. 1 1.2. 1 1.2.

    16.7.

    由于每个条目都基于高脉冲和低脉冲之间的时间差、因此每个条目对应于"0"或"1"的数量、并且该模式会交替变化。 因此、假设索引#2为4'0'、我们有:

    2 3号 4. 5号 6号 7号 8号 9号 第10条 第11条 第12条 问题13. 14号 15号 第16条 17号 18号 19号 20号 21号 22号 23号 24号 25号 26号 27号
    4.4. 1 2.2. 1 1.1. 1 2.2. 1 1.2. 1 2.2. 1 1.2. 1 1.2. 1 2.2. 1 1.2. 1 1.2. 1 1.2. 1 1.2. 16.7.
    0000 1 00 1 0 1 00 1 0 1 00 1 0 1 0 1 00 1 0 1 0 1 0 1 0
    11111111111111111111

    是这样吗? (当然也可以是1111 0 11、等等、但由于你说它是 LSB 优先的、所以我会先假设它是这样的。 我可以以后再做两次检查。)

    前2个真正长的脉冲会怎么样? 对我来说、它们看起来像是同步模式。 我敢打赌遥控器上的每个按钮都会生成相同的同步模式。 因此、您不需要尝试为每个按钮存储它。 只需编写一个函数、该函数知道如何解读12位代码并 从中生成 TX_DATA 数组、包括[0]和[1]中的同步模式。

    第一个真正长的脉冲可能只是不相关的数据、即测量我按下"copy"(并启动计时器)之前到按下电视遥控器(MSP 开始接收红外信号)所需的时间。

    至于周期结束/开始时的长16位、这可能是您所指的"同步代码"。 不确定"同步代码"有多重要、但由于它是重复的、因此无论如何我也可以复制它。

     

    您应该能够对空调执行同样的操作。 脉冲看起来更长、但原理是相同的。 它可能会更复杂一点、因为某些脉冲看起来非常非常短。 还是图形的呈现方式? 更有可能出现这些干扰、因为定时器认为信号短暂出现或消失、但实际上并未出现。 遗憾的是、它将忠实地在输出上重现这些毛刺脉冲。

    关于这些小问题,可能是真的…… 没有想到。

    说到干扰、如果我将空调和电视的原始数据除以最低的数字、我会注意到:

    让我们来看看电视的未处理数据。 2个数字吸引了我的兴趣: 2221和 2580 (分别降至1和1.1)。 我能够为相同的按钮提供2组数据、如果您并排看到它们、如果一组显示2580、另一组显示2580。  

    2 3号 4. 5号 6号 7号 8号 9号 第10条 第11条 第12条 问题13. 14号 15号 第16条 17号 18号 19号 20号 21号 22号 23号 24号 25号 26号 27号 2 3号 4. 5号 6号 7号 8号 9号 第10条 第11条 第12条 问题13. 14号 15号 第16条 17号 18号 19号 20号 21号 22号 23号 24号 25号 26号 27号
    9773. 2221. 4972 2221. 2494. 2324 4972 2221. 2580 2222. 4885. 2324 2580 2221. 2580 2222. 4887 2325. 2580 2220. 2580 2221. 2579 2222. 2579 37113 9773. 2221. 4972 2221. 2494. 2324 4972 2221. 2580 2222. 4885. 2324 2580 2221. 2580 2222. 4887 2325. 2580 2220. 2580 2221. 2579 2222. 2579 37113
    9801. 2206. 5012. 2207. 2599 2206. 4994 2223. 26600 2205. 4993 2205. 2617. 2206. 2598 2205. 4994 2222. 2598 2206. 26600 2207. 2599 2206. 26600 37259. 9801. 2206. 5012. 2207. 2599 2206. 4994 2223. 26600 2205. 4993 2205. 2617. 2206. 2598 2205. 4994 2222. 2598 2206. 26600 2207. 2599 2206. 26600 37259.

    问题是、我们是否可以将这个"2580"视为您之前的回复中提到的"模数转换错误"、或者我是否遗漏了某个错误

    另一个不重要的细节:如果我回忆正确、电视代码将以 LSB 优先的方式传输。 上面的12位代码实际上是000010010101。 您可能会发现所有按钮都以0000开头、在这种情况下、它实际上是一个8位代码、您可以将其存储为单字节:0x95。

    毕竟不是很重要、因为这确实有助于进一步压缩代码、让我知道它是以0000还是1111开头。  

    再次感谢、
    塞缪尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为您的发展方向是正确的。 确切的数字无关紧要。 有很多摆动空间。 由于长脉冲的长度是短脉冲长度的两倍、因此必须经常关闭计时才能将其拧紧。 您的眼图可以承受多大的变化量、并且仍然能够区分短脉冲和长脉冲? 电视可能也能容忍这种情况。

    数字之间的差异是模数转换误差和遥控器数模转换误差的组合。 由于变化很大、因此可以放心地选择遥控器没有可靠的振荡器。 可能只是一个简单的 RC (电阻器-电容器)振荡器、它会随温度、月球相位以及您今天早上吃早餐的情况而变化。

    因此、我不会关注2580或2221。 我将对来自多个样本的所有短脉冲进行平均值计算、并将其用作您的基本时间单位。 我还倾向于使用12位编码(如果我的理论得到证明、甚至是8位编码)、因为它比您选择的方案更具可预测性且更易于实施。 但您选择的选项更灵活。 由你决定。

    如果您想确认我是 Google 工作表文档的合作者、我很乐意为您提供帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Greg、

    我刚才为您提供了编辑访问权限...

    不幸的是,由于国家兵役承诺,我直到周六才对这一准则做了很多工作。 希望我仍能考虑数据处理!

    塞缪尔