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.

[参考译文] TM4C1294NCPDT:使用 PIOSC 的定时器的精度是否无法达到5us?

Guru**** 2449030 points
Other Parts Discussed in Thread: TM4C1294NCPDT, EK-TM4C1294XL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/621860/tm4c1294ncpdt-is-5-us-accuracy-on-timer-using-piosc-unachievable

器件型号:TM4C1294NCPDT
Thread 中讨论的其他器件: EK-TM4C1294XL

大家好、

我正在尝试使用 TM4C1294NCPDT 微控制器修改定制板、以创建触发源/扇出。 电路板的目标是接收触发信号、从而导致多个计时器(理想情况下全部为6个)开始计数、然后在超时时(计数器值通过 HTTP POST 请求更新、因此在后台运行以太网例程)时输出信号。

软件使用:

  1. Code Composer Studio 7.1.10
  2. LM 闪存编程器

硬件使用:

  1. EK-TM4C1294XL (调试部分作为调试器/编程器)
  2. Tektronix TDS 2024C 示波器(认为需要提及)

如上所述、当用户触发(上升沿输入)电路板时、计时器开始计数、计时器的目的是在触发各自器件之前产生延迟。 现在、我正在尝试在计时器4和计时器5中使用 PIOSC 作为我的外设时钟、但没有成功(成功意味着我以 10us 的延迟触发器件、并且尽可能减少错误)。 具有最新代码的电路板输出如下所示:

  • 上图是电路板的输出、其中黄色是触发迹线
  • 在清除中断标志之前、用户触发 LED (上升沿)并且定时器5 (紫色跟踪)中断服务例程将其关闭(下降沿)。
  • 蓝色和紫色迹线分别是定时器4和定时器5 ISR。
  • 触发线迹的宽度为13.40us (从触发信号到紫色 ISR 例程)、蓝色线迹在触发器下降沿之后600ns (比预期晚4us 开启)、 紫色在超过触发器下降沿的1.8us (比预期的晚5.2us 开启)。
  • 上图中的光标(黄色虚线)宽度为10us、用于显示进入 ISR 所需时间的差异。

定时器配置代码如下:

void initTimer (void){

//启用所有计时器模块外设
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_TIMER0);
MAP_initCtlPeripheralEnable (SYSCTL_Periph_TIMER4);
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_TIMER5);

//启用 PIOSC
MAP_SysCtlAltClkConfig (SYSCTL_ALTCLK_PIOSC);

//校准 PIOSC 以确保最佳/最接近16 MHz 定时器值
MAP_SysCtlPIOSCCalibrate (SYSCTL_PIOSC_CAL_FACTOR);

//将计时器外设配置为使用 PIOSC 而不是默认的(系统时钟)
MAP_TimerClockSourceSet (TIMER4_base、TIMER_CLOCK _PIOSC);
MAP_TimerClockSourceSet (TIMER5_base、TIMER_CLOCK _PIOSC);

//将计时器配置为两个16位计时器(边沿计时器加载模式);IMER_TIME_MAP_TIMER
4


(TIMER_COUNT_TIMER);配置 TIMERCH_TIMER TOP_LEASE (TIMER_TIMER)


//确保在启用定时器中断
MAP_TIMERIntClear (TIMER4_base、INT_TIMER4A);
MAP_TIMERIntClear (TIMER5_base、INT_TIMER5A);

//启用计时器中断在超时
发生 MAP_IntEnable (INT_TIMER4A);
MAP_TIMER4

(TIMER_INT_TOMER5A);启用 TIMER_INT_INT_INTIMER 中断 Timer_TINA_TIMEOUT);
} 

触发代码如下:

