创作

完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>

3天内不再提示

rt-thread优化系列(三)软定时器的定时漂移问题分析

出出 来源:出出 作者:出出 2022-06-23 09:35 次阅读

软定时器

所谓软定时器,是由一个线程运行维护的定时器列表。由线程调用定时器回调函数。
相对硬定时器,是由中断(SysTick)维护的定时器列表,并在中断中调用定时器回调函数。

另外,还有一种*硬件定时器*,这个和单片机里的定时器是一个概念,由外设定时器实现定时。和 rt-thread 提供的硬定时器是两个不同概念。

对硬定时器回调函数有严格的执行时间要求,而且不能调用任何在中断中不能调用的函数。总之不能有任何不能在中断中执行的操作。

那么,软定时器呢,要求需要这么严格吗?

比如有个处理执行时间 10ms,比如在定时器中断函数里发送个等待 10ms 的消息...

无论是硬定时器还是软定时器,它们各自有一个定时器列表。列表中的定时器根据定时时间长短排序,定时时间短的在前。扫描这个列表中所有定时器,直到结尾或者出现第一个定时时间未到的定时器节点。当判断出定时时间到的时候,调用定时器回调函数。
假如,某次扫描这个列表中多于一个定时器到达定时时间,也就是需要执行两个以上的定时器回调函数。并且前一个扫描到的定时器的回调函数执行时间比较长,出现上面设想的某一种使用情况。这时候会出现什么效果?

因为硬定时器的种种硬性要求,以下讨论只针对软定时器。

从对 `rt_soft_timer_check` 的几个疑问讲起

先摆出官方的 rt_soft_timer_check 函数,实现。这个函数是来扫描定时器列表中到达定时时间的定时器,并调用定时器回调函数的。