void PortBIntHandler (void){

if (MAP_GPIOIntStatus (GPIO_PORTB_BASE、false)& GPIO_INT_PIN_5){
MAP_GPIOIntClear (GPIO_PORTB_BASE、GPIO_INT_PIN_5);

//UINT32_t TIMERLoadLoad = DELAY[0]* 120 *-
TIMER32_DELAY[120]




*= UTTLAY32_1*、UINT32_DELAY32];/TIMER32_TRY32_DELAYST_TRY32_TREM_TRY32_TRY32_TRY32_TREM_TRY32_TRY32_TREM_TRY32_TRY32_TREM_TRY32_TRY32_TRY32_TRY32_TREM_TRY32_TRY32_TREM_TRY32_TREM
//MAP_TimerLoadSet (TIMER5_base、TIMER_A、DELAY[1]* 120 - 308);
MAP_TimerLoadSet (TIMER4_base、TIMER_A、timerDelayLoad1);
MAP_TimerLoadSet (TIMER5_base、 Timer_A、timerDelayLoad2);
//HWREG (TIMER4_base + TIMER_O_TAILR)= DELAY[0]* 120;
//HWREG (TIMER5_base + TIMER_O_TAILR)= DELAY[0]* 120;
MAP_TIMER4_BASE、TIMER_MAIL);
TIMER_MAIL (TIMER_BASE)
MAP_TimerSynchronize (TIMER0_BASE、(TIMER_4A_SYNC | TIMER_5A_SYNC));
}

计时器 处理程序如下所示:

void Timer4IntHandler (void){
//仅用于调试目的
MAP_GPIOPPinWrite (GPIO_PORTP_BASE、GPIO_PIN_1、0 << 1);

//将中断标志首先清除为
MAP_TimerIntClear (TIMER4_base、TIMER_TIMA_TIMEOUT);

if (MAP_GPIOPINRE1_BASE、
GPIO_1)、GPIORT_PIN1 (GPIO_PER_1)、GPIO_PER_TO_1、GPIO_PER1 (GPIO_PER_1)
1200000);
}
否则(如果(MAP_GPIOPORTN_BASE、GPIO_PIN_1)=GPIO_PIN_1){
MAP_GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_1、0 << 1);
MAP_TimerDisable (TIMER4_BASE、TIMER_A);
}}
}

void Timer5IntHandler (void){
MAP_GPIOPORTP_BASE、GPIO_PIN_0、0);
MAP_TimerIntClear (TIMER5_base、TIMER_TINA_TIMEOUT);

if (MAP_GPIOPINREAD (GPIO_PORTN_BASE、GPIO_PIN_2)!= GPIO_PIN_2){
MAP_GPIOPINWrite (GPIO_PORTN_BASE、GPIO_PIN_2、1 << 2);
MAP_TimerLoadSet (TIMER5_base、TIMER_A、 1200000);
}
否则为(MAP_GPIOPinRead (GPIO_PORTN_BASE、GPIO_PIN_2)=GPIO_PIN_2){
MAP_GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_2、0 << 2);
MAP_TimerDisable (TIMER5_base、timer_A);
}
}

系统时钟配置如下:

G_ui32SysClock = MAP_SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_INT | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000); 

最初、我使用系统时钟作为计时器源时钟、该时钟确实接近预期的延迟值、与上述 PIOSC 方法相反。 但是、它至少关闭了1.2us 和 2.4us (分别为计时器4和计时器5)、可轻松转换为120MHz 时钟上的200个时钟周期。 我认为我运行的以太网代码(基于 enet_io)可能会导致延迟、因此我想、由于延迟具有一致的误差、我可以减去这一数量的周期。 不幸的是,这没有我预期的理想结果,而是使产出接近10 us,这是不一致的。

正如我刚才注释过的那样、您可以看到我尝试了其他方法来解决这个问题(例如、通过直接寄存器编程来减少时钟周期)。

我想我的问题是-在后台运行以太网例程的计时器上是否可以实现5us 的延迟?

此致、

Stephen B.