```
void rt_soft_timer_check(void)
{
   rt_tick_t current_tick;
   struct rt_timer *t;
   register rt_base_t level;
   rt_list_t list;
   rt_list_init(&list);

   RT_DEBUG_LOG(RT_DEBUG_TIMER, ("software timer check enter\n"));

   /* disable interrupt */
   level = rt_hw_interrupt_disable();

   while (!rt_list_isempty(&rt_soft_timer_list[RT_TIMER_SKIP_LIST_LEVEL - 1]))
   {
       t = rt_list_entry(rt_soft_timer_list[RT_TIMER_SKIP_LIST_LEVEL - 1].next,
                           struct rt_timer, row[RT_TIMER_SKIP_LIST_LEVEL - 1]);

       current_tick = rt_tick_get();

       /*
        * It supposes that the new tick shall less than the half duration of
        * tick max.
        */
       if ((current_tick - t->timeout_tick) < RT_TICK_MAX / 2)
       {
           RT_OBJECT_HOOK_CALL(rt_timer_enter_hook, (t));

           /* remove timer from timer list firstly */
           _rt_timer_remove(t);
           if (!(t->parent.flag & RT_TIMER_FLAG_PERIODIC))
           {
               t->parent.flag &= ~RT_TIMER_FLAG_ACTIVATED;
           }
           /* add timer to temporary list  */
           rt_list_insert_after(&list, &(t->row[RT_TIMER_SKIP_LIST_LEVEL - 1]));

           soft_timer_status = RT_SOFT_TIMER_BUSY;
           /* enable interrupt */
           rt_hw_interrupt_enable(level);

           /* call timeout function */
           t->timeout_func(t->parameter);

           RT_OBJECT_HOOK_CALL(rt_timer_exit_hook, (t));
           RT_DEBUG_LOG(RT_DEBUG_TIMER, ("current tick: %d\n", current_tick));

           /* disable interrupt */
           level = rt_hw_interrupt_disable();

           soft_timer_status = RT_SOFT_TIMER_IDLE;
           /* Check whether the timer object is detached or started again */
           if (rt_list_isempty(&list))
           {
               continue;
           }
           rt_list_remove(&(t->row[RT_TIMER_SKIP_LIST_LEVEL - 1]));
           if ((t->parent.flag & RT_TIMER_FLAG_PERIODIC) &&
               (t->parent.flag & RT_TIMER_FLAG_ACTIVATED))
           {
               /* start it */
               t->parent.flag &= ~RT_TIMER_FLAG_ACTIVATED;
               rt_timer_start(t);
           }
       }
       else break; /* not check anymore */
   }
   /* enable interrupt */
   rt_hw_interrupt_enable(level);

   RT_DEBUG_LOG(RT_DEBUG_TIMER, ("software timer check leave\n"));
}

疑问一 `rt_list_t list` 这个临时中间变量的作用是什么?

  • 进入 `rt_soft_timer_check` 函数后,先初始化 list 变量。
  • 扫描定时器列表,当有到时的定时器,把这个定时器从软定时器列表 `rt_soft_timer_list` 移除,插入到这个 list 临时存放。
  • 开中断,调用定时器回调函数,关中断
  • 把 list 中存放的定时器移除
  • 判断定时器的周期定时器还是一次性定时器
  • 继续扫描定时器列表

list 是个局部变量,仅仅起临时存放当前这个定时器的作用。看似是一种稳妥的做法。
但是,这样做的初衷是什么?
为什么这个定时器一定要放到某个列表里?
如果从软定时器列表 `rt_soft_timer_list` 移除后,不插入任何列表会有什么影响?
因为退出 `rt_soft_timer_check` 函数后,list 列表不复存在了,应该不是退出 `rt_soft_timer_check` 函数后的需求,那么插入 list 和 从 list 取出之间有哪些情况需要我们注意,需要用一个临时列表将软定时器暂存?

定时器回调函数里可能发生哪些操作?

  • 修改定时器设置
  • 停止,重启定时器
  • 删除定时器
  • 发生中断,在中断里执行上述三种操作

修改定时器设置,可能只涉及到定时器的定时时间间隔和定时周期特性。这两个参数设置需要定时器必须在某个列表中吗?
停止,重启定时器,必然导致修改定时器所在列表指针,这里就涉及到双向列表的操作了。

> 简短介绍一下双向列表,

  • rt-thread 使用的双向列表,每一个节点有一个 prev 和 一个 next 指针,分别指向双向列表中的前一个节点和后一个节点。
  • 一个空列表 l 仅有一个不含数据的节点,此节点的 prev next 指针均指向它自己。
  • 任何一个带数据的列表节点必须进行初始化,使得它的 prev next 分别指向它自己,这一点和空列表 l 完全雷同!换句话说,***任何一个双向列表节点均有作为链表的潜质***。从操作上讲,你可以定义两个定时器,然后这两个定时器之间构建一个含有两个节点的双向列表,当然,这种做法没有多少实用意义。
  • 从链表中移除的节点,**必须**使得它的 prev next 指针指向它自己。
  • **无论一个节点是否在某个双向链表中,或者仅仅是一个独立节点,对它进行删除操作,效果是完全一样的!**
  • 更多的操作详见 rtservice.c 文件中相关函数,`rt_list_init, rt_list_insert_after, rt_list_insert_before, rt_list_remove` 等等。

停止定时器会把当前定时器从定时器列表删除,无论这个定时器有没有在某个定时器列表中,或者只是一个独立的定时器节点,删除操作的结果都是一样的,使用 list 这个临时列表可能不能保护它不被删除。
重启定时器会把它先从前一个列表中删除,然后插入软定时器列表 `rt_soft_timer_list` 。list 这个临时列表也阻止不了重启定时器操作。

**至此,可以看出,`rt_list_t list` 这个临时列表无任何存在意义**

疑问二 `soft_timer_status` 指示的是什么状态?

这是一个全局静态变量,它的使用也很简单,只在四个地方使用了,上面的源码函数里有两处,其它两个地方分别是初始化声明

/* soft timer status */
static rt_uint8_t soft_timer_status = RT_SOFT_TIMER_IDLE;

和——以下摘自 `rt_timer_start` 函数

#ifdef RT_USING_TIMER_SOFT
   if (timer->parent.flag & RT_TIMER_FLAG_SOFT_TIMER)
   {
       /* check whether timer thread is ready */
       if ((soft_timer_status == RT_SOFT_TIMER_IDLE) &&
          ((timer_thread.stat & RT_THREAD_STAT_MASK) == RT_THREAD_SUSPEND))
       {
           /* resume timer thread to check soft timer */
           rt_thread_resume(&timer_thread);
           rt_schedule();
       }
   }
#endif /* RT_USING_TIMER_SOFT */

将这四个地方联系起来看,意思好像是调用定时器回调函数前修改软定时器为 busy 状态,返回回调函数后恢复为 idle 状态,而如果是在定时器回调函数里调用 `rt_timer_start` ,可以达到不进行任务调度的目的。好像是起了双保险作用,真是这样吗?

我们分析一下上面这段 `rt_timer_start` 函数片段。
首先判断定时器是不是软定时器,只有软定时器启动时才有进行任务调度的可能。
其次,判断 `soft_timer_status` 是否空闲,以及软定时器线程是否***挂起态***。
以上仨条件均满足,进行任务调度。

我们重点关注“其次”,一个定时器线程调用的定时器回调函数,这个线程会是挂起态吗?答案是肯定不是。它在运行着,肯定是 `RT_THREAD_RUNNING` 的。那么这个 `soft_timer_status` “双保险”了吗?

疑问三 开篇提到的假想

开篇提到了一种假想,假想软定时器回调函数占用 cpu 时间有点儿长,会产生什么影响,引起什么后果。
讨论这个问题仍然离不开 `rt_soft_timer_check` 函数工作原理,我们再梳理一下 `rt_soft_timer_check` 函数的操作。(以下分析忽略 list 以及 soft_timer_status 相关操作)

  • 关中断
  • 扫描列表是否有节点
  • 取出第一个节点
  • ***获取当前系统 tick***
  • 检查定时器是否定时时间到,如果到时
  • 先从软定时器列表 `rt_soft_timer_list` 移除定时器。非周期定时器,取消激活态
  • 开中断
  • 执行定时器回调函数。(这里可能存在长时间操作)
  • 关中断
  • 对于周期性定时器,重启定时器;非周期定时器,前面已经做了取消激活态操作。
  • 继续扫描列表,取出第一个节点,***获取当前系统 tick*** ,检查定时器是否定时时间到。。。

假设 RT_TICK_PER_SECOND = 1000,有两个周期性定时器 t0 t1 ,定时间隔不同,同时启动,各自的定时器回调函数执行时间 t0 500us,t1 5 ms。
经过一段时间以后,总是可能会出现定时间隔公倍数时刻 Tn ,它们俩同时达到定时时间。
如果 t1 先被处理,那么 t1 重启的时候系统 tick 已经是 Tn + 5;t0 的重启时间有 50% 的可能是 Tn + 5, 50%的可能是 Tn + 6。
如果 t0 先被处理,t0 的重启时间有 50% 的可能是 Tn, 50%的可能是 Tn + 1;t1 重启时间是 Tn + 5 或 Tn + 6。

即便不考虑 t0 不考虑它对外的影响,也不考虑它受到的影响,仅仅分析 t1 自己对自己的影响,也可以看出来,随着时间的推移,它的定时间隔不是初始设定的 Inv ,而是 Inv + 5。

优化后的 `rt_soft_timer_check` 流程

  • ***获取当前系统 tick***
  • 关中断
  • 扫描列表是否有节点
  • 取出第一个节点
  • 检查定时器是否定时时间到,如果到时
  • 先从软定时器列表 `rt_soft_timer_list` 移除定时器。
  • 对于周期性定时器,***重启定时器***;非周期定时器,取消激活态。
  • 开中断
  • 执行定时器回调函数。(这里可能存在长时间操作)
  • 关中断
  • 继续扫描列表,取出第一个节点,检查定时器是否定时时间到。。。

其中,优化后的重启定时器不能使用原来的接口。需要使用如下原型函数接口

static rt_err_t _rt_timer_start(rt_timer_t timer, rt_tick_t current_tick)

第二个参数是进入 `rt_soft_timer_check` 函数,第一次关中断前获取的当前系统 `tick` 值,无论下面扫描出多少个到达时间的定时器,启动时间都是同一个 `tick` 值。
而且无论其中某个定时器回调函数执行时间有多长,或者多个回调函数累积执行时间有多长,它们的启动时间都是相同的!

注:由此,引起的另一个弊端的,期间某个定时器定时时间到了,但是会被判定为未到,下次调用 `rt_soft_timer_check` 时才会被处理。

测试程序

static void led1_timeout(void *parameter)
{
   rt_tick_t current_tick;
   int pin = rt_pin_read(LED1_PIN); 
   rt_pin_write(LED1_PIN, !pin);
   current_tick = rt_tick_get();
   rt_hw_us_delay(50000);
}
void led_tick_thread(void *parameter)
{
   rt_timer_t led1_timer;
   led1_timer = rt_timer_create("ledtim1", led1_timeout,
                               RT_NULL,  1000,
                               RT_TIMER_FLAG_PERIODIC | RT_TIMER_FLAG_SOFT_TIMER);
   if (led1_timer != RT_NULL) {
       rt_timer_start(led1_timer);
   }
   while (1) {
       rt_pin_write(LED0_PIN, PIN_HIGH);
       rt_thread_mdelay(500);
       rt_pin_write(LED0_PIN, PIN_LOW);
       rt_thread_mdelay(500);
   }
}

作为对比,两个 led 一个用软定时器控制亮灭频率,一个用 mdelay 延时控制亮灭频率。
如果 timeout 没有延迟,两个灯一直是同步的;有延迟后,过一段时间两个灯亮灭变不同步了。

总结

肯定有很多人反对说,定时器回调函数不要有长时间操作。发消息,信号,邮箱...交给其它线程操作云云。
软定时器本身就是一个线程,通过某种技术手段,在这个线程中可以完成的工作,一定要使用消息机制交给另外一下线程完成吗?

如何抉择,请君深思

本优化系列所有提到的更改已经提交到 gitee ,欢迎大家测试
https://gitee.com/thewon/rt_thread_repo

相关文章:
rt-thread 优化系列(0) SysTick 优化分析
rt-thread 优化系列(一) 之 过多关中断
rt-thread 优化系列(二) 之 同步和消息关中断分析

审核编辑:汤梓红

  • 定时器
    +关注

    关注

    22

    文章

    2038

    浏览量

    104007
  • 函数
    +关注

    关注

    3

    文章

    1927

    浏览量

    56372
  • RT-Thread
    +关注

    关注

    27

    文章

    413

    浏览量

    33889
收藏 人收藏

    评论

    相关推荐

    RT-Thread Studio IDE使用的基础介绍

    rt-thread studio 安装 首先需要确保已经安装 rt-thread studio 在工具栏找到 SDK 管理器,点击后在弹出窗口,Board_Supp...
    发表于 07-01 11:41 0次 阅读

    RT-Thread记录(十一、UART设备—源码解析)

    一文带你深入理解 RT-Thread I/O 设备模型 — UART 设备源码分析。
    的头像 矜辰所致 发表于 07-01 11:24 62次 阅读
    RT-Thread记录(十一、UART设备—源码解析)

    基于Art-Pi的NTP同步时钟+DHT11获取温度的设计实现

    开发环境:RT-Thread Studio 开发板:Art-Pi OS版本:4.0.3 硬件 显示屏:金逸晨GMG12864-03A 温湿度:DHT1...
    发表于 07-01 11:24 0次 阅读

    网络TCP通信程序卡在while死循环中怎么去修复呢

    问题发生位置:drv_eth.c文件rt_stm32_eth_tx函数中(254行) 修复方法:stm32f4xx_hal_eth.h头文件631行Lock成员变量定义为...
    发表于 07-01 11:12 0次 阅读

    浅析在Windows系统中将RT-Thread移植到Zynq的步骤

    一、功能简介 在window系统中将rtthread移植到zynq 在sdk中实现无bsp的zynq工程调试 在zynq中演示rtthread的shell功能 二、配...
    发表于 07-01 10:48 14次 阅读

    KUKA编程:命令通道$FCT_CALL的功能

    对于使用 CWRITE 的每个函数调用,都要进行检查以查看函数是成功执行还是因错误而中止。如果发生错....
    的头像 机器人及PLC自动化应用 发表于 07-01 10:39 18次 阅读

    什么是堆内存与栈内存?它们的分配和回收有什么特点?

    栈空间的大小是固定的,它有一个水位线,标识栈空间的分配状态,水位线里面的表示已经分配,然后这个水位线....
    的头像 一口Linux 发表于 07-01 10:33 20次 阅读

    读取KUKAC4.8.3系统机器人轴参数!

    SGL_SSD_ERROR(OWNER_NAME[], OWNER_AXNAME[], VAR_NA....
    的头像 机器人及PLC自动化应用 发表于 07-01 10:33 25次 阅读

    RT Smart上RIL通信组件及应用的移植和开发工作简述

    1、Linux RIL的概述与驱动 在移动网络通信中,尤其是智能手机,平板等智能设备中,RIL是一个非常重要的组件,RIL使各...
    发表于 07-01 10:29 384次 阅读

    Linux Ril中使用共享内存交互相关资料分享

    1、移植RIL到ART-Smart之共享内存简析 本次移植的linux ril中,rild作为一个client与modem通过AT命令交互,同时也作为...
    发表于 07-01 10:17 406次 阅读

    是否可以使用simulator来测一下STM32L496的功能呢

    事情还是得从RTTHREAD 官方的文档Keil 模拟器 STM32F103 上手指南 说起,用了很久的KEIL,相信大家很少有人用...
    发表于 06-30 17:12 3254次 阅读

    大佬带你理解RT-Thread内核并上手实践

    内核是操作系统最重要的部分,学习RT-Thread也是从最基本的内核开始。   RT-Thread内....
    发表于 06-30 17:10 84次 阅读

    如何对Numaker-IoT-M487开发板上的CRYPTO模块功能进行测试呢

    硬件介绍 NuMaker-IoT-M487 开发板以 NuMicro M487 系列微控制器为主控核心,主频 192MHz,512KB FLASH,160K...
    发表于 06-30 17:01 3175次 阅读

    关于Rt-Thread系统自带的Stack问题?

    MCU启动文件(startup.s)里定义的 Stack 是 1KB Stack_Size EQU 0x00000400 Rt-Thread 也定义了一个 Stack 请...
    发表于 06-30 16:52 5696次 阅读

    浅析Nuvoton M487开发板wifi模块的测试步骤

    前言 以前没接触过Rt,也没用过实时操作系统,所以板子到手,不如何进行学习。 幸亏官方资料多,教程也多,我等小白有持续了解...
    发表于 06-30 16:50 3215次 阅读

    C语言函数速查手册

    c\c++语言函数速查手册
    发表于 06-30 14:48 10次 阅读

    通过Uboot TFTP启动rt-smart内核

    介绍Windows下通过 Uboot  TFTP 方式下载和启动rt-smart 内核
    的头像 RT-thread 发表于 06-30 12:34 1039次 阅读
    通过Uboot TFTP启动rt-smart内核

    RT-Thread记录(十、全面认识 I/O 设备模型)

    学完 RT-Thread 内核,从本文开始熟悉了解 RT-Thread I/O 设备管理相关知识。
    的头像 矜辰所致 发表于 06-30 10:38 1168次 阅读
    RT-Thread记录(十、全面认识 I/O 设备模型)

    如何在IP的kernel module里设置并使用IP interrupt

    用附件里的 system-user.dtsi 把 project-spec/meta-user/re....
    的头像 FPGA之家 发表于 06-30 09:48 29次 阅读

    基于RT-Thread的麻雀一号无人值守门禁系统

    采用麻雀一号为主控设备来实现,摄像头数据,人体红外感应或门开关来判断是否有人闯入机房。通过Node-....
    的头像 极速紫韵 发表于 06-30 06:45 1281次 阅读
    基于RT-Thread的麻雀一号无人值守门禁系统

    基于RT-Thread设备运行数据分析预警系统

    本项目采用到硬件方案是:通过ART-Pi STM32H750主板上的I2C引脚和UART以及一个普通....
    的头像 极速紫韵 发表于 06-30 06:22 1252次 阅读
    基于RT-Thread设备运行数据分析预警系统

    基于RT-Thread和AB32VG1开发板实现家庭安全检测功能

    基于RT-Thread和中蓝讯科开发板,实现按键触发语音报警和NodeRed收集报警信息并上报腾讯云....
    的头像 极速紫韵 发表于 06-30 00:36 1114次 阅读
    基于RT-Thread和AB32VG1开发板实现家庭安全检测功能

    以良好的方式编写C++ class

    假设现在我们要实现一个复数类complex,在类的实现过程中探索良好的编程习惯。
    的头像 Linux爱好者 发表于 06-29 14:07 110次 阅读

    HASH哈希游戏开发(技术方案):开放寻址法详解

    开放寻址法
    的头像 開發丨KFZ433 发表于 06-29 13:50 29次 阅读
    HASH哈希游戏开发(技术方案):开放寻址法详解

    Kinoma Create的特定应用操作系统

      中断服务程序在中断发生时执行,就像在典型的嵌入式系统中一样。系统中的 ISR 或者是用于 PWM....
    的头像 星星科技指导员 发表于 06-29 11:29 80次 阅读
    Kinoma Create的特定应用操作系统

    STM32L051上使用RT-Thread (五、完结篇)

    应用篇-在STM32L051上使用RT-Thread 第五篇,也是本次应用的完结篇。
    的头像 矜辰所致 发表于 06-29 10:34 1462次 阅读
    STM32L051上使用RT-Thread (五、完结篇)

    OpenCV中积分图函数与应用

    这里最重要的是要注意到上面的图示,积分图对象的Mat(1,1)对应实际图像Mat(0,0),如果不加....
    的头像 OpenCV学堂 发表于 06-29 10:26 39次 阅读

    选择嵌入式设计软件时要考虑的前五个特性

      选择正确的嵌入式软件开发工具和正确的工具供应商可能是一项挑战。确保您选择的软件支持您将使用的设备....
    的头像 星星科技指导员 发表于 06-29 10:12 85次 阅读

    滴答处理程序不是调度程序

      从技术上讲,可以编写一个没有超时和延迟函数(如 OSTimeDly())的多任务应用程序。然而,....
    的头像 星星科技指导员 发表于 06-29 09:19 190次 阅读
    滴答处理程序不是调度程序

    EasyTask PHP常驻内存定时任务框架

    ./oschina_soft/gitee-EasyTask.zip
    发表于 06-29 09:19 12次 阅读
    EasyTask PHP常驻内存定时任务框架

    建立系统滴答率所涉及的基本权衡

      为了在开销和分辨率之间取得适当的平衡,您需要考虑硬件平台的功能和应用程序的时序需求。以 µC/O....
    的头像 星星科技指导员 发表于 06-29 09:15 194次 阅读

    Hash哈希竞猜游戏系统开发方案(逻辑分析)详情

    Hash,一般翻译做“散列”,也有直接音译为“哈希”的, 哈希系统 竞猜模式就是把任意长度的输入(又....
    的头像 開发Whi366 发表于 06-28 16:27 19次 阅读

    嵌入式设备电源管理的操作系统策略

      设备集成商必须采取全面的节能方法,从能够缩减功耗的硬件和基础设施开始,并采用能够控制设备整体功耗....
    的头像 星星科技指导员 发表于 06-28 14:22 223次 阅读

    STM32L051上使用RT-Thread (四、串口通讯)

    应用篇-在STM32L051上使用RT-Thread 第四篇,巧妙的使用信号量处理串口通讯。
    的头像 矜辰所致 发表于 06-28 10:59 1499次 阅读
    STM32L051上使用RT-Thread (四、串口通讯)

    STM32L051上使用RT-Threa (三、I2C通讯)

    应用篇-在STM32L051上使用RT-Thread 第三篇,学习RT-Thread Studio如....
    的头像 矜辰所致 发表于 06-27 10:32 1431次 阅读
    STM32L051上使用RT-Threa (三、I2C通讯)

    STM32L051上使用RT-Th (二、CubeMX配置)

    应用篇-在STM32L051上使用RT-Thread 第二篇,使用STM32CubeMX 进行对应外....
    的头像 矜辰所致 发表于 06-26 14:02 2175次 阅读
    STM32L051上使用RT-Th (二、CubeMX配置)

    RT-Thread自动初始化详解

    我们知道,在写裸机程序时,当我们完成硬件初始化后,就需要在主函数中进行调用。当我们使用RT-Thre....
    的头像 嵌入式大杂烩 发表于 06-25 21:38 3252次 阅读
    RT-Thread自动初始化详解

    STM32L051上使用RT-Thread (一、新建项目)

    学完了 RT-Thread 内核基础,来使用 RT-Thread 实现一个小应用。 硬件平台:ST....
    的头像 矜辰所致 发表于 06-25 20:45 3440次 阅读
    STM32L051上使用RT-Thread (一、新建项目)

    基于ESP32C3运行RT-THREAD

    在ESP32上面运行 RT-THREAD.
    的头像 Thomas的小火车 发表于 06-25 07:58 3113次 阅读
    基于ESP32C3运行RT-THREAD

    ReactiveObjC objective-C的函数响应式编程框架

    ./oschina_soft/ReactiveObjC.zip
    发表于 06-24 14:26 10次 阅读
    ReactiveObjC objective-C的函数响应式编程框架

    什么是PWM PWM控制小车速度方法

    第一种方法用单片机的定时器模拟出PWM。假如你用定时器延时100ms,在50ms之前某一个引脚为低电....
    的头像 要长高 发表于 06-24 11:53 586次 阅读
    什么是PWM PWM控制小车速度方法

    RT-Thread记录(九、RTT中断处理与阶段小结)

    RT-Thread 内核部分最后一个点 中断管理,顺带着对前面所学知识做个小结。
    的头像 矜辰所致 发表于 06-24 10:25 3389次 阅读
    RT-Thread记录(九、RTT中断处理与阶段小结)

    Hash哈希竞猜游戏开发方案(技术详情)简介

    Hash,一般翻译做“散列”,也有直接音译为“哈希”的,哈l8l希2809系2756统竞猜模式就是把....
    发表于 06-24 10:08 29次 阅读

    BLE MESH蓝牙组网蓝牙定时器方案的介绍

    蓝牙定时器是在按键式定时器的基础上升级而来的,增加了蓝牙连接功能,15米范围内可以通过微信小程序对开....
    的头像 潘霞 发表于 06-23 16:27 217次 阅读

    NUC980开发板应用 基于NK-980IoT的国学唐诗学习机

    基于NK-980IoT的国学唐诗学习机 1 项目背景 最近一直在陪小孩学习国学精髓,比如唐诗、宋词这....
    的头像 RTThread物联网操作系统 发表于 06-23 14:55 1256次 阅读

    gft4c生成函数声明列表工具

    ./oschina_soft/gft4c.zip
    发表于 06-23 14:50 12次 阅读
    gft4c生成函数声明列表工具

    基于RT-Thread+RA6M4的智能安防系统详解

      无论是在家里还是在公司,安防都尤为的重要,与其亡羊补牢,更重要的是防患于未然。安全是目的,防范是....
    的头像 物联网技术分享 发表于 06-23 14:34 161次 阅读
    基于RT-Thread+RA6M4的智能安防系统详解

    分享一下STM32CubeIDE的SWV功能

    这里有个简单的方法,直接在syscalls.c文件中,改写_write()函数的内容,代码如下所示。....
    的头像 strongerHuang 发表于 06-23 10:21 183次 阅读

    rt-thread 优化系列(五)lwip 裁剪

    很久之前就开始整理下面的优化项列表了,但是有很多问题研究不深,一时不敢冒失推出。
    的头像 出出 发表于 06-23 10:21 2401次 阅读

    RT-Thread记录(八、理解RT-Thread内存管理)

    记得最初学习 RT-Thread ,对于内存管理我也是简单看看然后一笔带过,当时觉得用不上,在我做的....
    的头像 矜辰所致 发表于 06-23 10:11 268次 阅读
    RT-Thread记录(八、理解RT-Thread内存管理)

    rt-thread 驱动篇(八)hwtimer 重载算法优化

    区别于 rt-thread 内核实现的两种定时器,这种定时器依赖芯片内置的定时器外设,依靠稳定高速的....
    的头像 出出 发表于 06-23 10:10 1520次 阅读
    rt-thread 驱动篇(八)hwtimer 重载算法优化

    rt-thread 优化系列(四)信号对 ipc 的影响

    信号 signal,并不是线程间同步的信号量 semaphore。后者是线程间同步机制的一种,而前者....
    的头像 出出 发表于 06-23 09:51 1478次 阅读

    GD32 RISC-V系列 BSP框架制作与移植

      手把手教你使用RT-Thread制作GD32 RISC-V系列BSP 熟悉RT-Thread的朋....
    的头像 嵌入式大杂烩 发表于 06-22 19:44 2081次 阅读
    GD32 RISC-V系列 BSP框架制作与移植

    C语言的具体结构与基本数据类型

    简单来说,一个C程序就是由若干头文件和函数组成。
    的头像 STM32嵌入式开发 发表于 06-22 15:35 216次 阅读

    Java反射机制清空字符串导致业务异常分析

    JVM为了提高性能和减少内存开销,在实例化字符串常量时进行了优化。JVM在Java堆上开辟了一个字符....
    的头像 openEuler 发表于 06-22 11:17 107次 阅读

    RT-Thread记录(七、IPC机制之邮箱、消息队列)

    讲完了线程同步的机制,我们要开始线程通讯的学习,
    的头像 矜辰所致 发表于 06-22 10:06 251次 阅读
    RT-Thread记录(七、IPC机制之邮箱、消息队列)

    rt-thread 驱动篇(三) serialX 压力测试

    本周笔者花了好多天的时间,计划从多个方面对串口驱动做个比较。下面就从以下几个角度做个对比测试。
    的头像 出出 发表于 06-22 09:22 1363次 阅读

    rt-thread 驱动篇(二) serialX 理论实现

    在前一篇文章里,大致提出了我的串口驱动框架理论。里面做了一些对串口驱动特性的幻想。也在 NUC970....
    的头像 出出 发表于 06-22 09:03 1471次 阅读
    rt-thread 驱动篇(二) serialX 理论实现

    RE46C163 RE46C163是CMOS电离烟雾探测器I.C. w /互连,定时器模式,报警记忆

    信息 RE46C163器件是一种低功耗,CMOS电离型烟雾探测器IC。由于外部元件很少,该电路将为电离型烟雾探测器提供所有必需的功能。内部振荡器每隔1.67秒为烟雾探测电路提供10.5 ms的电源,以使待机电流保持在最低水平。在待机状态下,每40秒检查一次电池电量不足的情况。外部引脚可以选择连续音或NFPA时间喇叭模式。互连引脚允许连接多个探测器,因此当一个单元发出警报时,所有单元都会发出声音。电荷转储功能将在退出本地时快速释放互连线报警。互连输入也经过数字滤波。内部1分钟定时器允许单个按钮,按下测试用于降低灵敏度模式。报警记忆功能允许用户确定设备是否先前已进入本地报警条件。利用低功耗CMOS技术,RE46C163器件设计用于符合美国保险商实验室规范UL217和UL268的烟雾探测器。 针可选喇叭图案 报警记忆 灵敏度控制定时器:1分钟 >所有引脚上的> 1500V ESD保护(HBM) 离子检测器输入的保护输出 ±0.75 pA检测输入电流 内部反向电池保护 低静态电流消耗( I / O滤波器和充电转储 内部电池低电量检测 电源电池低电量测试 最多可互连66个探测器 符合RoHS标准,无铅封装 电路图、引脚图和封装图...
    发表于 04-18 23:15 122次 阅读

    RE46C180 RE46C180是CMOS可编程离子烟雾探测器ASIC,具有互连,定时器模式,报警存储器

    信息 RE46C180是下一代低功耗可编程CMOS电离型烟雾探测器IC。该电路具有极少的外部元件,可为电离式烟雾探测器提供所有必需的功能。片上振荡器每10秒钟为烟雾探测电路提供5ms的电源,以使待机电流保持在最低水平。检查电池是否过低条件每80秒进行一次,待机时每320秒进行一次电离室测试。时间喇叭模式支持NFPA 72紧急疏散信号。互连引脚允许连接多个探测器,这样当一个单元发出警报时,所有单元都会响起。当退出本地警报时,电荷转储功能将快速释放互连线。互连输入也经过数字滤波。内部9分钟或80秒定时器可用于降低灵敏度模式。本地报警记忆功能允许用户确定设备是否先前已进入本地报警状态。利用低功耗CMOS技术RE46C180设计用于符合美国保险商实验室规范UL217和UL268的烟雾探测器。 6-12V操作 低静态电流消耗< / p> +/- 0.75pA检测​​输入电流 离子检测器输入的保护输出 可编程待机灵敏度< / p> 可编程嘘声灵敏度 可编程滞后 可编程电压表用于按键测试 电池设置点不足 本地闹钟内存 自动闹钟定位 喇叭同步 9分钟或80秒Hush Ti mer 时间或连续号角模式 最多可互连40个探测器 IO Filter and Charge Dump < / p> 10年...
    发表于 04-18 23:15 109次 阅读

    RE46C162 RE46C162是一种CMOS电离烟雾探测器。 w /互连,定时器模式,报警记忆

    信息 RE46C162器件是一种低功耗CMOS电离型烟雾探测器IC。由于外部元件很少,该电路将为电离型烟雾探测器提供所有必需的功能。内部振荡器每隔1.67秒为烟雾探测电路提供10.5 ms的电源,以使待机电流保持在最低水平。在待机状态下,每40秒检查一次电池电量不足的情况。外部引脚可以选择连续音或NFPA时间喇叭模式。互连引脚允许连接多个探测器,因此当一个单元发出警报时,所有单元都会发出声音。电荷转储功能将在退出本地时快速释放互连线报警。互连输入也经过数字滤波。内部8分钟定时器允许单个按钮,按下测试用于降低灵敏度模式。报警记忆功能允许用户确定设备是否先前已输入本地报警条件。利用低功耗CMOS技术,RE46C162器件设计用于符合美国保险商实验室规范UL217和UL268的烟雾探测器。 针可选喇叭图案 报警记忆 灵敏度控制定时器:8分钟 >所有引脚上的> 1500V ESD保护(HBM) 离子检测器输入的保护输出 ±0.75 pA检测输入电流 内部反向电池保护 低静态电流消耗( I / O滤波器和充电转储 内部电池低电量检测 电源电池低电量测试 最多可互连66个探测器 符合RoHS标准,无铅封装 电路图、引脚图和封装图...
    发表于 04-18 23:15 150次 阅读

    RE46C152 RE46C152是一款电离式烟雾探测器IC,具有时间或连续音,互连,定时器,低电池

    信息 RE46C152是一款低功耗CMOS电离型烟雾探测器IC。由于外部元件很少,该电路将为电离型烟雾探测器提供所有必需的功能。内部振荡器每1.66秒向烟雾探测电路供电10.5mS,以使待机电流保持最小。在待机状态下,每40秒检查一次电池电量不足的情况。音调输入允许选择时间模式或2/3占空比连续音调。时间喇叭模式支持NFPA 72紧急疏散信号。互连引脚允许连接多个探测器,这样当一个单元发出警报时,所有单元都会响起。内部8分钟计时器允许使用单独的按钮来降低灵敏度模式。用于测试和定时器模式的单按钮操作也是可能的。尽管该设备设计用于利用电离室的烟雾检测,但它可以用于各种安全应用。 RE46C152设计用于烟雾探测器,符合美国保险商实验室规范UL217和UL268 >所有引脚上的> 1500V ESD保护(HBM) 离子检测器输入的保护输出 +/- 0.75pA检测​​输入电流 内部反向电池保护 低静态电流消耗( 16L PDIP 内部电池低电量检测 电源低电量测试< / p> 最多可互连40个探测器 引入可选喇叭模式 8分钟定时器进行灵敏度控制 符合RoHS标准的无铅包装。 电路图、引脚图和封装图...
    发表于 04-18 23:15 86次 阅读

    RE46C144 RE46C144是一款带连续音,定时器的光电烟雾探测器IC

    信息 RE46C144是低功耗CMOS光电式烟雾探测器IC。该电路具有最少的外部元件,可为光电式烟雾探测器提供所有必需的功能。 RE46C144设计用于符合美国保险商实验室规范UL217和UL268的烟雾探测器。 内部电源重置 低静态电流消耗 提供16L PDIP或16L N SOIC 所有引脚上的ESD保护 最多可连接40个探测器 10分钟灵敏度控制定时器 连续音喇叭模式 内部电池低电量和室内测试 与Allegro A5358兼容 提供标准包装或符合RoHS标准的无铅包装。 电路图、引脚图和封装图...
    发表于 04-18 23:15 212次 阅读

    RE46C127 RE46C127是一款带有连续,互连,定时器的电离烟雾探测器IC

    信息 RE46C127是低功耗CMOS电离型烟雾探测器IC。由于外部元件很少,该电路将为电离型烟雾探测器提供所有必需的功能。内部振荡器每1.66秒向烟雾探测电路供电10.5mS,以使待机电流保持最小。在待机状态下,每40秒检查一次电池电量不足的情况。 2/3占空比连续喇叭模式用于报警条件。互连引脚允许连接多个探测器,这样当一个单元发出警报时,所有单元都会响起。内部8分钟计时器允许使用单独的按钮来降低灵敏度模式。尽管该装置设计用于利用电离室进行烟雾检测,但它可用于各种安全应用。 RE46C127设计用于符合美国保险商实验室规范UL217和UL268的烟雾探测器。 离子检测器输入的保护输出 +/- 0.75pA检测​​输入电流 内部反向电池保护 低静态电流消耗( 提供16L PDIP或16L N SOIC 所有引脚上的ESD保护 ;内部电池低电量检测 最多可互连40个探测器 8分钟灵敏度控制定时器 兼容使用Allegro A5348 提供标准包装或符合RoHS标准的无铅包装。 电路图、引脚图和封装图...
    发表于 04-18 23:15 153次 阅读

    RE46C140 RE46C140是一款具有时间,定时器的光电烟雾探测器IC

    信息 RE46C140是低功耗CMOS光电式烟雾探测器IC。该电路具有最少的外部元件,可为光电式烟雾探测器提供所有必需的功能。 RE46C140设计用于符合美国保险商实验室规范UL217和UL268的烟雾探测器。 内部电源重置 低静态电流消耗 提供16L PDIP或16L N SOIC 所有引脚上的ESD保护 最多可连接40个探测器 10分钟灵敏度控制定时器 时间号角模式 内部电池低电量和室内测试 与Allegro A5366兼容 提供标准包装或符合RoHS标准的无铅包装。 电路图、引脚图和封装图...
    发表于 04-18 23:14 139次 阅读

    RE46C122 RE46C122是一款带时间,互连,定时器,低电池的电离烟雾探测器IC

    信息 RE46C122是低功耗CMOS电离型烟雾探测器IC。由于外部元件很少,该电路将为电离型烟雾探测器提供所有必需的功能。内部振荡器每1.66秒向烟雾探测电路供电10.5mS,以使待机电流保持最小。在待机状态下,每40秒检查一次电池电量不足的情况。颞角图案支持NFPA 72紧急疏散信号。互连引脚允许连接多个探测器,这样当一个单元发出警报时,所有单元都会响起。内部10分钟计时器允许使用单独的按钮来降低灵敏度模式。尽管该装置设计用于利用电离室进行烟雾检测,但它可用于各种安全应用。 RE46C122设计用于符合Und的烟雾探测器 >所有引脚上的> 1500V ESD保护(HBM) 离子检测器输入的保护输出 +/- 0.75pA检测​​输入电流 内部反向电池保护 低静态电流消耗( 16L PDIP或16L N SOIC 内部电池低电量检测 加电低电量测试 最多可互连40个探测器 10分钟定时器进行灵敏度控制 兼容使用Allegro A5367 提供标准包装或符合RoHS标准的无铅包装。 电路图、引脚图和封装图...
    发表于 04-18 23:13 242次 阅读

    CAT1832 电压监控器,看门狗定时器,手动复位,3.3 V,具有高电平有效和低电平复位

    信息 CAT1832电压监控器可以暂停并重新启动“挂起”或“停顿”的微处理器,在电源故障后重启微处理器,并去除手动/推送 - 按钮微处理器复位开关该器件是Maxim / Dallas Semiconductor DS1832监控器的替代品。精密基准电压源和比较器电路监控3.3 V系统电源电压V 。在上电期间或当电源超出可选容差限制时,RESET和都将变为活动状态。在电源电压升至RESET阈值电压以上后,复位信号保持有效至少250 ms,从而使电源和系统处理器稳定。跳闸点容差输入TOL选择CAT1832 3.3 V电源的跳闸电平容差为10%或20%。每个器件都具有推挽式高电平有效复位输出。 CAT1832还具有推挽式低电平有效复位输出。去抖动手动复位输入激活复位输出,并在释放后保持有效状态至少250 ms。还包括看门狗定时器重置因软件或硬件故障而停止的微处理器。可选择三个看门狗超时周期:150 ms,600 ms和1.2 sec。如果在看门狗超时周期结束前,输入未被选通为低电平,则复位信号将至少激活250 ms。 可选复位电压容差 - CAT1232LP for 5.0 V电源 - 用于3.3 V电源的CAT1832 可选看门狗周期:150 ms,600 ms或1.2 sec 两个复位输出 - 高电平有效推挽式复位输出 - 低电...
    发表于 04-18 22:19 238次 阅读

    MC1455B 定时器电路

    信息 MC1455单片定时器电路是一种高度稳定的控制器,能够产生精确的时间延迟或振荡。如果需要,提供附加端子用于触发或重置。在延时模式下,时间由一个外部电阻和电容精确控制。为了稳定地作为振荡器工作,可以通过两个外部电阻和一个电容精确控制自由运行频率和占空比。该电路可以在下降波形上触发和复位,输出结构可以提供或吸收高达200 mA的电流或驱动TTL电路。 直接替换NE555定时器 从微秒到时间的定时小时 在稳定模式和单稳态模式下运行 可调节占空比 高电流输出可以输出或吸收200 mA 输出可以驱动TTL 温度稳定性为0.005%/°C 常开或常关输出 无铅封装可用 电路图、引脚图和封装图...
    发表于 04-18 21:57 1625次 阅读

    NCV1455 定时器电路

    单片定时器电路是一种高度稳定的控制器,能够产生精确的时间延迟或振荡。如果需要,提供附加端子用于触发或重置。在延时模式下,时间由一个外部电阻和电容精确控制。为了稳定地作为振荡器工作,可以通过两个外部电阻和一个电容精确控制自由运行频率和占空比。电路可以在下降波形上触发和复位,输出结构可以提供或吸收高达200 mA的电流或驱动TTL电路。 特性 NE555的直接替换计时器 从微秒到小时的时间 在Astable和Monostable模式下操作 可调节占空比 高电流输出可以输出或吸收200 mA 输出可以驱动TTL 温度稳定性0.005%/°C 正常开启或正常关闭输出 无铅封装可用 电路图、引脚图和封装图...
    发表于 04-18 21:28 253次 阅读
    NCV1455 定时器电路

    LMC555 用于生成准确延时和振荡的低功耗 555 定时器

    信息描述 The LMC555 device is a CMOS version of the industry standard 555 series general-purpose timers. In addition to the standard package (SOIC, VSSSOP, and PDIP) the LMC555 is also available in a chip-sized package (8-bump DSBGA) using TI’s DSBGA package technology. The LMC555 offers the same capability of generating accurate time delays and frequencies as the LM555 but with much lower power dissipation and supply current spikes. When operated as a one-shot, the time delay is precisely controlled by a single external resistor and capacitor. In the astable mode the oscillation frequency and duty cycle are accurately set by two external resistors and one capacitor. The use of TI’s LMCMOS process extends both the frequency range and the low supply capability.特性Industry’s Fastest Astable Frequency of 3 MHz Available in Industry's Smallest 8-Bump DSBGA Package (1.43mm × 1.41mm) Less Than 1 mW Typical P...
    发表于 04-18 20:33 1249次 阅读

    TLC555-DIE DIE LinCMOS 定时器

    信息描述 TLC555 是一个使用 TI LinCMOS 工艺制造的单片定时电路。 定时器与 CMOS,TTL,和 MOS 逻辑电路完全兼容并且运行在高达 2MHz 的频率上。 由于它的高阻抗特性,这个器件使用的定时电容器比那些 NE555 所使用的电容器要小。 因此,可实现更加准确的时间延迟和振荡。 在整个电源电压范围内功耗较低。与 NE555 类似,TLC555 有一个约等于电源电压三分之一的触发电平以及一个约等于电源电压三分之二的阀值电平。 可使用控制电压端子 (CONT) 来改变这些电平。 当触发输入 (TRIG) 下降至低于触发电平的时候,触发器被设定并且输出变为高电平。 如果 TRIG 高于触发电平并且阀值输入 (THRES) 在阀值电平之上的话,触发器被复位并且输出为低电平。 复位输入 (RESET) 的优先级高于所有其它输入并且可被用来启动一个新的定时周期。 如果 RESET 为低电平,触发器被复位并且输出为低电平。 只要当输出为低电平,在放电端子 (DISCH) 和接地 (GND) 之间提供一个低阻抗路径。 所有未使用的输入应该被接至一个适当的逻辑电平来防止错误触发。当 CMOS 输出能够吸收超过 100mA 的电流并提供超过 10mA 电流时,...
    发表于 04-18 20:08 1048次 阅读

    LM555 单定时器

    信息LM555是一个高度稳定的控制器,能够产生精确定时脉冲。 如果是单稳态运行,延时将由一个外部电阻和一个电容进行控制。 如果是稳态运行,频率和占空比将由两个外部电阻和一个电容进行精确控制。 高电流驱动能力(200mA) 可调占空比 0.005%/°C的温度稳定性 计时范围从微秒到小时 关闭时间少于2微秒 精密计时 脉冲发生 延时发生 连续定时
    发表于 04-18 19:03 1231次 阅读

    MC1455 定时器电路

    信息 MC1455单片定时器电路是一种高度稳定的控制器,能够产生精确的时间延迟或振荡。如果需要,提供附加端子用于触发或重置。在延时模式下,时间由一个外部电阻和电容精确控制。为了稳定地作为振荡器工作,可以通过两个外部电阻和一个电容精确控制自由运行频率和占空比。该电路可以在下降波形上触发和复位,输出结构可以提供或吸收高达200 mA的电流或驱动TTL电路。 直接替换NE555定时器 从微秒到时间的定时小时 在稳定模式和单稳态模式下运行 可调节占空比 高电流输出可以输出或吸收200 mA 输出可以驱动TTL 温度稳定性为0.005%/°C 常开或常关输出 无铅封装可用 电路图、引脚图和封装图...
    发表于 04-18 18:54 806次 阅读

    MC14541B 可编程定时器振荡器

    1B可编程定时器由一个16级二进制计数器,一个用于外部电容和两个电阻的集成振荡器,一个自动上电复位电路和输出控制逻辑组成。 通过接通电源初始化定时,然后启用上电复位并在指定的V DD 范围内初始化计数器。电源已打开时,可以施加外部复位脉冲。在释放初始复位命令时,振荡器将以外部RC网络确定的频率振荡。 16级计数器将振荡器频率(f ocs 除以n th 级频率为f osc / 2 n 。 特性 可用输出2 8 ,2 10 ,2 13 或2 16 正边沿时钟转换的增量 内置低功耗RC振荡器(在整个温度范围内精度为+/- 2%,+ / - 20%电源和+ / - 在...
    发表于 04-18 18:54 657次 阅读
    MC14541B 可编程定时器振荡器

    MC14536B 可编程定时器

    6B可编程定时器是一个24级二进制纹波计数器,可通过二进制代码选择16级。提供了片内RC振荡器或外部时钟的规定。包括一个包含脉冲型输出的片上单稳态电路。通过选择适当的计数器级和适当的输入时钟频率,可以实现各种定时。 特性 24个触发器阶段 - 将从2 0 计数到2 24 最后16个阶段可通过四位选择代码选择 8-Bypass输入允许绕过前8个阶段 设置和重置输入 时钟抑制和振荡器抑制输入 片上RC振荡器规定 片上单稳态输出规定 时钟调理电路允许长时间上升和下降时间操作 测试模式允许快速测试序列 电源电压范围= 3.0 Vdc至18 Vdc 能够驱动两个低电平-power TTL Loads或One Low - 额定温度范围内的功率肖特基TTL负载 无铅封装可用 电路图、引脚图和封装图...
    发表于 04-18 18:54 391次 阅读
    MC14536B 可编程定时器

    LTC3246 具看门狗定时器的宽 VIN范围、降压-升压型充电泵

    和特点 2.7V 至 38V 工作范围 (42V 绝对最大值) IQ = 20μA (工作模式);1.5μA (停机模式) 具自动模式切换功能的多模式降压-升压型充电泵 (2:1、1:1、1:2) 12V 至 5V 转换效率 = 81% IOUT 高达 500mA VOUT:固定的 3.3V、5V 或可调 (2.5V 至 5V) 超低 EMI 辐射 专为符合 ISO 26262 诊断覆盖要求的系统而设计 过热、过压和短路保护 工作结温:150°C (最大值) 具外部定时控制功能的 POR / 看门狗控制器 耐热性能增强型 16 引脚 MSOP 封装 产品详情 LTC®3246 是一款具集成化看门狗定时器的开关电容器降压-升压型 DC/DC 转换器。该器件可采用 2.7V 至 38V 输入产生一个稳定的输出 (3.3V、5V 或可调)。开关电容器分数转换用于在很宽的输入电压范围内保持调节作用。内部电路可自动选择转换比,从而在输入电压和负载条件变化的情况下实现效率的优化。不需要使用电感器。LTC3246 的复位时间和看门狗超时无需外部组件即可设定,或采用外部电容器进行调节。一种窗口模式看门狗功能用于高可靠性应用。复位输入可用于提供额外的电源监视或配置为一个按钮复位。低工作电流 (无负载时为 20μA,在停机模式中为 1.5μA) 和低外部...
    发表于 02-22 13:49 220次 阅读
    LTC3246 具看门狗定时器的宽 VIN范围、降压-升压型充电泵

    LTC3256 具看门狗定时器的宽 VIN 范围、双输出、350mA 降压型充电泵

    和特点 输入电压范围:5.5V 至 38V 单独使能的 5V 和 3.3V 固定输出 5V 输出:100mA (最大值) 3.3V LDO 输出:250mA (最大值) 具自动模式切换功能的多模式降压型充电泵 (2:1、1:1) 低静态电流 当两个输出均在调节时为 20μA (无负载) 在停机模式为 0.5μA 专为符合 ISO26262 标准的系统进行设计 1.1V 基准输出用于系统诊断 具可调定时的上电复位和看门狗控制器 在每个输出上提供过流故障保护 过热保护 150°C 最大工作结温 耐热性能增强型 16 引脚 MSOP 封装 产品详情 LTC®3256 是一款宽输入范围开关电容器降压型 DC/DC 转换器,其可产生两个稳定的输出:通过直接连接至充电泵输出产生 5V 输出,和通过一个低压差 (LDO) 线性后置稳压器产生 3.3V 输出。该器件可提供高达 350mA 的总输出电流。在 12V VIN 和两个输出端上均承受最大负载的情况下,功率耗散比双路输出 LDO 稳压器解决方案减少了 2W 以上。LTC3256 通过在尽可能宽的工作范围内使充电泵运行于 2:1 模式以最大限度地提高效率,并由于 VIN 和负载情况而自动地按需切换至 1:1 模式。受控的输入电流和开关转换速率尽量地降低了传导和辐射 EMI。一个集成的...
    发表于 02-22 13:48 316次 阅读
    LTC3256 具看门狗定时器的宽 VIN 范围、双输出、350mA 降压型充电泵

    LTC6995-1 TimerBlox:长时间定时器、低频振荡器

    和特点 周期范围:1ms 至 9.5 小时利用上电或复位输入实现定时复位利用 1~3 个电阻器进行配置最大频率误差 <1.5%可编程输出极性2.25V 至 5.5V 单电源操作55μA 至 80μA 电源电流 (2ms 至 9.5 小时时钟周期)500μs 启动时间CMOS 输出驱动器可供应 / 吸收 20mA 电流-55°C 至 125°C 工作温度范围可提供扁平 (高度仅 1mm) SOT-23 (ThinSOTTM) 封装和 2mm x 3mm DFN 封装 产品详情 LTC®6995 是一款硅振荡器,具有一个 1.024ms 至 9.54 小时 (29.1μHz 至 977Hz) 的可编程周期范围,专供长持续时间定时过程之用。LTC6995 隶属于 TimerBlox® 通用型硅定时器件系列。单个电阻器 RSET 负责设置 LTC6995 的内部主振荡器频率。输出时钟周期由该主振荡器和一个内部分频器 NDIV 来决定 (可编程至从 1 至 221 范围内的 8 个设定值)。当振荡时,LTC6995 产生一个 50% 占空比的方波输出。该器件提供了一种复位功能,用以停止主振荡器并清零内部分频器。取消复位将启动一个完整的输出时钟周期,这适用于可编程上电复位和看门狗定时器应用。LTC6995 具有两种复位功能版本。对于 LTC6995-1 复位输入为高电平有效,而对于 LTC...
    发表于 02-22 12:23 317次 阅读
    LTC6995-1 TimerBlox:长时间定时器、低频振荡器