如果图片有用、我可以发布更多图片-我避免使图片过长。

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

    由于您的时间范围(相对而言)较短-并且您使用了两个16位计时器(即分离计时器)不会使您的计时器配置参数:"TIMER_CFG_PERIODICRAR"

    通过(更合适)参数:"TIMER_CFG_A_PERIODICRACy"来获得更好的服务?   (用于"半宽"定时器)  您使用的参数是针对"全宽"定时器

    现在-这是否足以导致您注意到的时间差异?   这是(目前)未知的-然而(部分)与 TM4C-DRL-UG 的合规性非常有意义。

    您似乎创建了一个"互锁定时器"的"小森林"-这可能会造成长期时序依赖!   在这个早期阶段-这是明智的吗?    相反-仅使用一个半宽定时器并尝试实现 n ü 10µS 定时器延迟是否不会证明"更快、更容易、更好"?    (Kilimanjaro 证明、"第一次攀登"是"太具有挑战性"、也许也是因为"计时器互锁...")

    我不会轻易地发现有人试图"确定"您最关键的定时器中断的优先级-这些中断可以(有效地)从混乱的期望中删除"定时器链中断延迟"。   此外、符合始终流行(&有效)的"kiss"标准、证明"删除以太网代码"是明智的-至少在这个计时器问题得到解决之前。   此外-"链接多个计时器(此处)以"已加载勘误表"而闻名-您(已经)"已阅读、理解和遵守"(信用称为"旧家")、且供应商勘误表最新/最大-对于您的器件-您是否没有?  (所说的勘误表(可能)由于"需要"与(过去)非常"喜欢" forum...no及其(以前)喜欢自己的外壳"一塌糊涂而"遭受"。)

    我对该供应商的 Cortex M4能否实现您的目标"几乎没有怀疑"(从不说)。   (我们已经做到了、多个(其他)供应商的 Cortex M0 -一个远小于它的器件!)

    DRL 合规性-随后是另一组测量-似乎是值得的。   (另请注意-我们有30xx 版本的示波器-请相信、"将示波器 CAP 另存为.png"(而不是.bmp)会在此处的单独选项卡中打开时启用放大功能。)   至少,在广泛宣传之前,这种"曾经"的情况是如此,但却是令人憎恶的"失败"----(但却声称)论坛(无此类)升级...

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

    我将首先挑选一个尼特。

    [引用用户="Stephen Bolanos"]使用 PIOSC 时计时器的精度为5us 无法达到[/引用]

    这是您的主题行、我会说这是错误的。 PIOSC 为+/-10%、因此只要您保持50uS 的精度、就可以达到5uS 的精度。 这不是您要问的问题、而是您所做的问题、这是一个重要的区别。

    您似乎要问的是、当输入到达时、我是否会产生5us 延迟(某些不确定的精度)?

    首先要做的是对您的系统执行比率单调分析。 似乎最高频率/最低延迟要求是该触发器输出。 如果是这种情况、那么

    • 中断触发应具有最高的系统优先级
    • 任何操作都不应关闭该中断。 IE 无中断禁用
    • 该中断的唯一任务是设置/启动将直接设置触发器输出的计时器(无 SW 干预)

    幸运的是、中断结构可胜任该任务、因为 M4内核已对中断进行了优先级排序、并且通过适当的设计、您可以避免禁用最高优先级的中断。

    在某些微控制器上、计时器结构具有足够的能力、可以使用一个计时器上的输入来触发其他计时器。 我认为这里不是这样、但您可以进行检查。

    哦、我还想使用一个比 PIOSC 这样的内部时钟更精确的计时源、但这是一个小的警告。 +/-10%似乎有点不连贯、没有使用它的首要原因。

    Robert

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

    尊敬的 Stephen:

    首先、CB1提供了很好的相对 INT 优先级顺序建议、尽管 NVIC 中断尾链可能会作为 计时器序列中断中的默认优先级而规避。

    关于 GPTM-4/5;您将 PIOSC 设置 为源、但 GPTM-0 仍保持为 SYSCLK 源。 您稍后会将 GPTM–4/5与 GPTM–0同步、 难道不是所有3 个计时器都必须使用相同的时钟源才能相互同步?

    MAP_TimerSynchronize (TIMER0_BASE、(TIMER_4A_SYNC | TIMER_5A_SYNC); 

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

    很好的朋友/海报 BP。   Robert 的"尼特-皮"同样也是精心挑选的...

    海报的"安静"(不好)然而他的"拒绝亲吻"迫使一个陡峭/不确定(增加了难度)的攀登!   (我不敢打赌成功的结果...)

    论坛和(业务)协议规定(部分)对"沉默"的回应。   (即 亲爱的回复者:"在短吻鳄中、我的耳朵-谢谢您-将在 x (小时、天、月)内回复(可能)))

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

    同意沉默不是黄金。

    然而、研究 TM4C1294数据表 GPTM 时钟源发现 TM4C123G MCU 中的 REG28功能无效、使得( GPTM)的 ALT PIOSC 时钟源 难以实现@80MHz SYSCLK。  可能是 购买 EK-TM4C1294XL 用于在  论坛帖子97线程深的背景下测试低频和高频占空比信号捕获的原因之一。

    读取 限制段落数次、 ALT 位被置位、然后同步是相对于其它定时器事件(4个62.5ns+16.6ns=266.6ns)周期或者 GPTM 同步事件之间的最小时间3.75Mhz)的关键字。  不确定 (Thclk)是否等于120MHz SYSCLK = 8.3ns 周期。

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

    我的朋友-你(现在)不是直接(非常)安静的海报、"在 Kilimanjaro 陡峭的山坡上?"    甚至是我们所接触的最好/最聪明的学校:MIT;Cal Tech;U of Al、Huntsville;UW-Madison -所有这些都强调了"kiss!"的重要性和效率

    海报的"链计时器中断"(明显)愿望-减去(任何)提及"中断优先级"的组合表明、"小、可测量、系统步骤"(即"kiss")最能满足这一海报-已经"被踢到路边"...   (而非(仅)通过我们的海报)

    与往常一样-海报不提供任何支持或理由来证明他的"方法"。    (破解"助手/救援 crüe "-因此(几乎)被迫"接受"海报的方法-超越他们的创造性贡献。)    应征求此类意见----强迫使用"招贴画的方式"消除了(大量)创造性能源----使任何论坛的用处大大降低...

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

    在答复上述任何评论之前,我必须对我 过去5天没有接触深表歉意。

    [引用 USER="CB1_MOBILE"]

    由于您的时间范围(相对而言)较短-并且您使用 了两个16位计时器(即分离计时器) 不会使您的计时器配置参数:"TIMER_CFG_PERIODICRAR"

      通过(更合适)参数:"TIMER_CFG_A_PERIODICRACy"来获得更好的服务?   ( 用于"半宽"定时器)  您使用的参数是针对"全宽"定时器。

    [/报价]

    是的、在面临此问题之前、我尝试使用半宽计时器、我承认、这更有意义、并且是对器件的高效使用。 但是、在我还实现了半宽定时器的时候、 将 TIMER_CLOCK 系统(在120 MHz 时) 用作一个源、 在50 μ s 的时间内、我很难用一个16位定时器和预分频器来实现这个源。 我想我已经花了足够的时间来解决这个问题、应该尝试不同的方法(使用完整的 Wdth 计时器)。 此外、较慢的系统时钟可能很容易被配置为适应、但对于它将如何影响以太网例程感到谨慎(缺乏合理性)。

    然而、现在使用  TIMER_CLOCK _PIOSC (在16MHz 时) 作为定时器源、我意识到我应该能够再次使用半宽定时器、而无需与预分频器混乱(并在这个帖子之后更新代码。 至少用于比较和知识"提升")。

    [引用用户="Robert Adsett72"]

    这是您的主题行、我会说这是错误的。 PIOSC 为+/-10%、因此只要您保持在50uS 以内、就可以实现5uS 的精度。 这不是您要问的问题、而是您所做的问题、这是一个重要的区别。

    您似乎要问的是、当输入到达时、我是否会产生5us 延迟(某些不确定的精度)?

    [/报价]

    我不打算说 MCU 不能做到这一点;似乎我忘记了一个问号,但尽管如此,它仍然是一个措辞不好的问题。 下次选择主题行时、我会记住这一点。 因此、我问是否可能造成5 us 的延迟(我相信、考虑到我可以使用的快速时钟、我可以实现这一延迟)、因为我在实现这一延迟时(灾难性的)失败了。

    [引用 user="BP101"]

    关于 GPTM-4/5;您将 PIOSC 设置  为源、但 GPTM-0 仍保持为 SYSCLK 源。 您稍后会将 GPTM–4/5与 GPTM–0同步、 难道不是所有3 个计时器都必须使用相同的时钟源才能相互同步?

    [/报价]

    我没有意识到(或知道)这是必需的、并更新了我的(更简单)代码以反映此更正。

    [引用用户="Robert Adsett72"]

    首先要做的是对您的系统执行比率单调分析。 似乎最高频率/最低延迟要求是该触发器输出。 如果是这种情况、那么

    • 中断触发应具有最高的系统优先级
    • 任何操作都不应关闭该中断。 IE 无中断禁用
    • 该中断的唯一任务是设置/启动将直接设置触发器输出的计时器(无 SW 干预)
    [/报价]

    我无法理解这将如何改善时间差异。 我可以看到、一旦触发发生、这将禁止在启用定时器的过程中发生任何以太网 ISR -这是否是触发器优先于其他 ISR 的目标?

    应用"kiss"(我没有拒绝);我删除了所有以太网例程(和相关代码)并删除了计时器 ISR 中的一些条件语句、以缩短时间(可能?) 减少可能导致(潜在)错误的"齿轮"数量(应用旧知识、即计划中的齿轮越多、故障点越多)。

    这导致了一个奇怪的情况、在这种情况下、尽管关闭 LED、但在两个计时器都打开后、我的 LED 将关闭、这是计时器4 ISR 中的第一条指令。

    更改计时器5的计时器延迟值(紫色迹线)会产生预期更长的延迟、但 LED (黄色迹线)保持在相同的相对空间中。

    抱歉、CB1_MOBILE、没有将图像另存为.png 的选项、而是选择了.jpeg。

    [引用 USER="CB1_MOBILE"]

    海报 的" 链计时器中断"(明显)愿望- 减去 (任何) 提及 "中断优先级"的组合表明、"小、可测量、系统步骤"(即 "kiss"最能  满足 这一海报-已经"被踢到路边"...   (而非(仅)通过我们的海报)

    [/报价]

    正如我的回答所示、我(显然)对嵌入式系统缺乏了解、这使我完全不了解中断优先级的概念 、尤其是在中断驱动型系统中。 我觉得有必要提及我不会"踢"(非常非常感激)对路缘起帮助、并且非常愿意接受建设性批评、因为我还在学习(不是我们所有人?)。 话虽如此、我将在此考虑下更新代码

    已更新、更易于阅读的代码已随附给感兴趣的人员。

    e2e.ti.com/.../7120.main.c

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

    很高兴您再次访问-感谢您的深入(并接受)回复。

    您的新示波器电容器更大(更易于阅读)、但最近(不需要)声称的论坛"升级"似乎"已完成、并且能够"放大图像-在 新选项卡中打开时"。   仍然-这些电容器是卓越的。

    (暂时)仅使用一个半宽 MCU 定时器并创建5µS "脉冲或延迟"是否合理?   这是一个"构建块/基础"、您随后的努力将在此基础上展开。   同步计时器已被许多人证明是一项挑战-并且已成为勘误表的受害者(请务必检查)-我会询问您的应用是否(真正)需要同步计时器。   

    确定中断优先级值得您关注、并进行"范围监控"实验。   一个新到达(较高优先级)的中断(很好)"开始一个较低优先级的中断、执行中断"-到路由。   (较低优先级的"坐/等待"-直到较高优先级的执行和完成!)

    再次显示、这些是您面前的任务:

    • 创建符合 n ü 5µS 规格 的单个计时器脉冲/延迟(证明您可以-并且 MCU (当然)可以实现这一点)
    • 分配不同的定时器中断优先级
    • 启动一个较低优先级的中断-然后在执行时-启动较高优先级的中断(并注意较高优先级的"开始充电")。   您可以在每个计时器中断中切换不同的 GPIO、这提供了一种清晰有效的方法来确认每个唯一中断的进入和退出
    • 最后-尝试"链接计时器中断"、但(仅限)在该特定的"链接/互锁计时器"方面对 MCU 勘误表进行了实心阅读和理解之后。

    缺勤是预期的-但应采用(应该)给出的(回应)指导...   (显示(部分)您的无酬/工作过度/现在"无类似"的助手 crüe……)   在我们的"低线程数"中、我们确实看起来"非常好"-供应商提供- T 恤衫... 这是肯定的。。。

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

    感谢 CB1_MOBILE、BP101和 Robert Adsett72、 我们将一如既往地感谢您的帮助。  

    遗憾的是、由于各部门之间的通信有误、已经存在利用 TM4C1294NCPDT 和 FPGA 实现所需结果的解决方案(如果您想知道、FPGA 还可用于另一个目的)。  

    虽然我不想放弃我已经投入的努力(以及你们所有人提供的帮助)、但强烈建议我改用其他方案。 就个人而言、无 FPGA 解决   方案将为公司带来成本效益、但不幸的是、我也只能做我所说的事情。 不用说,我将会成为叛乱分子,并试图在我的业余时间(这种情况很少见,在学校和工作中)解决这个问题。 因此、我希望在问题得到解决之前尽快回复此主题。

    谢谢、

    Stephen B.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    海报 S.B. "缺乏沟通使一位伤心的技师感到难过。"

    也是如此-令人伤心(将会是)"帮助者"。 (足够)数量的"高性能 FPGA"可能会完全消除对 MCU 的要求!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Stephen Bolanos"]当然,FPGA 免费解决方案将使  公司从成本上受益

    也许可以借此机会查看产品的整个成本。 您可以节省 FPGA 的成本、但在其他地方仍可能会产生成本

    • 额外开发成本
      • 新电路板
      • 新软件(与使用现有软件相反)
      • 测试和制造曲线的成本
    • 额外库存成本
      • 多个电路板的库存
      • 跟踪成本(并非微不足道)
    • 不同电路板的培训、保修和维护
    • 机会成本。 通过将您解放出来处理另一个项目、所获得的回报可能超过优化新电路板 BOM 的额外成本。
    • 金螺丝刀。 开发完成后、很可能是通过利用现有硬件的功能、您可以提供额外的功能、而无需增加 BOM 即可充电

    请注意、 其中一些每电路板成本随着生产数量的增加而下降、有些成本将持平或略有增加。

    在某些情况下、使用现有电路板的成本甚至可能是负的。 考虑一下罕见的情况

    • 现有电路板现货、但不再使用。 库存超出保修要求。
    • 有限的生产运行。
    • 现有 S/W 的合理比例可以重新调整用途。

    由於超额的董事局有报废成本,而超额的董事局是无价值的,所以超额董事局实际上是一项法律责任。 因此 、使用现有电路板不仅是免费的、而且实际上是有利可图的。

    这是一个值得进行的练习、可能会在一定程度上改变您对优化和构建与购买的看法。

    Robert

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

    绝对出色——充分展现了工程和商业的敏锐度——非常好!
    (演示至关重要! 除了 Robert 之外、这家餐厅还可以带你的女朋友/妻子(但不能同时带两个人)去一家很棒的餐厅-演示文稿"跳出去!"