传感器数据收集装置的制造方法

文档序号:10686582阅读:632来源:国知局
传感器数据收集装置的制造方法
【专利摘要】传感器数据收集装置具有第1电路和控制器。所述控制器具有第1状态和第2状态,在所述第2状态时取得一个或多个传感器的数据。所述第1电路具有第1寄存器,使所述控制器从所述第1状态向所述第2状态转变。所述控制器基于所述多个数据生成周期中的最小的数据生成周期来设定所述第1寄存器。
【专利说明】
传感器数据收集装置
技术领域
[0001 ]本实施方式涉及能够与多个传感器连接的传感器数据收集装置。
【背景技术】
[0002]在进行多个传感器的数据取得的处理器系统中,为了降低功耗,处理器在不进行数据取得时处于睡眠状态。
[0003]在这样的处理器系统中,存在如下方法:在多个传感器的数据生成周期不同的情况下,每当能够取得各传感器的数据时,使所述处理器从睡眠状态向激活状态转变。在该方法中,处理器的状态转变频繁,伴随状态转变的功耗增大。

【发明内容】

[0004]—个实施方式的目的在于,提供能够降低控制器的状态转变次数,并能够降低控制器的功耗的传感器数据收集装置。
[0005]实施方式是一种传感器数据收集装置,其能够与具有不同的数据生成周期的多个传感器连接,所述传感器数据收集装置具备:
[0006]控制器,其具有第I状态和第2状态,在所述第2状态时取得一个或多个所述传感器的数据;以及
[0007]第I电路,其具有第I寄存器,基于所述第I寄存器的寄存器值,使所述控制器从所述第I状态向所述第2状态转变,
[0008]所述控制器基于所述多个数据生成周期中的最小的数据生成周期来设定所述第I
寄存器。
[0009]另外,实施方式是一种传感器数据收集装置,其能够与具有多个不同的数据生成周期的多个传感器连接,所述传感器数据收集装置具备:
[0010]控制器,其具有第I状态和第2状态,在所述第2状态时取得一个或多个所述传感器的数据;以及
[0011]第I电路,其具有第I寄存器,基于所述第I寄存器的寄存器值,使所述控制器从所述第I状态向所述第2状态转变,
[0012]所述控制器针对每个传感器,基于所述数据生成周期来算出作为下次的数据生成时刻的第I时刻信息,对所述第I时刻信息分别加上数据有效期间来算出第2时刻信息,基于各传感器中的具有比最小的第2时刻信息小的一个或多个第I时刻信息中的最大的第I时刻信息的第I传感器的第I时刻信息,设定所述第I寄存器。
【附图说明】
[0013]图1是示出第I实施方式的处理器系统的框图。
[0014]图2是示出第I实施方式的管理表的图。
[0015]图3的(A)是示出比较例的传感器和处理器的工作的时间图,图3的(B)是示出第I?第3实施方式的传感器和处理器的工作的时间图。
[0016]图4是示出第I实施方式的应用程序的工作步骤的流程图。
[0017]图5是示出第I实施方式的管理表登记例程的流程图。
[0018]图6是示出第I实施方式的唤醒触发设定例程的流程图。
[0019]图7是示出第I实施方式的中断处理程序(interrupt handler)的工作步骤的流程图。
[0020]图8是示出第2实施方式的处理器系统的框图。
[0021 ]图9是示出第2实施方式的管理表的图。
[0022]图10是示出第2实施方式的应用程序的工作步骤的流程图。
[0023]图11是示出第2实施方式的管理表登记例程的流程图。
[0024]图12是示出第2实施方式的中断处理程序的工作步骤的流程图。
[0025]图13是示出第2?第6实施方式的内部计时器再次设定例程的流程图。
[0026]图14是示出第2实施方式的唤醒触发设定例程的流程图。
[0027]图15是示出第3实施方式的处理器系统的框图。
[0028]图16是示出第3实施方式的管理表的图。
[0029]图17是示出第3实施方式的应用程序的工作步骤的流程图。
[0030]图18是示出第3实施方式的管理表登记例程的流程图。
[0031]图19是示出第3实施方式的中断处理程序的工作步骤的流程图。
[0032]图20是示出第3实施方式的唤醒触发设定例程的流程图。
[0033]图21是示出比较例的传感器和处理器的工作的时间图。
[0034]图22是示出第4实施方式的处理器系统的框图。
[0035]图23是示出第4和第5实施方式的管理表的图。
[0036]图24是示出第4?第6实施方式的传感器和处理器的工作的时间图。
[0037]图25是示出第4实施方式的应用程序的工作步骤的流程图。
[0038]图26是示出第4实施方式的管理表登记例程的流程图。
[0039]图27是示出第4实施方式的中断处理程序的工作步骤的流程图。
[0040]图28是示出第4实施方式的唤醒触发设定例程的流程图。
[0041 ]图29是示出第5实施方式的处理器系统的框图。
[0042]图30是示出第5实施方式的应用程序的工作步骤的流程图。
[0043]图31是示出第5实施方式的中断处理程序的工作步骤的流程图。
[0044]图32是示出第5实施方式的唤醒触发设定例程的流程图。
[0045]图33是示出第6实施方式的处理器系统的框图。
[0046]图34是不出第6实施方式的管理表的图。
[0047]图35是示出第6实施方式的应用程序的工作步骤的流程图。
[0048]图36是示出第6实施方式的管理表登记例程的流程图。
[0049]图37是示出第6实施方式的中断处理程序的工作步骤的流程图。
[0050]图38是示出第6实施方式的唤醒触发设定例程的流程图。
[0051]图39是示出存在抖动(jitter)的情况下的第4实施方式的处理的时间图。
[0052]图40是用于说明第7实施方式的时间图。
[0053]图41是示出第7实施方式的应用程序的工作步骤的流程图。
[0054]图42是示出第7实施方式的管理表登记例程的流程图。
[0055]图43是示出第7实施方式的唤醒触发设定例程的流程图。
[0056]图44是用于说明第7实施方式的时间图。
[0057]标号说明
[0058]10中断控制器,11中断通知寄存器,12唤醒触发寄存器,30处理器,31内部计时器,40存储器,41?46管理表,501?1'(:计时器,511?1'(:触发寄存器,100、110、120、130、140、150处理器系统。
【具体实施方式】
[0059]根据一个实施方式,传感器数据收集装置能够与多个传感器连接。所述多个传感器以多个不同的数据生成周期生成感测出的数据。所述传感器数据收集装置具有第I电路和控制器。所述控制器具有第I状态和第2状态,在所述第2状态时取得一个或多个所述传感器的数据。所述第I电路具有第I寄存器,基于所述第I寄存器的寄存器值,使所述控制器从所述第I状态向所述第2状态转变。所述控制器基于所述多个数据生成周期中的最小的数据生成周期来设定所述第I寄存器。
[0060]以下参照附图,对实施方式的传感器数据收集装置进行详细说明。此外,本发明不限于这些实施方式。
[0061](第!实施方式)
[0062]图1示出作为第I实施方式的传感器数据收集装置的处理器系统100的功能模块。处理器系统100能够与多个传感器A?C连接。在图1中,示出了 3个传感器,但传感器的个数如果为2个以上则是任意的。处理器系统100收集传感器A?C检测出的数据。处理器系统100具有中断控制器(以下,称作INTCH0、电源管理单元(以下,PMU)20、处理器30和存储器40。处理器30构成传感器数据收集装置的控制器。
[0063]处理器30执行存储器40中装载的多个程序。在从INTC 10接收到中断请求时,处理器30执行作为中断处理用软件的中断处理程序INTHL1。处理器30具有两个工作状态。第I工作状态是功耗较、不进行传感器数据的取得所涉及的处理的睡眠状态。第2工作状态是功耗比睡眠状态大、进行传感器数据的取得所涉及的处理的激活状态。激活状态和睡眠状态之间的转变需要预定的时间。转变中消耗至少比睡眠状态多的电力(与激活状态相同或更多)。此外,将处理器30从睡眠状态向激活状态转变的情况称作唤醒。
[0064]传感器A?C按照由应用程序APl设定的预定的周期进行感测(sensing)。传感器A?C在处理器系统100能够取得感测出的传感器数据时,向INTC 10发布中断请求。即,传感器A?C按预定的数据生成周期生成感测出的数据,每当数据生成时向INTC 10发布中断请求。各传感器A?C的数据生成周期不同。各传感器A?C分别被赋予能够各自识别的传感器ID0设传感器A的ID = O,设传感器B的ID = I,设传感器C的ID = 2。
[0065]PMU 20管理对INTC 10、处理器30、存储器40等的电源供给。PMU20按照来自INTC10的请求来唤醒处理器30。
[0066]INTC 10具有中断通知寄存器11和唤醒触发寄存器12。中断通知寄存器11存储表示有无来自传感器A?C的中断请求的信息。中断通知寄存器11按每个传感器ID具有入口,各入口记录有表示有无来自与传感器ID对应的传感器的中断请求的中断标志位(f Iag)。关于中断标志位,“I”为断言(assert),“O”为无效(negate)。自此之后,中断通知寄存器11的寄存器值从左起按传感器A、B、C的顺序表示中断标志位。(OOO)表示没有从各传感器A?C产生中断请求的状态。(100)表示从传感器A产生中断请求的状态。(101)表示从传感器A和C产生中断请求的状态。INTC 10每当接收到中断请求时,更新对应的入口。INTC 10在至少一个入口为“I”的期间,通过电平信号向处理器30通知中断请求。处理器30在执行了传感器数据的取得处理后,将对应的传感器ID的入口从“I”清除为“O”。
[0067]唤醒触发寄存器12存储识别成为用于唤醒处理器30的触发的传感器的信息。唤醒触发寄存器12按每个传感器ID具有入口。各入口记录有唤醒触发标志位。唤醒触发标志位是用于在接收到来自与传感器ID对应的传感器的中断请求时,指示PMU 20是否向处理器30通知唤醒请求的标志位。自此之后,唤醒触发寄存器12的寄存器值从左起按传感器A、B、C的顺序表示唤醒触发标志位。(100)表示仅在从传感器A接收到中断请求时向PMU 20指示唤醒请求。(010)表示仅在从传感器B接收到中断请求时向PMU 20指示唤醒请求。(001)表示仅在从传感器C接收到中断请求时向PMU 20指示唤醒请求。唤醒触发寄存器12的设定由处理器30进行。
[0068]存储器40保存有管理表41和处理器30执行的多个程序。应用程序APl是在处理器系统100启动时进行工作的程序,进行用于传感器数据取得的初始设定。管理表登记例程RTll是被应用程序APl调用来工作的程序,对管理表41进行管理信息的登记处理。唤醒触发设定例程RT12是被应用程序APl调用来工作的程序,进行对唤醒触发寄存器12的设定处理。中断处理程序INTHLl在处理器30从睡眠状态转变到了激活状态时启动,通过执行传感器A数据取得处理RT13、传感器B数据取得处理RT14、或传感器C数据取得处理RT15来执行各传感器A?C的数据取得处理。传感器A数据取得处理RT13是具有如下功能的程序:取得传感器A的数据,保存到存储器40内的预定的数据保存区域。传感器B数据取得处理RT14是具有如下功能的程序:取得传感器B的数据,保存到存储器40内的预定的数据保存区域。传感器C数据取得处理RT15是具有如下功能的程序:取得传感器C的数据,保存到存储器40内的预定的数据保存区域。
[0069]图2是用于说明管理表41的数据结构的图。管理表41具有使传感器ID、数据取得处理的入口地址41a和处理间隔41b成组的管理信息。入口地址41a表示保存有与传感器ID对应的传感器数据取得处理RT13?RT15的存储器40的物理地址。处理间隔41b表示各传感器A?C的数据生成周期。处理器30在处理器系统100启动时进行管理表41的设定处理。
[0070]以下,对处理器系统100连接有3个传感器A、B、C的情况下的第I实施方式的处理进行说明。此处,如图2所示,传感器A以80msec间隔生成感测数据。处理器30使用数据取得处理RT13(入口地址0x1100)进行传感器A的数据取得。同样,传感器B以100msec间隔生成感测数据。处理器30使用数据取得处理RT14(入口地址0x1200)进行传感器B的数据取得。传感器C以125msec间隔生成感测数据。处理器30使用数据取得处理RT15(入口地址0x1300)进行传感器C的数据取得。
[0071]图3是示出传感器数据取得处理的时间图。图3的(A)示出比较例,图3的(B)示出第I实施方式。箭头表示传感器数据的生成时机(timing)。在传感器A中,数据取得周期以80msec间隔到来,在传感器B中,数据取得周期以100msec间隔到来,在传感器C中,数据取得周期以125msec间隔到来。在比较例中,每当传感器A?C的取得周期到来时,将处理器30唤醒,取得对应的传感器的数据,然后使处理器30睡眠。因此,在比较例中,从时刻O起时刻500为止,处理器30被唤醒14次。在第I实施方式中,基于最小的数据取得间隔(传感器A的取得间隔)将处理器30唤醒。因此,在第I实施方式中,从时刻O起时刻500为止,处理器30被唤醒7次。这样,在第I实施方式中,与比较例相比,能够降低状态转变次数(唤醒次数)。
[0072]以下,对第I实施方式的工作进行详细说明。图4是示出应用程序APl的工作步骤的流程图。在处理器系统100启动时,处理器30执行应用程序APl。应用程序APl使传感器A、B、C初始化(SI 00)。
[0073]接下来,处理器30执行管理表登记例程RTlI (SlOl)。图5是示出管理表登记例程RTlI的流程图。首先,指定ID = 0、entry address(入口地址)=0x1100、interval (间隔)=80,执行管理表登记例程RTl I。由此,将传感器A的管理信息登记到管理表41。同样,将传感器B和传感器C的管理信息登记到管理表41(图5: S110)。由此,管理表41成为如图2所示那样。
[0074]接下来,处理器30执行唤醒触发设定例程RT12(图4:S102)。图6是示出唤醒触发设定例程RT12的流程图。处理器30从管理表41取得处理间隔最小的传感器ID(S120)。在该情况下为传感器A(ID = 0)。处理器30设定唤醒触发寄存器12,使得:仅在存在来自具有取得的ID的传感器的中断处理请求时,从INTC 10发布处理器唤醒请求(S121)。即,处理器30将取得的传感器ID的唤醒触发标志位设为“I”。在该情况下,唤醒触发寄存器12成为(100)。
[0075]接下来,处理器30设定中断向量等,使得:在从INTC10接收到中断请求时执行中断处理程序INTHLl (图4:S103)。然后,应用程序APl将处理器30设为睡眠状态(S104)。
[0076]图7是示出中断处理程序INTHLl的工作步骤的流程图。中断处理程序INTHLl是在向处理器30通知了中断请求时执行的软件。中断处理程序INTHLl参照中断通知寄存器11,检查是否从传感器产生中断请求(S131)。在存在中断请求的情况下(S131:是),中断处理程序INTHLl从管理表41取得与请求中断的传感器ID对应的入口地址41a(S132),执行取得的入口地址中保存的数据取得处理(S133)。在数据取得处理结束后,中断处理程序INTHLl将对应的传感器ID的中断标志位从“I”清除为“O”(S134)。中断处理程序INTHLl判定是否执行了针对中断标志位为“I”的全部传感器ID的数据取得处理(S135)。在判定结果为“否”的情况下返回到S132,针对中断标志位为“I”的传感器ID,执行同样的处理。
[0077]接下来,参照图3的(B)的时间图等,对处理器系统100的工作更详细地进行说明。在设感测开始时刻为时刻O时,在感测中进行以下的工作。在时刻O,传感器A、B、C进行感测,由传感器A、B、C生成数据。各传感器A?C向INTC 10发布中断请求。由此,INTC 10使中断通知寄存器11为(111)。另外,因为任意一个中断标志位成为“I”,所以INTClO通过电平信号向处理器30发布中断通知。另外,INTC 10对中断通知寄存器11的寄存器值(I 11)和唤醒触发寄存器12的寄存器值(100)进行比较,检查唤醒触发寄存器12中为“I”的比特位(bit)在中断通知寄存器11中是否为“I”。该情况下的判定结果为“是”,INTC 10向PMU20请求唤醒处理器30 JMU 20在从INTC 10接收到处理器唤醒请求时,使处理器30从睡眠状态向激活状态转变。
[0078]由此,处理器30唤醒。此时,通过INTC10发布中断通知,因此处理器30执行中断处理程序INTHLl。中断处理程序INTHLl取得中断通知寄存器11的寄存器值(111)(图7: S130)。中断处理程序INTHLl因中断通知寄存器11的寄存器值中存在“I”的比特位,执行数据取得处理。首先,中断处理程序INTHLl通过比特位位置确定存在中断请求的传感器ID。在该情况下,首先选择ID = 0。中断处理程序INTHLl从管理表41取得ID = O的入口地址OxllOO(图7:S132),执行存储器40的入口地址0x1100中保存的传感器A数据取得处理RT13(图7:S133)。接下来,中断处理程序INTHLl将ID = O的中断标志位清除为“O”(图7: S134)。同样地,确定ID=1,执行传感器B数据取得处理RT14。进而,确定ID = 2,执行传感器C数据取得处理RT15。由于执行了全部进行了请求的传感器ID的处理,所以中断处理程序INTHLl的处理结束,返回到应用程序APl处理。应用程序APl将处理器30设为睡眠状态。
[0079]接下来,在时刻80,从传感器A发布中断请求。此时,在中断通知寄存器11中保存有(100)的寄存器值。INTC 10检查唤醒触发寄存器12中为“I”的比特位在中断通知寄存器11中是否为“I”。在该情况下,判定结果为“是”。因此,处理器30被PMU 20唤醒,通过中断处理程序INTHLl执行传感器A的数据取得处理。
[0080]接下来,在时刻100,从传感器B发布中断请求。此时的中断通知寄存器11的值为
(010)。但是,因为与传感器B对应的ID=I的比特位在两个寄存器11、12中不为“I”,所以INTC 10不向PMU 20发布处理器唤醒请求。因此,处理器30保持睡眠状态,不进行传感器B的数据取得处理。
[0081]接下来,在时刻125,从传感器C发布中断请求。此时的中断通知寄存器11的值为
(011)。但是,因为与传感器B对应ID= I的比特位和与传感器C对应ID = 2的比特位在两个寄存器11、12中不为“I”,所以INTClO不向PMU 20发布处理器唤醒请求。因此,处理器30保持睡眠状态,不进行传感器B和传感器C的数据取得处理。
[0082]接下来,在时刻160,从传感器A发布中断请求。此时的中断通知寄存器11的值为
(111)。因为与传感器A对应ID = O的比特位在两个寄存器11、12中为“I”,所以INTC 10向PMU20发布处理器30的唤醒请求。PMU 20在从INTC 10接收到处理器唤醒请求时,将处理器30唤醒。由此,执行中断处理程序INTHLl,进行传感器A、B、C各自的数据取得处理。然后,处理器30成为睡眠状态。
[0083]以下,同样地,仅在时刻240、时刻320、时刻400、时刻480,将处理器30唤醒,执行到该各时刻为止存在中断请求的一个或多个传感器的数据取得处理。
[0084]这样,在第I实施方式中,基于多个数据取得间隔中的最小的数据取得间隔将处理器30唤醒,能够降低处理器30的睡眠状态与激活状态的转变次数。因此,能够降低处理器30的功耗。另外,在处理器30进行取得之前,传感器数据不被覆盖写入,因此不会漏取传感器数据。
[0085](第2实施方式)
[0086]在第I实施方式中,各传感器A?C在数据生成时发布中断请求。但是,根据传感器,有的传感器不发布中断请求。在第2实施方式中,设想全部传感器A?C不具有中断请求功能的情况。
[0087]图8示出第2实施方式的处理器系统110的功能模块。处理器系统110与传感器A?C连接。在图8中,将图1的INTC 10替换为实时时钟计时器(Real-time Clock,以下,称作RTC计时器MO13RTC计时器50具有对时间进行计数的计数器。RTC计时器50即使在处理器30处于睡眠状态下也始终持续进行工作。处理器30具有内部计时器31。内部计时器31具有对时间进行计数的计数器。内部计时器31在处理器30处于睡眠状态时停止计时工作。
[0088]RTC计时器50具有RTC触发寄存器51ATC触发寄存器51存储下次处理时刻,所述下次处理时刻是成为用于将处理器30唤醒的触发的传感器的下次的数据生成时刻。RTC计时器50具有如下功能:在其计数值与RTC触发寄存器51的寄存器值一致时向PMU 20发布处理器唤醒请求,并且向处理器30通知中断请求。处理器30在处理器系统110启动时进行RTC触发寄存器51的设定处理。PMU 20管理针对处理器系统110中包含的RTC计时器50、处理器30、存储器40等的电源供给。PMU 20按照来自RTC计时器50的请求将处理器30唤醒。
[0089]存储器40保存管理表42和处理器30执行的应用程序AP2以及中断处理程序INTHL2。应用程序AP2是在处理器系统110启动时进行工作的程序,进行用于传感器数据取得的初始设定。管理表登记例程RT21是被应用程序AP2调用来工作的程序,向管理表42进行管理信息的登记处理。中断处理程序INTHL2在处理器30从睡眠状态转变到了激活状态时启动,执行数据取得处理。唤醒触发设定例程RT22是被中断处理程序INTHL2调用来工作的程序,进行对RTC触发寄存器51的设定处理。传感器A数据取得处理RT23取得传感器A的数据,保存到存储器40内的预定的数据保存区域。传感器B数据取得处理RT24取得传感器B的数据,保存到存储器40内的预定的数据保存区域。传感器C数据取得处理RT25取得传感器C的数据,保存到存储器40内的预定的数据保存区域。内部计时器再次设定例程RT26是被中断处理程序INTHL2调用来工作的程序,进行内部计时器31的设定处理。
[0090]图9是用于说明管理表42的数据结构的图。管理表42具有使传感器ID、数据取得处理的入口地址42a、传感器数据取得的处理间隔42b、下次处理时刻(next_proc) 42c成组的管理信息。入口地址42a表示保存有与传感器ID对应的传感器数据的取得处理RT23?RT25的存储器40的物理地址。处理间隔42b表示各传感器A?C的数据生成周期。下次处理时刻(11611:_口1'00)420表示各传感器4?(:的下次的数据生成时刻。处理器30在处理器系统110启动时进行管理表42的设定处理。
[0091]以下,对第2实施方式的工作进行详细说明。图10是示出应用程序AP2的工作步骤的流程图。在处理器系统110启动时,处理器30执行应用程序AP2。应用程序AP2使传感器A、
8、(:初始化(3200)。
[0092]接下来,处理器30执行管理表登记例程RT21(S201)。图11是示出管理表登记例程RT21的流程图。首先,指定ID = 0、entry address = Oxl 100、interval =80,执行管理表登记例程RT21。由此,将传感器A的管理信息登记到管理表42中。同样,将传感器B和传感器C的管理信息登记到管理表42中(图11:S210)。接下来,处理器30对各传感器ID的下次处理时刻(]1611:_卩1'00)420设定下次处理时刻。在执行管理表登记例程1^'21时,处理器30对下次处理时刻42c设定从内部计时器31取得的当前时刻(时刻O) (S211)。
[0093]处理器30设定中断向量等,使得在从RTC计时器50接收到中断请求时执行中断处理程序INTHL2(图10:S202)。处理器30为了进行初次的数据取得处理,执行中断处理程序INTHL2(S203)。然后,应用程序AP2将处理器30设为睡眠状态(S204)。
[0094]图12是示出中断处理程序INTHL2的工作步骤的流程图。中断处理程序INTHL2首先执行内部计时器再次设定例程RT26(S220)。图13是示出内部计时器再次设定例程RT26的流程图。内部计时器再次设定例程RT26是在处理器30被唤醒时再次设定已停止的内部计时器31的时刻的处理。首先,处理器30从RTC计时器50取得当前时刻(图13: S230),通过取得的当前时刻来再次设定内部计时器31( S231)。
[0095]接下来,中断处理程序INTHL2从管理表42取得ID = O的入口地址42a和下次处理时刻42c(S221)。接下来,中断处理程序INTHL2将从内部计时器31取得的当前时刻与ID = O的下次处理时刻42c进行比较(S222)。中断处理程序INTHL2在当前时刻与ID = O的下次处理时刻一致或当前时刻比ID = O的下次处理时刻晚的情况下(S222:是),执行传感器A数据取得处理RT23(S223)。接下来,中断处理程序INTHL2以对ID = O的下次处理时刻加上处理间隔42b而得到的值来更新ID = O的下次处理时刻42c(S224)。中断处理程序INTHL2判定针对管理表42中登记的全部传感器ID的处理是否结束(S225),在判定结果为“否”的情况下,对全部传感器ID执行S221?S225的处理。
[0096]这样,在传感器数据的取得处理结束时,中断处理程序INTHL2执行唤醒触发设定例程RT22(S226)。图14是示出唤醒触发设定例程RT22的流程图。唤醒触发设定例程RT22是用于将处理间隔最小的传感器ID的下次处理时刻设定到RTC触发寄存器51的处理。处理器30从管理表42取得处理间隔最小的传感器ID(S240)。在该情况下,为传感器A(ID = O)。接下来,处理器30将取得的传感器ID的下次处理时刻设定到RTC触发寄存器51(S241)。
[0097]接下来,参照图3的(B)的时间图等,对处理器系统110的工作更详细地进行说明。在处理器系统110启动后,执行应用程序AP2。处理器30使传感器A、B、C初始化(图10:S200)。接下来,处理器30向管理表42设定各传感器A?C的管理信息(S201)。在该阶段中,对各传感器A?C的下次处理时刻42c设定时刻O。接下来,处理器30设定中断向量等,使得在从RTC计时器50接收到中断请求时执行中断处理程序INTHL2(S202)。进而,处理器30为了进行初次的数据取得处理,执行中断处理程序INTHL2(S203)。
[0098]在时刻O,首先,以RTC计时器50的当前时刻设定内部计时器31 (图12: S220)。在时刻O,内部计时器31的值没有变化,保持时刻O的状态。接下来,处理器30从管理表42取得ID=O的下次处理时刻(O),从内部计时器31取得当前时刻(O),对当前时刻(O)与下次处理时刻(O)进行比较(S222)。由于当前时刻(O)与下次处理时刻(O)—致,因此S222的判定为“是”。因此,处理器30执行传感器A数据取得处理RT23 (S223)。接下来,处理器30以下次处理时刻(0)+处理间隔(80) =80来更新ID = O的下次处理时刻(S224)。处理器30对ID=1、ID = 2也同样地执行传感器B数据取得处理RT24、传感器C数据取得处理RT25,更新各自的下次处理时刻。传感器A?C的处理结束时的管理表42的状态如图9所示。接下来,处理器30执行唤醒触发设定例程RT22(S226)。将处理间隔最小的ID = O的下次处理时刻=80设定到RTC触发寄存器51。然后,在中断处理程序INTHL2的处理结束时,使处理返回到应用程序AP2。应用程序AP2将处理器30设为睡眠状态。
[0099]接下来,在成为时刻80时,RTC计时器50的计时器值与RTC触发寄存器51的寄存器值( = 80)—致。由此,从RTC计时器50向PMU 20发布处理器唤醒请求,从RTC计时器50对处理器30通知中断请求。由此,处理器30成为激活状态,执行中断处理程序INTHL2。
[0100]中断处理程序INTHL2首先将内部计时器31再次设定为RTC计时器50的当前时刻=80(图12: S220)。然后,处理器30对ID = O的下次处理时刻(80)与内部计时器31的当前时刻
(80)进行比较(S222)。由于当前时刻(80)与下次处理时刻(80)—致(S222:是),所以处理器30执行传感器A数据取得处理RT23(S223)。接下来,处理器30以下次处理时刻(80)+处理间隔(80) = 160来更新ID = O的下次处理时刻(S224)。接下来,处理器30进行针对ID= I的处理。此时,ID = I的下次处理时刻=100。由于ID = I的下次处理时刻(100) >当前时刻(80)(S222:否),所以处理器30不进行针对ID=I的数据取得处理和下次处理时刻的更新。同样,处理器30不进行针对ID = 2的数据取得处理和下次处理时刻的更新。接下来,处理器30执行唤醒触发设定例程RT22(S226)。将处理间隔最小的ID = O的下次处理时刻= 160设定到RTC触发寄存器51。然后,在中断处理程序INTHL2的处理结束时,使处理返回到应用程序AP2。应用程序AP2将处理器30设为睡眠状态。
[0101]接下来,在成为时刻160时,RTC计时器50的计时器值与RTC触发寄存器51的寄存器值( = 160)—致。由此,从RTC计时器50向PMU 20发布处理器唤醒请求,从RTC计时器50对处理器30发布中断请求。由此,处理器30成为激活状态,执行中断处理程序INTHL2。
[0102]中断处理程序INTHL2首先将内部计时器31再次设定为RTC计时器50的当前时刻=160(图12: S220)。然后,处理器30对ID = O的下次处理时刻(160)与内部计时器31的当前时亥lj(160)进行比较(S222)。由于当前时刻(160)与下次处理时刻(160)—致(S222:是),所以处理器30执行传感器A数据取得处理RT23(S223)。接下来,处理器30以下次处理时刻(160) +处理间隔(80) =240来更新ID = O的下次处理时刻(S224)。接下来,处理器30进行针对ID= I的处理。此时,ID = I的下次处理时刻=1 O,当前时刻(16 O )>下次处理时刻(1 O)成立(S222:是),因此,处理器30执行传感器B数据取得处理RT24(S223)。接下来,处理器30以下次处理时刻(100)+处理间隔(100) = 200来更新ID = I的下次处理时刻(S224)。关于ID = 2,同样地也是下次处理时刻= 125(S222:是),因此,进行传感器C数据取得处理RT25,以下次处理时刻(125)+处理间隔(125) = 250来更新下次处理时刻(S224)。接下来,处理器30执行唤醒触发设定例程RT22(S226)。将处理间隔最小的ID = O的下次处理时刻= 240设定到RTC触发寄存器51。然后,在中断处理程序INTHL2的处理结束时,使处理返回到应用程序AP2。应用程序AP2将处理器30设为睡眠状态。
[0103]以下,同样地,仅在时刻240、时刻320、时刻400、时刻480,将处理器30唤醒,在该各时刻为各ID的下次处理时刻以上的情况下,执行各自的数据取得处理。
[0104]这样,在第2实施方式中,通过计时器来管理传感器数据的取得处理,因此,即使在传感器不具有用于数据处理请求的中断请求功能的情况下,也能够降低处理器30的睡眠状态与激活状态的转变次数。因此,能够降低处理器30的功耗。
[0105](第3实施方式)
[0106]在第3实施方式中,设想同时存在具有中断请求功能的传感器和不具有中断请求功能的传感器的情况。
[0107]图15示出第3实施方式的处理器系统120的功能模块。处理器系统120连接有3个传感器A、B、C。传感器A具有中断请求功能,以80msec间隔生成感测数据。传感器B不具有中断请求功能,以100msec间隔生成感测数据。传感器B使用在第2实施方式中说明的计时器功能来设定处理间隔。传感器C具有中断请求功能,以125msec间隔生成感测数据。
[0108]处理器系统120具有INTC 10和RTC计时器50。INTC 10的功能和RTC计时器50的功能与在之前的第I实施方式或第2实施方式中说明的相同,省略重复的说明。处理器30具有内部计时器31JMU 20管理针对处理器系统120中包含的INTC 10、处理器30、存储器40、RTC计时器50等的电源供给。PMU 20按照来自INTC 10或RTC计时器50的请求将处理器30唤醒。
[0109]存储器40保存管理表43、处理器30执行的应用程序AP3、中断处理程序INTHL3、管理表登记例程RT31、唤醒触发设定例程RT32、传感器A数据取得处理RT33、传感器B数据取得处理RT34、传感器C数据取得处理RT35、内部计时器再次设定例程RT36。
[0110]图16是用于说明管理表43的数据结构的图。管理表43保存使传感器ID、数据取得处理的入口地址43a、处理间隔43b、下次处理时刻(next_proc) 43c、触发类型43d成组的管理信息。触发类型43d区分是根据来自传感器的中断请求进行数据取得处理(int)还是根据由计时器(timer)管理的时间间隔来进行数据取得处理。处理器30在处理器系统120启动时进行管理表43的设定处理。
[0111]以下,对第3实施方式的工作进行详细说明。图17是示出应用程序AP3的工作步骤的流程图。在处理器系统120启动时,处理器30执行应用程序AP3。应用程序AP3使传感器A、
8、(:初始化(3300)。
[0112]接下来,处理器30执行管理表登记例程RT31(S301)。图18是示出管理表登记例程RT31的流程图。首先,对各传感器ID设定入口地址43a、处理间隔43b、触发类型43d(图18:S310)。接下来,处理器30对各传感器ID的下次处理时刻(next_proc)43c设定下次处理时亥IJ。在执行管理表登记例程RT31时,处理器30对下次处理时刻43c设定从内部计时器31取得的当前时刻(时刻0)(S311)。
[0113]处理器30设定中断向量等,使得在从INTC 10接收到中断请求或从RTC计时器50接收到中断请求时执行中断处理程序INTHL3 (图17: S302)。接下来,处理器30执行中断处理程序INTHL3(S303)。然后,应用程序AP3将处理器30设为睡眠状态(S304)。
[0114]图19是示出中断处理程序INTHL3的工作步骤的流程图。中断处理程序INTHL3首先执行内部计时器再次设定例程RT36(S320)。内部计时器再次设定例程RT36与图13所示的步骤同样。接下来,中断处理程序INTHL3取得中断通知寄存器11的寄存器值(S321)。中断处理程序INTHL3参照取得的寄存器值,检查是否从传感器A?C产生了中断请求(S322)。在存在中断请求的情况下(S322:是),中断处理程序INTHL3从管理表43取得与发布中断请求的传感器ID对应的入口地址(S323),执行由取得的入口地址指定的数据取得处理(S324)。然后,中断处理程序INTHL3将对应的传感器ID的中断标志位从“I”清除为“O” (S325)。接下来,中断处理程序INTHL3以对存在中断请求的传感器ID的下次处理时刻43c加上处理间隔43b而得到的值来更新该传感器ID的下次处理时刻(S326)。中断处理程序INTHL3,判定是否执行了针对触发类型为中断且中断标志位为“I”的全部传感器ID的数据取得处理(S327)。在判定结果为“否”的情况下,对中断标志位为“I”的传感器ID执行上述同样的处理。
[0115]接下来,中断处理程序INTHL3从管理表43取得触发类型为计时器的传感器ID的入口地址43a、下次处理时刻43c(S328)。接下来,中断处理程序INTHL3对内部计时器31的当前时刻与S328中取得的传感器ID的下次处理时刻43c进行比较(S329)。中断处理程序INTHL3在该传感器ID的下次处理时刻43c为当前时刻以下的情况下(S329:是),执行由该传感器ID的入口地址指定的数据取得处理(S330)。接下来,中断处理程序INTHL3以对该传感器ID的下次处理时刻加上处理间隔43b而得到的值来更新下次处理时刻(S331)。中断处理程序INTHL3判定针对触发类型为计时器的全部传感器ID的处理是否结束(S332),在判定结果为“否”的情况下,对触发类型为计时器的全部传感器执行S328?S332的处理。在对触发类型为计时器的全部传感器结束了处理(S332:是)时,中断处理程序INTHL3执行唤醒触发设定例程 RT32(S333)。
[0116]图20是示出唤醒触发设定例程RT32的流程图。处理器30从管理表43取得处理间隔最小的传感器ID(S340)。在该情况下,为传感器A(ID = O)。接下来,处理器30判别取得的传感器ID的触发类型是中断还是计时器(S341)。在触发类型为中断的情况下(S341:是),处理器30设定唤醒触发寄存器12,使得:仅在存在来自具有取得的ID的传感器的中断处理请求时,从INTC 10对PMU 20发布处理器唤醒请求(S342)。即,处理器30将取得的传感器ID的唤醒触发标志位设为“I”。另外,在触发类型为计时器的情况下(S341:否),通过取得的传感器ID的下次处理时刻来设定RTC触发寄存器51 (S343)。
[0117]接下来,参照图3的(B)的时间图等,对处理器系统120的工作更详细地进行说明。在处理器系统120启动后,执行应用程序AP3 ο处理器30使传感器A、B、C初始化(图17: S300)。接下来,处理器30对管理表43设定各传感器A?C的管理信息(S301)。关于传感器A,设定了ID = 0、entry address = Ox1100、interval = 80、trigger type = int、next_proc = 0o 关于传感器B,设定了ID= Kentry address = Ox1200、interval = 100、trigger type = timer、next_proc = 0。关于传感器C,设定了 ID = 2、entry address = 0x1300、interval = 125、trigger type = int、next_proc = 0。接下来,处理器30设定中断向量等,使得在从INTC 10或RTC计时器50接收到中断请求时执行中断处理程序INTHL3(S302)。进而,处理器30为了进行初次的数据取得处理,执行中断处理程序INTHL3 (S303)。
[0118]在作为感测开始时刻的时刻0,进行各传感器A?C的感测,生成数据。中断处理程序INTHL3进行内部计时器31的再次设定(图19: S320)。在时刻O,内部计时器31的值没有变化,保持时刻O的状态。接下来,处理器30取得中断通知寄存器11的寄存器值(S321)。在时刻O,从传感器AC产生中断请求,因此,寄存器值为(101)。由于中断通知寄存器11的寄存器值中存在“1”,因此中断处理程序INTHL3执行数据取得处理。首先,中断处理程序INTHL3通过比特位位置确定存在中断请求的传感器ID。在该情况下,首先选择ID = 0。中断处理程序INTHL3从管理表43取得ID = O的入口地址0xll00(S323),执行存储器40的入口地址0x1100中保存的传感器A数据取得处理RT33(S324)。接下来,中断处理程序INTHL3将ID = O的中断标志位清除为“O”(S325)。进而,中断处理程序INTHL3将下次处理时刻更新为80( =下次处理时刻(O) +处理间隔(80)) (S326)。同样地,确定ID = 2,执行传感器C数据取得处理RT35,进而,将ID = 2的中断标志位清除为“O”,进而,执行下次处理时刻的更新(通过0+125=125来更新)。
[0119]接下来,处理器30取得触发类型为计时器的ID = I的管理信息(S328)。处理器30对ID = I的下次处理时刻(O)与内部计时器31的当前时刻(O)进行比较(S329)。当前时刻(O)与下次处理时刻(O)—致(S329:是),因此,处理器30执行传感器B数据取得处理RT34(S330)。处理器30然后以下次处理时刻(O)+处理间隔(100) = 100来更新ID= I的下次处理时刻(S331)。通过以上所述,对触发类型为计时器的全部传感器ID进行了处理,因此,接下来,处理器30执行唤醒触发设定例程RT32(S333)。处理器30选择处理间隔最小的ID = 0(图20:S340),确认ID = O的触发类型为中断(图20: S341:是),将唤醒触发寄存器12的ID = O的比特位设为“I”(S342) ο由此,唤醒触发寄存器12被设定为(100)。
[0120]接下来,在时刻80,从传感器A发布中断请求。由此,中断通知寄存器11的寄存器值为(100),INTC 10通过电平信号向处理器30发布中断通知。INTC 10检查唤醒触发寄存器12中为“I”的比特位在中断通知寄存器11中是否为“I”。在该情况下,判定结果为“是”,INTC10向PMU20请求唤醒处理器30IMU 20在从INTC 10接收到处理器唤醒请求时,将处理器30唤醒。处理器30在被唤醒时从INTC 10接收到中断的通知,因此,处理器30执行中断处理程序INTHL3。
[0121]中断处理程序INTHL3进行内部计时器31的再次设定。然后,处理器30按照中断通知寄存器11的寄存器值(100),执行传感器A数据取得处理RT33,以160(=80+80)来更新ID=0的下次处理时刻。接下来,处理器30取得ID = I的管理信息。在时刻80,当前时刻(80)不为下次处理时刻(100)以上,因此,处理器30不进行数据取得处理。然后,执行唤醒触发设定例程RT32,处理器30转变到睡眠状态。
[0122]接下来,在时刻125,从传感器C发布中断请求。由此,中断通知寄存器11的寄存器值成为(001)。但是,与传感器C对应ID = 2的比特位在两个寄存器11、12中不为“I”,因此,INTC 10不向PMU 20发布处理器唤醒请求。因此,处理器30保持睡眠状态,不进行传感器C的数据的取得处理。
[0123]接下来,在时刻160从传感器A发布中断请求。由此,中断通知寄存器11的寄存器值成为(101)。与传感器A对应的ID = O的比特位在两个寄存器11、12中为“I”,因此,INTC 10向PMU 20请求唤醒处理器30 WMU 20在从INTC 10接收到处理器唤醒请求时,将处理器30唤醒。处理器30在被唤醒时,从INTC 10接收到中断通知,因此,执行中断处理程序INTHL3。中断处理程序INTHL3在再次设定内部计时器31后,按照中断通知寄存器11的寄存器值(101),执行ID = O和ID = 2的数据取得处理和下次处理时刻的更新。
[0124]接下来,处理器30取得ID= I的管理信息。处理器30对ID= I的下次处理时刻(100)与内部计时器31的当前时刻(160)进行比较。当前时刻(160)为下次处理时刻(100)以上的条件成立,因此,处理器30执行ID = I的数据取得处理,然后进行下次处理时刻的更新。接下来,处理器30执行唤醒触发设定例程RT32,选择处理间隔最小的ID = 0,将唤醒触发寄存器12设定为(100)。然后,处理器30转变到睡眠状态。此外,在唤醒触发设定例程RT32中始终对唤醒触发寄存器12覆盖设定相同的寄存器值的情况下,也可以省略第2次以后的S330的处理。
[0125]以下,同样地,仅在时刻240、时刻320、时刻400、时刻480,将处理器30唤醒,在各个时刻,触发类型为中断的传感器按照中断通知寄存器11的值,执行数据取得处理,触发类型为计时器的传感器按照下次处理时刻的值,执行数据取得处理。
[0126](第3实施方式的变形例)
[0127]在该变形例中,设想具有最小的处理间隔的传感器不具有中断请求功能而通过计时器来决定处理间隔的情况。传感器A以最小的80msec间隔生成感测数据,不具有中断请求功能。传感器B以10msec间隔生成感测数据,不具有中断请求功能。传感器C以125msec间隔生成感测数据,具有中断请求功能。
[0128]参照图3的(B)的时间图等,对处理器系统120的工作更详细地进行说明。处理器系统120启动后,执行应用程序AP3。处理器30使传感器A、B、C初始化(图17: S300)。接下来,处理器30对管理表43设定各传感器A?C的管理信息(S301)。关于传感器A,设定了 ID = 0、entry address = Ox1100、interval = 80、trigger type = timer、next_proc = 0o关于传感器B,设定 T ID= K entry address = 0x1200、interval = 100、trigger type = timer、next_proc = 0。关于传感器C,设定了 ID = 2、entry address = Oxl300、interval = 125、triggertype = int、next_proc = 0。接下来,处理器30设定中断向量等,使得在从INTC 10或RTC计时器50接收到中断请求时执行中断处理程序INTHL3(S302)。进而,处理器30为了进行初次的数据取得处理,执行中断处理程序INTHL3(S303)。
[0129]在时刻O进行各传感器A?C的感测,生成数据。中断处理程序INTHL3进行内部计时器31的设定(图19: S320)。在时刻O,内部计时器31的值没有变化,保持时刻O的状态。接下来,处理器30取得中断通知寄存器11的寄存器值。在时刻O,从传感器C产生中断请求,因此,寄存器值为(001)。中断处理程序INTHL3执行ID = 2的数据取得处理。中断处理程序INTHL3从管理表43取得ID = 2的入口地址0xl300(S323),执行由存储器40的入口地址0x1300指定的传感器C数据取得处理RT35(S324)。接下来,中断处理程序INTHL3将ID = 2的中断标志位清除为“O”(S325)。此外,中断处理程序INTHL3将下次处理时刻更新为125(=下次处理时刻(0)+处理间隔(125))(S326)。
[0130]接下来,处理器30取得触发类型为计时器的ID = O的管理信息(S328)。处理器30对ID = O的下次处理时刻(O)与内部计时器31的当前时刻(O)进行比较(S329)。当前时刻(O)与下次处理时刻(O)—致(S329:是),因此,处理器30执行传感器A数据取得处理RT33(S330)。处理器30然后以下次处理时刻(O)+处理间隔(80 )=80来更新ID = O的下次处理时刻(S331)0
[0131]接下来,处理器30取得ID= I的管理信息(S328)。处理器30对ID= I的下次处理时亥IJ (O)与内部计时器31的当前时刻(O)进行比较(S329)。当前时刻(O)与下次处理时刻(O) —致(S329:是),因此,处理器30执行传感器B数据取得处理RT34(S330)。处理器30然后以下次处理时刻(O) +处理间隔(100) = 100来更新ID = I的下次处理时刻(S331)。通过以上所述,对触发类型为计时器的全部传感器ID进行了处理,因此,接下来,处理器30执行唤醒触发设定例程RT32(S333)。由此,处理器30选择处理间隔最小的ID = 0(图20:S340),对RTC触发寄存器51设定ID = O的下次处理时刻(80) (S343)。
[0132]接下来,在时刻80,RTC计时器50向PMU 20发布处理器唤醒请求,向处理器30发布中断请求。PMU 20将处理器30唤醒。由此,处理器30成为激活状态,根据来自RTC计时器50的中断请求,执行中断处理程序INTHL3。
[0133]中断处理程序INTHL3将内部计时器31再次设定为RTC计时器50的当前时刻=80(S320)。然后,处理器30取得中断通知寄存器11的值。此时,中断通知寄存器11的寄存器值为(000),没有发布中断请求(S322:否)。因此,处理器30根据管理表43来对ID = O的下次处理时刻(80)与内部计时器31的当前时刻(80)进行比较(S329)。当前时刻(80)与下次处理时刻(80) —致(S329:是),因此,处理器30执行传感器A数据取得处理RT33 (S330)。进而,处理器30以下次处理时刻(80)+处理间隔(80) = 160来更新ID = O的下次处理时刻(S331)。接下来,处理器30进行针对ID=I的处理。此时,ID = I的下次处理时刻=100。ID = I的下次处理时刻(100)不为当前时刻(80)以下(S329:否),因此处理器30不进行针对ID= I的数据取得处理和下次处理时刻的更新。接下来,处理器30执行唤醒触发设定例程RT32(S333)。将处理间隔最小的ID = O的下次处理时刻= 160设定到RTC触发寄存器51。然后,在中断处理程序INTHL3的处理结束时,使处理返回到应用程序AP3。应用程序AP3将处理器30设为睡眠状态。
[0134]接下来,在时刻125,从传感器C发布中断请求。由此,中断通知寄存器11的寄存器值成为(001)。与传感器C对应的ID = 2的比特位在两个寄存器11、12中不为“I”,因此,INTC10不对PMU 20发布处理器唤醒请求。因此,处理器30保持睡眠状态,不进行传感器C的数据的取得处理。
[0135]在时刻160,RTC计时器50向PMU 20发布处理器唤醒请求,向处理器30通知中断请求。PMU 20将处理器30唤醒。由此,处理器30成为激活状态,根据来自RTC计时器50的中断请求,执行中断处理程序INTHL3。
[0136]中断处理程序INTHL3将内部计时器31再次设定为RTC计时器50的当前时刻=160(S320)。然后,处理器30取得中断通知寄存器11的值。此时,中断通知寄存器11的寄存器值为(001)。因此,中断处理程序INTHL3从管理表43取得ID = 2的入口地址0xl300(S323),执行由存储器40的入口地址0x1300指定的传感器C数据取得处理RT35(S324)。进而,中断处理程序INTHL3将ID = 2的中断标志位清除为“0”(S325)。进而,中断处理程序INTHL3进行下次处理时刻的更新(S326)。
[0137]接下来,处理器30根据管理表43对ID = 0的下次处理时刻(160)与内部计时器31的当前时刻(160)进行比较(S329)。当前时刻(I60)与下次处理时刻(160) —致,因此,处理器30执行传感器A数据取得处理RT33(S330)。进而,处理器30以下次处理时刻(160)+处理间隔(80 ) = 240来更新ID = O的下次处理时刻(S331)。接下来,处理器30进行针对ID = I的处理。此时,ID = I的下次处理时刻= 100 JD = I的下次处理时刻(100)为当前时刻(160)以下,因此,处理器30执行传感器B数据取得处理RT34 (S330)。进而,处理器30以下次处理时刻(100)+处理间隔(100) = 200来更新ID= I的下次处理时刻(S331)。接下来,处理器30执行唤醒触发设定例程RT32(S333)。将处理间隔最小的ID = O的下次处理时刻= 240设定到RTC触发寄存器51。然后,在中断处理程序INTHL3的处理结束时,使处理返回到应用程序AP3。应用程序AP3将处理器30设为睡眠状态。
[0138]以下,同样地,仅在时刻240、时刻320、时刻400、时刻480,将处理器30唤醒,在各个时刻,触发类型为中断的传感器根据中断通知寄存器11的值来执行数据取得处理,触发类型为计时器的传感器按照下次处理时刻的值来执行数据取得处理。
[0139]这样,在第3实施方式中,即使在同时存在具有发布中断请求的功能的传感器和不具有所述功能的传感器的情况下,也能够更长时间地将处理器30设为睡眠状态,能够降低功耗。
[0140](第4实施方式)
[0141]第I?第3实施方式的传感器A?C存在数据有效时间与数据取得间隔相等这样的前提。在存在该前提的情况下,通过基于最小数据取得间隔进行处理器30的唤醒,不会漏取传感器数据。但是,在存在数据有效时间比数据取得间隔短的传感器的情况下,在基于最小数据取得间隔进行处理器30的唤醒的控制方法中,有可能会漏取数据。
[0142]例如,设为传感器在内部具有积累存储传感器数据的FIF0(FirstIn FirstOut:先入先出)。设为处理器30在FIFO被传感器数据充满后取得FIFO的全部数据。在该情况下,数据取得间隔为FIFO从空的状态到充满为止的期间,数据有效时间为FIFO从充满起到生成下一数据并保存到FIFO为止的期间。若在数据有效期间之后取得数据,则FIFO的一部分数据会被覆盖写入,产生数据的漏取。第4?第6实施方式对这样的情况也能够应对。
[0143]图21示出了基于最小数据取得间隔进行处理器30的唤醒的情况下发生数据漏取的一例。向上的箭头表示生成感测数据的时刻。向下的箭头表示感测数据的失效时刻。在图21中,传感器B以100msec间隔生成感测数据。传感器B在内部具有FIFO,数据有效期间为25msec,比处理间隔100msec短。因此,关于传感器B,从数据的生成起到失效为止的期间表示该感测周期中的数据有效期间,必须在该数据有效期间取得数据。在图21的例中,处理器基于作为最小数据取得间隔的传感器A的处理间隔80msec间隔进行数据取得处理,因此,在由miss所示的部位发生传感器B的数据的漏取。
[0144]图22示出第4实施方式的处理器系统130的功能模块。处理器系统130连接有3个传感器A、B、C。传感器A以80msec间隔生成感测数据,数据有效时间为与处理间隔相同的80msec。传感器B以100msec间隔生成感测数据。传感器B在内部具有FIFO,数据有效期间为25msec。传感器C以125msec间隔生成感测数据,数据有效时间为与处理间隔相同的125msec。传感器A?C具有中断请求功能。
[0145]处理器系统130具有INTC 10和RTC计时器50。INTC 10的功能与在之前的实施方式中说明的相同,省略重复的说明。RTC计时器50具有计时器功能,但不是向PMU 20发布处理器唤醒请求。处理器30具有内部计时器31 WMU 20管理针对处理器系统130中包含的INTC
10、处理器30、存储器40、RTC计时器50等的电源供给。PMU 20按照来自INTC 10的请求将处理器30唤醒。
[0146]存储器40保存管理表44、处理器30执行的应用程序AP4、中断处理程序INTHL4、管理表登记例程RT41、唤醒触发设定例程RT42、传感器A数据取得处理RT43、传感器B数据取得处理RT44、传感器C数据取得处理RT45、内部计时器再次设定例程RT46。
[0147]图23是用于说明管理表44的数据结构的图。管理表44具有使传感器ID、数据取得处理的入口地址44a、处理间隔44b、下次处理时刻(next_proc ) 44c、数据有效期间(lifetime)44e、下次失效时刻(next_deadline)44f成组的管理信息。数据有效期间44e表示在各感测周期中传感器数据自生成起为有效的期间。下次失效时刻44f表示下次的传感器数据的失效时刻。处理器30在处理器系统130启动时进行管理表44的设定处理。
[0148]图24是示出比较例和第4实施方式的传感器数据取得处理的时间图。在图24中,传感器A?C是与图21同样的时间图。在比较例中,除了在最小的数据取得间隔(传感器A的取得间隔)之外,还在时刻100和时刻200将处理器唤醒。在比较例中,从时刻O到时刻500为止,处理器唤醒9次。在第4实施方式中,基于处理间隔和数据有效时间,动态地改变唤醒处理器的时机。在第4实施方式中,从时刻O到时刻500为止,处理器30唤醒6次。这样,在第4实施方式中,与比较例相比,能够降低状态转变次数(唤醒次数)。
[0149]以下,对第4实施方式的工作进行详细说明。图25是示出应用程序AP4的工作步骤的流程图。在处理器系统130启动时,处理器30执行应用程序AP4。应用程序AP4使传感器A、8、(:初始化(3400)。
[0150]接下来,处理器30执行管理表登记例程RT41(S401)。图26是示出管理表登记例程RT31的流程图。首先,对各传感器ID设定入口地址44a、处理间隔44b、数据有效期间44e(图26:S410)。接下来,处理器30对各传感器ID的下次处理时刻44c设定下次处理时刻。在执行管理表登记例程RT41时,处理器30对下次处理时刻44c设定从内部计时器31取得的当前时刻(时刻0)(3411)。
[0151]处理器30设定中断向量等,使得在接收到来自INTC 10的中断请求时执行中断处理程序INTHL4(图25:S402)。接下来,处理器30执行中断处理程序INTHL4(S403)。然后,应用程序AP4将处理器30设为睡眠状态(S404)。
[0152]图27是示出中断处理程序INTHL4的工作步骤的流程图。中断处理程序INTHL4执行内部计时器再次设定例程RT46(S420)。该内部计时器再次设定例程RT46与图13所示的步骤同样。即,处理器30将从RTC计时器50取得的当前时刻设定为内部计时器31的时刻。接下来,中断处理程序INTHL4取得中断通知寄存器11的寄存器值(S421)。中断处理程序INTHL4参照取得的寄存器值,检查是否从传感器A?C产生了中断请求(S422) ο在存在中断请求的情况下(S422:是),中断处理程序INTHL4从管理表44取得与发布中断请求的传感器ID对应的数据取得处理的入口地址(S423),执行由取得的入口地址指定的数据取得处理(S424)。进而,中断处理程序INTHL4将对应的传感器ID的中断标志位从“I”清除为“O” (S425)。中断处理程序INTHL4判定是否执行了针对中断标志位为“I”的全部传感器ID的数据取得处理(S426)。在判定结果为“否”的情况下,对中断标志位为“I”的全部传感器ID执行上述同样的处理。接下来,中断处理程序INTHL4执行唤醒触发设定例程RT42(S427)。
[0153]图28是示出唤醒触发设定例程RT42的流程图。处理器30从管理表44取得处理间隔44b、下次处理时刻44c、数据有效期间44e、下次失效时刻44f (S430)。接下来,处理器30从内部计时器31取得当前时刻(S431)。进而,处理器30对每个传感器ID执行以下的处理。处理器30判定取得的当前时刻是否为更新前的下次处理时刻以上(S432)。此外,该判定结果为“是”表示处理器30能够在睡眠状态中取得传感器数据。该条件成立的传感器通过图27的S424进行数据取得处理。因此,也可以取代S432,通过识别中断通知寄存器11的寄存器值为“I”的传感器,确定能够在睡眠状态中取得传感器数据的传感器。
[0154]处理器30在S432为“是”的情况下,以对更新前的下次处理时刻44c加上处理间隔44b而得到的值来更新下次处理时刻44c(S433)。另外,处理器30以对更新后的下次处理时亥丨J44c加上数据有效期间44e而得到的值来更新下次失效时刻44f(S434)。对全部传感器ID反复执行这样的处理(S432?S435)。接下来,处理器30在全部传感器ID中判定下次失效时刻的最小值,取得具有比该最小值小的下次处理时刻中的最大(晚)的下次处理时刻的传感器ID(S436)。接下来,处理器30设定唤醒触发寄存器12,使得:仅在存在来自具有取得的ID的传感器的中断处理请求时,从INTC 10对PMU 20发布处理器唤醒请求(S437)。即,处理器30将取得的传感器ID的唤醒触发标志位设为“I”。
[0155]这样,在第4实施方式中,每当执行中断处理程序INTHL4时,一定执行唤醒触发设定例程RT42。由此,在第4实施方式中,动态地变更对唤醒触发寄存器12设定的传感器ID。
[0156]接下来,参照图24的时间图等,对处理器系统130的工作更详细地进行说明。处理器系统130启动后,执行应用程序AP4。处理器30使传感器A、B、C初始化(图25:S400)。接下来,处理器30对管理表44设定各传感器A?C的管理信息(S401)。关于传感器A,设定了 ID =O N entry address = Oxl 100、interval = 80、next_proc = CKlifetime = 80、next_deadline=0。关于传感器B,设定了ID = 1、entry address = Ox1200、interval = 100、next_proc = 0、lifetime = 25、next_deadline = 0。关于传感器C,设定了ID = 2、entry address = 0x1300、interval = 125、next_proc = 0、lifetime = 125、next_deadline = 0。接下来,处理器 30 设定中断向量等,使得在从INTC 10接收到中断请求时执行中断处理程序INTHL4(S402)。进而,处理器30为了进行初次的数据取得处理,执行中断处理程序INTHL4(S403)。
[0157]在时刻O进行各传感器A?C的感测,生成数据。中断处理程序INTHL4进行内部计时器31的再次设定(图27:S420)。在时刻O,内部计时器31的值保持为O。接下来,处理器30取得中断通知寄存器11的寄存器值。在时刻O,从传感器A?C产生中断请求,因此,寄存器值为(111)。中断处理程序INTHL4执行数据取得处理。首先,中断处理程序INTHL4通过比特位位置来确定存在中断请求的传感器ID。首先,选择ID = 0。中断处理程序INTHL4从管理表44取得ID = O的入口地址Oxl 100(S423),执行存储器40的入口地址Oxl 100中保存的传感器A数据取得处理RT43(S424)。接下来,中断处理程序INTHL4将ID = O的中断标志位清除为“O”(S425)。中断处理程序INTHL4对ID = UID = 2也执行同样的处理。
[0158]接下来,处理器30执行唤醒触发设定例程RT42(S427)。处理器30从管理表44取得处理间隔44b、下次处理时刻44c、数据有效期间44e、下次失效时刻44f (S430)。接下来,处理器30从内部计时器31取得当前时刻0(S431)。处理器30对当前时刻(O)与ID = O的下次处理时刻(O)进行比较(S432)。其比较结果一致,因此,处理器30以下次处理时刻(0)+处理间隔(80) =80来更新ID = O的下次处理时刻(S434)。另外,处理器30以下次处理时刻(80)+数据有效期间(80) = 160来更新ID = O的下次失效时刻(S433)。处理器30同样地更新ID = I和ID=2的下次处理时刻与下次失效时刻。在ID = I中,下次处理时刻更新为100( = 0+100),下次失效时刻更新为125( = 100+25)。在ID = 2中,下次处理时刻更新为125(=0+125),下次失效时刻更新为250( = 125+125)。图23示出了各管理信息更新后的管理表44。在当前的管理表44的状态下,最小的下次失效时刻为传感器B(ID= I)的125msec。而且,在比125msec小的下次处理时刻中,最大的下次处理时刻为传感器B的100msec。处理器30取得ID= I作为对唤醒触发寄存器12设定的传感器ID(S436)。处理器30将唤醒触发寄存器12设定为寄存器值
(010)(S437)。在中断处理程序INTHL4的处理结束时,使处理返回到应用程序AP4。应用程序AP4将处理器30设为睡眠状态(图25: S404)。
[0159]接下来,在时刻80,从传感器A发布中断请求,中断通知寄存器11的寄存器值成为(100)。此时,唤醒触发寄存器12的寄存器值为(010)。因此,INTC 10不发布对PMU 20的处理器唤醒请求。因此,处理器30保持睡眠状态,不进行数据取得处理。
[0160]接下来,在时刻100,从传感器B发布中断请求,中断通知寄存器11的寄存器值成为(110)。此时,唤醒触发寄存器12的寄存器值为(010)。因此,INTC 10发布对PMU 20的处理器唤醒请求。由此,将处理器30唤醒,根据中断处理程序INTHL4,执行传感器A、B的数据取得处理。
[0161]处理器30在执行了数据取得处理后,执行唤醒触发设定例程RT42。处理器30对当前时刻(100)与传感器A的下次处理时刻(80)进行比较。当前时刻(100)大于下次处理时刻(80),因此,处理器30将下次处理时刻更新为下次处理时刻(80)+处理间隔(80) = 160。另夕卜,处理器30将下次失效时刻更新为下次处理时刻(160)+数据有效期间(80) = 240。同样地,处理器30对当前时刻(100)与传感器B的下次处理时刻(100)进行比较。当前时刻(100)为下次处理时刻(100)以上,因此,处理器30将下次处理时刻更新为下次处理时刻(100)+处理间隔(100) = 200,将下次失效时刻更新为下次处理时刻(200) +数据有效期间(25) = 225。关于传感器C,下次处理时刻(125)大于当前时刻(100),因此不更新当前的下次处理时刻
(125)和当前的下次失效时刻(250)。在当前的管理表44的状态下,最小的下次失效时刻为传感器B的225msec,比该225msec小的下次处理时刻中的最大值为传感器B的200msec。由此,处理器30取得ID= I作为对唤醒触发寄存器12设定的传感器ID。处理器30将唤醒触发寄存器12设定为寄存器值(OlO)。在中断处理程序INTHL4的处理结束时,使处理返回到应用程序AP4。应用程序AP4将处理器30设为睡眠状态。
[0162]以下,同样地,仅在时刻200、时刻300、时刻375、时刻400,将处理器30唤醒,执行在各时刻之前存在中断请求的传感器的数据取得处理。
[0163]在第4实施方式中,基于传感器的数据作成周期和数据有效时间,动态地改变唤醒处理器的时机,使得不会产生数据的失效。因此,能够降低处理器30的睡眠状态与激活状态的转变次数,能够降低处理器30的功耗。另外,处理器30不会在数据失效时刻之后进行数据取得处理,因此不会漏取感测数据。
[0164](第5实施方式)
[0165]在第5实施方式中,与第4实施方式同样地,设想存在数据有效时间比数据取得间隔短的传感器的情况。另外,与第2实施方式同样地,设想全部传感器A?C不具有中断请求功能的情况。在第5实施方式中,处理器30也是在图24的最下部的时间图所示的时机被唤醒来进行数据取得工作。
[0166]图29示出第5实施方式的处理器系统140的功能模块。处理器系统140连接有3个传感器A、B、C。传感器A以80msec间隔生成感测数据,数据有效时间为80msec。传感器B以100msec间隔生成感测数据。传感器B在内部具有FIFO,数据有效期间为25msec。传感器C以125msec间隔生成感测数据,数据有效时间为125msec。传感器A?C不具有中断请求功能。
[0167]处理器系统140具有RTC计时器50 ATC计时器50的功能与在第2实施方式中说明的相同,省略重复的说明。处理器30具有内部计时器31IMU 20管理针对处理器系统140中包含的处理器30、存储器40、RTC计时器50等的电源供给。PMU 20根据来自RTC计时器50的请求将处理器30唤醒。
[0168]存储器40保存管理表45、处理器30执行的应用程序AP5、中断处理程序INTHL5、管理表登记例程RT51、唤醒触发设定例程RT52、传感器A数据取得处理RT53、传感器B数据取得处理RT54、传感器C数据取得处理RT55、内部计时器再次设定例程RT56。
[0169]管理表45的数据结构与图23所示的管理表44相同。管理表45具有使传感器ID、入口地址45a、处理间隔45b、下次处理时刻(next_proc)45c、数据有效期间(lifetime )45e、下次失效时刻(next_deadline)45f成组的管理信息。
[0170]以下,对第5实施方式的工作进行详细说明。图30是示出应用程序AP5的工作步骤的流程图。在处理器系统140启动时,处理器30执行应用程序AP5。应用程序AP5使传感器A、8、(:初始化(3500)。
[0171]接下来,处理器30执行管理表登记例程RT51(S501)。管理表登记例程RT51与图26所示的管理表登记例程RT31相同。处理器30设定中断向量等,使得在接收到来自RTC计时器50的中断请求时执行中断处理程序INTHL5(S502)。接下来,处理器30执行中断处理程序INTHL5(S503)。然后,应用程序AP5将处理器30设为睡眠状态(S504)。
[0172]图31是示出中断处理程序INTHL5的工作步骤的流程图。中断处理程序INTHL5执行内部计时器再次设定例程RT56(S510)。该内部计时器再次设定例程RT56与图13所示的步骤同样。即,处理器30将从RTC计时器50取得的当前时刻设定为内部计时器31的时刻。接下来,中断处理程序INTHL5从管理表45取得ID = O的入口地址45a、下次处理时刻45c(S511)。接下来,中断处理程序INTHL5将从内部计时器31取得的当前时刻与ID = O的下次处理时刻(next_proc)45c进行比较(S512)。中断处理程序INTHL5在当前时刻为ID = O的下次处理时刻以上的情况下(S512:是),执行传感器A数据取得处理RT53(S513)。接下来,中断处理程序INTHL5以对ID = O的下次处理时刻加上处理间隔45b而得到的值来更新ID = O的下次处理时亥|J(S514)。中断处理程序INTHL5判定针对管理表45中登记的全部传感器ID的处理是否结束(S515 ),在判定结果为“否”的情况下,对全部传感器ID执行S511?S515的处理。接下来,中断处理程序INTHL5执行唤醒触发设定例程RT52(S516)。
[0173]图32是示出唤醒触发设定例程RT52的流程图。处理器30从管理表45取得处理间隔45b、下次处理时刻45c、数据有效期间45e、下次失效时刻45f(S520)。接下来,处理器30从内部计时器31取得当前时刻(S521)。进而,处理器对每个传感器ID执行以下的处理。处理器30以对S514中更新后的下次处理时刻45c加上数据有效期间45e而得到的值来更新下次失效时刻45f(S522)。对全部传感器ID反复执行这样的处理(S522?S523)。接下来,处理器30在全部传感器ID中判定下次失效时刻的最小值,取得具有比该最小值小的下次处理时刻中的最大(晚)的下次处理时刻的传感器ID(S524)。接下来,处理器30将取得的传感器ID的下次处理时刻设定到RTC触发寄存器51 (S525)。
[0174]接下来,参照图24的时间图等,对处理器系统140的工作更详细地进行说明。处理器系统140启动后,执行应用程序AP5。处理器30使传感器A、B、C初始化(图30:S500)。接下来,处理器30对管理表45设定各传感器A?C的管理信息(S501)。关于传感器A,设定了 ID =O N entry address = Oxl 100、interval = 80、next_proc = CKlifetime = 80、next_deadline=0。关于传感器B,设定了ID = 1、entry address = Ox1200、interval = 100、next_proc = 0、lifetime = 25、next_deadline = 0。关于传感器C,设定了ID = 2、entry address = 0x1300、interval = 125、next_proc = 0、lifetime = 125、next_deadline = 0。接下来,处理器 30 设定中断向量等,使得在从RTC计时器50接收到中断请求时执行中断处理程序INTHL5(S502)。进而,处理器30为了进行初次的数据取得处理,执行中断处理程序INTHL5(S503)。
[0175]在时刻O进行各传感器A?C的感测,生成数据。中断处理程序INTHL5进行内部计时器31的再次设定(图31: S510)。在时刻O,内部计时器31的值保持为O。接下来,中断处理程序INTHL5从管理表45取得ID = O的入口地址(0x1100)、下次处理时刻(O) (S511)。接下来,中断处理程序INTHL5将从内部计时器31取得的当前时刻(O)与ID = O的下次处理时刻(O)进行比较(S512)。由于满足S512的条件,因此,中断处理程序INTHL5执行传感器A数据取得处理RT53 (S513)。接下来,中断处理程序INTHL5以下次处理时刻(O) +处理间隔(80) = 80来更新下次处理时刻(S514)。中断处理程序INTHL5对ID = 1、ID = 2也执行同样的处理。
[0176]接下来,中断处理程序INTHL5执行唤醒触发设定例程RT52(S516)。处理器30从管理表45取得处理间隔45b、下次处理时刻45c、数据有效期间45e、下次失效时刻45f(S520)。接下来,处理器30从内部计时器31取得当前时刻0(521)。处理器30以S514中更新后的下次处理时刻(80)+数据有效期间(80) = 160来更新ID = O的下次失效时刻(S522)。处理器30同样地将ID= I的下次失效时刻更新为125( = 100+25),将ID = 2的下次失效时刻更新为250( = 125+125)。在当前的管理表45的状态下,最小的下次失效时刻为传感器B(ID=I)的125msec。而且,在比125msec小的下次处理时刻中,最大的下次处理时刻为传感器B的100msec。处理器30取得ID= I作为对唤醒触发寄存器12设定的传感器ID(S524)。接下来,处理器30将取得的传感器ID的下次处理时刻( = 100)设定到RTC触发寄存器51(S525)。在中断处理程序INTHL5的处理结束时,使处理返回到应用程序AP5。应用程序AP5将处理器30设为睡眠状态(图30:S504)。
[0177]接下来,在成为时刻100时,RTC计时器50的计时器值与RTC触发寄存器51的寄存器值( = 100)—致。由此,从RTC计时器50向PMU 20发布处理器唤醒请求,从RTC计时器50对处理器30通知中断请求。由此,处理器30成为激活状态,执行中断处理程序INTHL5。
[0178]中断处理程序INTHL5以RTC计时器50的当前时刻=100来再次设定内部计时器31
(5510)。中断处理程序INTHL5从管理表45取得传感器A(ID= O)的下次处理时刻(80)
(5511),将当前时刻(100)与下次处理时刻(80)进行比较(S512)。此时,由于满足S512的条件,因此,处理器30执行传感器A数据取得处理RT53(S513)。接下来,中断处理程序INTHL5以下次处理时刻(80)+处理间隔(80 ) = 160来更新ID = O的下次处理时刻(S514)。接下来,对传感器B进行处理。由于是当前时刻(100),是传感器B的下次处理时刻(100),因此,满足S512的条件。处理器30执行传感器B数据取得处理RT54。然后,中断处理程序INTHL5以下次处理时刻(100)+处理间隔(100) = 200来更新ID = I的下次处理时刻。由于传感器C的下次处理时亥lj(125)大于当前时刻(100),因此,不满足S512的条件。因此,不进行针对传感器C的数据取得处理和下次处理时刻的更新。接下来,处理器30执行唤醒触发设定例程RT52(S516)。
[0179]处理器30从管理表45取得处理间隔45b、下次处理时刻45c、数据有效期间45e、下次失效时刻45f(S520)。接下来,处理器30从内部计时器31取得当前时刻(100)(S521)。进而,处理器30对每个传感器ID执行以下的处理。处理器30以对S514中更新后的下次处理时亥丨J45c加上数据有效期间45e而得到的值来更新下次失效时刻45f(S522)<JD = 0的下次处理时刻成为160,下次失效时刻成为240 JD = I的下次处理时刻成为200,下次失效时刻成为225 <JD = 2的下次处理时刻成为125,下次失效时刻成为250。在当前的管理表45的状态下,最小的下次失效时刻为传感器B的225msec,比该225msec小的下次处理时刻中的最大值为传感器B的200msec。由此,处理器30取得ID= I作为对RTC触发寄存器51设定下次处理时刻的传感器ID(S524)。处理器30将RTC触发寄存器51设定为作为传感器B的下次处理时刻的200(S525)。在中断处理程序INTHL5的处理结束时,使处理返回到应用程序AP5。应用程序AP5将处理器30设为睡眠状态。
[0180]以下,同样地,仅在时刻200、时刻300、时刻375、时刻400,将处理器30唤醒,在各时刻执行下次处理时刻小于当前时刻的数据取得处理。
[0181]在第5实施方式中,基于传感器的数据作成周期和数据有效时间,动态地改变唤醒处理器30的时机,使得不会产生数据的失效。另外,通过计时器来管理传感器数据的取得处理。因此,即使在传感器不具有中断请求功能的情况下,也能够降低处理器30的睡眠状态与激活状态的转变次数。因此,能够降低处理器30的功耗。另外,处理器30不会在数据失效时刻之后进行数据取得处理,因此不会漏取感测数据。
[0182](第6实施方式)
[0183]在第6实施方式中,与第4实施方式同样地,设想存在数据有效时间比数据取得间隔短的传感器的情况。另外,与第3实施方式同样地,设为同时存在具有中断请求功能的传感器和不具有中断请求功能的传感器的情况。
[0184]图33示出第6实施方式的处理器系统150的功能模块。处理器系统150连接有3个传感器A、B、C。传感器A以80msec间隔生成感测数据,数据有效时间为80msec。传感器B以100msec间隔生成感测数据。传感器B在内部具有FIFO,数据有效期间为25msec。传感器C以125msec间隔生成感测数据,数据有效时间为125msec。传感器A和C具有中断请求功能,而传感器B不具有中断请求功能。
[0185]图33的处理器系统150具有INTC 10和RTC计时器50<JNTC 10和RTC计时器50的功能与在之前的第3实施方式中说明的相同,省略重复的说明。处理器30具有内部计时器31。PMU 20管理针对处理器系统150中包含的INTC 10、处理器30、存储器40、RTC计时器50等的电源供给。PMU 20按照来自INTC 10或RTC计时器50的请求将处理器30唤醒。
[0186]存储器40保存管理表46、处理器30执行的应用程序AP6、中断处理程序INTHL6、管理表登记例程RT61、唤醒触发设定例程RT62、传感器A数据取得处理RT63、传感器B数据取得处理RT64、传感器C数据取得处理RT65、内部计时器再次设定例程RT66。
[0187]图34是用于说明管理表46的数据结构的图。管理表46具有使传感器ID、数据取得处理的入口地址46a、处理间隔46b、下次处理时刻(next_proc) 46c、触发类型(triggertype )46d、数据有效期间(lifetime )46e、下次失效时刻(next_deadline)46f成组的管理信息。
[0188]以下,对第6实施方式的工作进行详细说明。图35是示出应用程序AP6的工作步骤的流程图。在处理器系统150启动时,处理器30执行应用程序AP6。应用程序AP6使传感器A、
8、(:初始化(3600)。
[0189]接下来,处理器30执行管理表登记例程RT61(S601)。图36是示出管理表登记例程RT61的流程图。首先,对各传感器ID设定入口地址46a、处理间隔46b、数据有效期间46e、触发类型46d(图36:S610)。接下来,处理器30对各传感器ID的下次处理时刻46c设定当前时刻(O)。
[0190]处理器30设定中断向量等,使得在接收到来自INTC 10或RTC计时器50的中断请求时执行中断处理程序INTHL6(图35:S602)。接下来,处理器30执行中断处理程序INTHL6(S603)。然后,应用程序AP6将处理器30设为睡眠状态(S604)。
[0191]图37是示出中断处理程序INTHL6的工作步骤的流程图。中断处理程序INTHL6执行内部计时器再次设定例程RT66(S620)。该内部计时器再次设定例程RT66与图13所示的步骤同样。即,处理器30从RTC计时器50取得当前时刻,将取得的当前时刻设定为内部计时器31的时刻。接下来,中断处理程序INTHL6取得中断通知寄存器11的寄存器值(S621)。中断处理程序INTHL6参照取得的寄存器值,检查是否从传感器A?C产生了中断请求(S622)。在存在中断请求的情况下(S622:是),中断处理程序INTHL6从管理表46取得与发布中断请求的传感器ID对应的数据取得处理的入口地址(S623),执行由取得的入口地址指定的数据取得处理(S624)。进而,中断处理程序INTHL6将对应的传感器ID的中断标志位从“I”清除为“O”(S625)。接下来,中断处理程序INTHL6以对存在中断请求的传感器ID的下次处理时刻加上处理间隔46b而得到的值来更新该传感器ID的下次处理时刻(S626)。中断处理程序INTHL6判定是否执行了针对触发类型为中断且中断标志位是否为“I”的全部传感器ID的数据取得处理(S627)。在判定结果为“否”的情况下,对触发类型为中断且中断标志位为“I”的传感器ID执行上述同样的处理。
[0192]接下来,中断处理程序INTHL6从管理表46取得触发类型为计时器的传感器ID的入口地址46a、下次处理时刻46c(S628)。接下来,中断处理程序INTHL6将从内部计时器31取得的当前时刻与S628中取得的传感器ID的下次处理时刻46c进行比较(S629)。中断处理程序INTHL6在该传感器ID的下次处理时刻46c为当前时刻以下的情况下(S629:是),执行由S628中取得的传感器ID的入口地址指定的数据取得处理(S630)。接下来,中断处理程序INTHL6以对该传感器的下次处理时刻加上处理间隔46b而得到的值来更新该传感器ID的下次处理时刻(S631)。中断处理程序INTHL6判定针对触发类型为计时器的全部传感器ID的处理是否结束(S632)。在判定结果为“否”的情况下,对触发类型为计时器的全部传感器执行S628?S632的处理。接下来,中断处理程序INTHL6执行唤醒触发设定例程RT62(S633)。
[0193]图38是示出唤醒触发设定例程RT62的流程图。处理器30从管理表46取得处理间隔46b、下次处理时刻46c、数据有效期间46e、下次失效时刻46f (S640)。接下来,处理器30从内部计时器31取得当前时刻(S641)。进而,处理器30对每个传感器ID执行以下的处理。处理器30以对S626或S631中更新后的下次处理时刻46c加上数据有效期间46e而得到的值来更新下次失效时刻46f( S642)。对全部传感器ID反复执行这样的处理(S642?S643)。接下来,处理器30在全部传感器ID中判定下次失效时刻的最小值,取得具有比该最小值小的下次处理时刻中的最大(晚)的下次处理时刻的传感器ID(S644)。接下来,处理器30判别取得的传感器ID的触发类型是中断还是计时器(S645)。在触发类型为中断的情况下,处理器30设定唤醒触发寄存器12,使得:仅在存在来自具有取得的ID的传感器的中断处理请求时,从INTC10对PMU 20发布处理器唤醒请求(S646)。即,处理器30将取得的传感器ID的唤醒触发标志位设为“I”。另外,处理器30将RTC触发寄存器51清零(S647)。另外,在触发类型为计时器的情况下(S645:否),通过取得的传感器ID的下次处理时刻来设定RTC触发寄存器51 (S648)。另外,处理器30将唤醒触发寄存器12清零(S649)。
[0194]接下来,参照图24的时间图等,对处理器系统150的工作更详细地进行说明。处理器系统150启动后,执行应用程序AP6。处理器30使传感器A、B、C初始化(图35:S600)。接下来,处理器30对管理表46设定各传感器A?C的管理信息(S601)。关于传感器A,设定了 ID =O N entry address = Oxl 100、interval = 80、next_proc = CKlifetime = 80、next_deadline= 0、trigger type = int。关于传感器B,设定了ID= 1、entry address = Oxl200、interval=100、next_proc = 0、life time = 25、next_deadiine = 0、trigger type = timer。关于传感器C,设定了ID = 2、entry address = 0x1300、interval = 125、next_proc = 0、lifetime =125、next_deadline = 0、trigger type = int。接下来,处理器30设定中断向量等,使得在从INTC 10或RTC计时器50接收到中断请求时执行中断处理程序INTHL6(S602)。进而,处理器30为了进行初次的数据取得处理,执行中断处理程序INTHL6(S603)。
[0195]在时刻O进行各传感器A?C的感测,生成数据。中断处理程序INTHL6进行内部计时器31的再次设定(图36: S620)。在时刻O,内部计时器31的值保持为O。接下来,处理器30取得中断通知寄存器11的寄存器值(S621)。在时刻0,从传感器A、C产生中断请求,因此,寄存器值为(101)。在该情况下,首先选择ID = 0。中断处理程序INTHL6从管理表46取得ID = O的入口地址0xll00(S623),执行存储器40的入口地址Oxl 100中保存的传感器A数据取得处理RT63(S624)。进而,中断处理程序INTHL6将ID = O的中断标志位清除为“0”(S625)。接下来,中断处理程序INTHL6以下次处理时刻(0)+处理间隔(80) = 80来更新下次处理时刻(3626)。中断处理程序INTHL6对ID = 2也执行同样的处理。另外,传感器C的下次处理时刻更新为125(=0+125)。
[0196]接下来,中断处理程序INTHL6对触发类型为计时器的传感器B进行当前时刻(O)与下次处理时刻(O)的比较(S629)。此处,当前时刻(O)为下次处理时刻(O)以上,因此,中断处理程序INTHL6同样地执行传感器B数据取得处理RT64(S630)。另外,中断处理程序INTHL6将传感器B的下次处理时刻更新为100( =0+100) (S631)。
[0197]接下来,处理器30执行唤醒触发设定例程RT62(S633)。处理器30从管理表46取得处理间隔46b、下次处理时刻46c、数据有效期间46e、下次失效时刻46f (S640)。接下来,处理器30从内部计时器31取得当前时刻0(S641)。处理器30以S626中更新后的下次处理时刻
(80)+数据有效期间(80) = 160来更新ID = O的下次失效时刻(S642)。处理器30同样地将ID=I的下次失效时刻更新为125( = 100+25),将ID = 2的下次失效时刻更新为250( = 125+125)。在当前的管理表46的状态下,最小的下次失效时间为传感器B(ID= I)的125msec。而且,在比125msec小的下次处理时刻中,最大的下次处理时刻为传感器B的100msec。处理器30取得ID= I作为对唤醒触发寄存器12设定的传感器ID(S645)。传感器B( ID= I)的触发类型为计时器,因此,处理器30将ID= I的下次处理时刻( = 100)设定到RTC触发寄存器51(S648)。另外,处理器30将唤醒触发寄存器12清零(S649)。在中断处理程序INTHL6的处理结束时,使处理返回到应用程序AP6。应用程序AP6将处理器30设为睡眠状态(图35: S604)。
[0198]接下来,在时刻80,从传感器A发布中断请求,中断通知寄存器11的寄存器值成为(100)。此时,唤醒触发寄存器12的寄存器值为(010)。因此,INTC 10不对PMU 20发布处理器唤醒请求。因此,处理器30保持睡眠状态,不进行数据取得处理。
[0199]接下来,在时刻100,RTC计时器50的计时器值与RTC触发寄存器51的寄存器值(=100)一致。由此,从RTC计时器50向PMU 20发布处理器唤醒请求,从RTC计时器50对处理器30通知中断请求。由此,处理器30成为激活状态,执行中断处理程序INTHL6。
[0200]中断处理程序INTHL6以RTC计时器50的当前时刻=100来再次设定内部计时器31(S620)。中断处理程序INTHL6取得中断通知寄存器11的寄存器值(100)(S621)。处理器30基于该寄存器值(100),执行传感器A数据取得处理RT63(S623、S624)。进而,中断处理程序INTHL6将ID = O的中断标志位清除为“O”( S625)。另外,中断处理程序INTHL6将ID = O的下次处理时刻更新为160( =80+80) (S626)。
[0201]接下来,中断处理程序INTHL6从管理表46取得传感器B(ID=I)的下次处理时刻
(100)(S628),将取得的下次处理时刻(100)与当前时刻(100)进行比较(S629)。此时,当前时刻(100)为下次处理时刻(100),因此,处理器30执行传感器B数据取得处理RT64(S630)。进而,中断处理程序INTHL6以200( = 100+100)来更新ID= I的下次处理时刻(S631)。接下来,中断处理程序INTHL6调用唤醒触发设定例程RT62。
[0202]处理器30从管理表46取得处理间隔46b、下次处理时刻46c、数据有效期间46e、下次失效时刻46f(S640)。接下来,处理器30从内部计时器31取得当前时刻(100)(S641)。进而,处理器30对每个传感器ID执行以下的处理。处理器30以对管理表46中登记的最新的下次处理时刻46c加上数据有效期间46e而得到的值来更新下次失效时刻46f (S642)。ID = O的下次处理时刻成为160,下次失效时刻成为240( = 160+80) JD= I的下次处理时刻成为200,下次失效时刻成为225( = 200+25) <JD = 2的下次处理时刻成为125,下次失效时刻成为250( = 125+125)。在当前的管理表46的状态下,最小的下次失效时刻为传感器B的225msec,比该225msec小的下次处理时刻中的最大值为传感器B的200msec。由此,处理器30取得ID = I作为传感器ID(S644)。处理器30将RTC触发寄存器51设定为作为传感器B的下次处理时刻的200 (S648)。另外,处理器30将唤醒触发寄存器12清零(S649)。在中断处理程序INTHL6的处理结束时,使处理返回到应用程序AP6。应用程序AP6将处理器30设为睡眠状态。
[0203]以下,同样地,仅在时刻200、时刻300、时刻375、时刻400,将处理器30唤醒,在各时亥|J,触发类型为中断的传感器按照中断通知寄存器11的值来执行数据取得处理,触发类型为计时器的传感器按照下次处理时刻的值来执行数据取得处理。
[0204]在第6实施方式中,基于传感器的数据作成周期和数据有效时间,动态地改变唤醒处理器30的时机,使得不会产生数据的失效。另外,通过中断控制和计时器来管理传感器数据的取得处理。因此,即使在同时存在具有发布中断请求的功能的传感器和不具有所述功能的传感器的情况下,也能够降低处理器30的睡眠状态与激活状态的转变次数。因此,能够降低处理器30的功耗。另外,处理器30不会在数据失效时刻之后进行数据取得处理,因此不会漏取感测数据。
[0205](第7实施方式)
[0206]当在传感器的数据生成时刻存在抖动的情况下,有可能因抖动而产生数据的漏取。图39是示出传感器P、传感器Q、传感器R和处理器的时间图。传感器P、传感器Q、传感器R具有中断请求功能。在图39中,向上的箭头表示生成传感器数据的时刻。向下的箭头表示传感器数据的失效时刻。从向上的箭头起到向下的箭头为止的期间表示数据有效期间。在传感器Q产生抖动,如箭头Z所示,传感器Q的数据生成时刻从以虚线表示的正常时刻偏移到以实线表示的之前的时刻。
[0207]对通过第4实施方式的控制取得图39所示的传感器P、传感器Q、传感器R的数据的情况进行说明。在时刻to的时刻,以传感器P为唤醒触发,将处理器唤醒。此外,“以传感器P为唤醒触发”对应于与传感器P对应的中断标志位和唤醒触发标志位这双方为“I”的状态。在时刻to,处理器取得传感器P和传感器Q的数据。接下来,处理器为了设定用于下次唤醒的唤醒触发标志位,执行图28的S436的处理。在时刻t0,最小的下次失效时刻为时刻t2,比下次失效时刻t2小的下次处理时刻中的最大的下次处理时刻为时刻tl。因此,处理器将传感器Q的唤醒触发标志位设为“I”。但是,在该时刻tl,由于抖动,没有从传感器Q发布中断请求,因此处理器未被唤醒。处理器在作为传感器Q的再下一个周期时刻t4将传感器Q作为唤醒触发进行唤醒。在时刻t4,处理器取得传感器PQR的数据。但是,传感器R的数据有效期间在时刻t3结束。这样,由于抖动,传感器R的取得处理发生延迟,产生传感器R的数据的漏取。
[0208]第7实施方式可以应用于第4实施方式的控制。在第7实施方式中,将管理表44(参照图23)中登记的处理间隔44b登记为将作为抖动的最大值的余裕值Mzl考虑在内的值。即,将从处理间隔减去余裕值Mzl而得到的值设定为处理间隔44b。余裕值Mzl为时间前进方向的抖动的最大值。通过进行这样的设定,各传感器的数据生成时刻一定向后侧偏移,因此,不会产生图39所示那样的因数据生成时刻向前侧偏移而导致的数据的漏取。而图40示出了即使进行这样的设定也会产生数据消失的情况。即,在作为唤醒触发而决定出的传感器的数据生成时刻产生抖动的情况。在图40中,选择传感器P作为唤醒触发。该传感器P的数据生成时刻从时刻t0延迟到tl。因此,处理器30在时刻tl唤醒。在时刻t0和时刻tl之间,传感器Q的数据的有效期间结束。这样,在图40中,由于抖动,传感器Q的取得处理发生延迟,产生传感器Q的数据的漏取。
[0209]作为被选择为唤醒触发的传感器的数据生成时刻发生偏移时的解决措施,在第7实施方式中,将数据有效期间设为考虑了作为抖动的最大值的余裕值Mz2的值来用于计算。即,将从数据有效期间减去Mz2而得到的值作为数据有效期间来用于计算。余裕值Mz2为时间延迟方向的抖动的最大值。此外,也可以将余裕值Mz I和Mz2设为相同的值。另外,考虑抖动的积累,在第7实施方式中,针对作为唤醒触发而选择出的传感器,变更唤醒时的下次处理时刻的计算方法。即,不是对上次的下次处理时刻加上处理间隔,而是对唤醒时的当前时刻加上处理间隔,由此求出下次处理时刻。在产生抖动的情况下,在唤醒处理器时,根据实际的唤醒时刻对更新前的下次处理时刻进行修正,对该修正值加上处理间隔,由此防止抖动的积累。
[0210]图41是示出第7实施方式的应用程序的工作步骤的流程图。图41与图25的不同之处仅在于在图41中追加了S702这点,省略重复的说明。在S702中,设定登记余裕值Mz2。
[0211]图42是示出第7实施方式的管理表登记例程的流程图。在第7实施方式中,将从处理间隔减去余裕值Mzl而得到的值设定为处理间隔44b(S710)。除此以外与图26同样,省略重复的说明。在第7实施方式中,中断处理程序的处理步骤与图27所示的步骤相同,省略重复的说明。
[0212]图43是示出第7实施方式的唤醒触发设定例程的流程图。图43与图28的不同之处在于图43的S722、S723、S725和S728,省略重复的说明。针对各传感器ID执行S722?S727的处理。处理器判定中断标志位和唤醒触发标志位这双方是否为“I”(S722)。在该判定为“是”的情况下,从唤醒触发标志位被设定为“I”的传感器产生中断请求,因此,处理器以(当前时亥Ij+处理间隔)来更新下次处理时刻(S725)。在S722的判定为“否”的情况下,参照中断通知寄存器11的寄存器值,判定是否从该传感器ID产生了中断请求(S723)。在S723的判定为“是”的情况下,处理器以(下次处理时刻+处理间隔)来更新下次处理时刻(S724)。此外,在图28的S432中,通过将当前时刻与下次处理时刻进行比较来识别发布中断请求的传感器,而在第7实施方式中,进行考虑了抖动的数据取得控制,因此,不采用图28的S432的处理。在图43的S728中,处理器取得具有比从最小的下次失效时刻减去余裕值Mz2而得到的值小的下次处理时刻中的最大的下次处理时刻的传感器ID。进而,处理器将取得的传感器ID的唤醒触发标志位设为“I”(S729)。
[0213]图44是示出使用第7实施方式的传感器P、传感器Q、传感器R和处理器的时间图。此处,设为在传感器P产生抖动。在时刻to之前处理器转变到了睡眠状态时,选择传感器Q作为具有最小的下次失效时刻的传感器。这是因为,传感器Q的下次失效时刻小于传感器P的下次失效时刻t3和传感器R的下次失效时刻t5。在图40中,选择传感器P作为唤醒触发,而在图44中,由于从传感器Q的下次失效时刻减去余裕值Mz2,所以选择传感器Q作为唤醒触发。因此,在时刻t0,将传感器Q作为唤醒触发,将处理器唤醒,取得传感器Q的数据。这样,不会产生图40那样的传感器Q的数据的漏取。此外,传感器Q为唤醒触发传感器,因此,下次处理时刻通过S725的处理,使用当前时刻进行更新,但因为在传感器Q未产生抖动,所以其更新结果与S724的更新处理没有不同。接下来,处理器为了设定用于下次唤醒的唤醒触发标志位,执行S728的处理。在时刻t0,最小的下次失效时刻为时刻t2,比下次失效时刻t2小的下次处理时刻中的最大的下次处理时刻为时刻tl。因此,处理器将传感器Q的唤醒触发标志位设为T。
[0214]在时刻tl,以传感器Q作为唤醒触发,将处理器唤醒。在时刻tl,处理器取得传感器P和传感器Q的数据。传感器Q为唤醒触发传感器,因此,下次处理时刻通过S725的处理,使用当前时刻进行更新,当因为在传感器Q未产生抖动,所以其更新结果与S724的更新处理没有不同。接下来,处理器为了设定用于下次唤醒的唤醒触发标志位,执行S728的处理。在时刻11,最小的下次失效时刻为时刻t5,比下次失效时刻t5小的下次处理时刻中的最大的下次处理时刻为时刻t3。因此,处理器将传感器P的唤醒触发标志位设为“I”。
[0215]传感器P的中断请求的产生时刻因抖动从时刻t3偏移到时刻t4。因此,在成为时刻t4时,以传感器P作为唤醒触发,将处理器唤醒,取得传感器P和传感器R的数据。传感器P为唤醒触发传感器,因此,下次处理时刻通过S725的处理进行更新。在该更新处理中,将更新前的下次处理时刻t3修正为作为实际的唤醒时刻的当前时刻t4,对该修正时刻t4加上传感器P的处理间隔。
[0216]在第7实施方式中,即使在传感器的数据生成周期存在抖动的情况下,也不会发生数据消失,能够降低处理器的睡眠状态与激活状态的转变次数,能够降低处理器的功耗。
[0217](第8实施方式)
[0218]在第8实施方式中,在中断处理程序INTHLl?INTHL6调用各数据取得处理RT13-RT15?RT63-RT65时,通过使各数据取得处理RT13-RT15?RT63-RT65参照更新前的下次处理时刻,由此各数据取得处理RT13-RT15?RT63-RT65能够掌握传感器数据的生成时刻。因此,能够向用户提示各传感器的数据生成时刻。
[0219]例如,在图3的(B)的时间图中,关于传感器A,数据生成时刻为时刻O、时刻80、时刻160、时刻240、时刻320、时刻400,数据取得处理执行前的下次处理时刻中保存的值分别为
0、80、160、240、320、400,两者一致。
[0220]关于传感器B,数据生成时刻为时刻O、时刻100、时刻200、时刻300、时刻400。执行数据取得处理的时刻为时刻O、时刻160、时刻240、时刻320、时刻400,与数据生成时刻不同。另外,数据取得处理执行前的下次处理时刻中保存的值为O、100、200、300、400,与数据生成时刻一致。
[0221 ]关于传感器C,数据生成时刻为时刻O、时刻125、时刻250、时刻375。执行数据取得处理的时刻为时刻O、时刻160、时刻320、时刻400,与数据生成时刻不同。另外,数据取得处理执行前的下次处理时刻中保存的值为O、125、250、375,与数据生成时刻一致。
[0222]这样,各传感器的数据取得时刻与数据取得处理执行前的各传感器下次处理时刻中保存的值一致。因此,在第8实施方式中,在中断处理程序INTHLl?INTHL6调用各数据取得处理RT13-RT15?RT63-RT65时,使各数据取得处理RT13-RT15?RT63-RT65参照或向其提供登记的各传感器的下次处理时刻。由此,各数据取得处理RT13-RT15?RT63-RT65能够掌握各传感器的实际的数据生成时刻。
[0223]在第8实施方式中,各数据取得处理RT13-RT15?RT63-RT65能够掌握各传感器的实际的数据生成时刻。由此,能够使应用程序掌握各传感器的实际的数据生成时刻,能够将各传感器的实际的数据生成时刻提供给用户。
[0224](第9实施方式)
[0225]在第9实施方式中,设想处理器30支持多个阶段的睡眠状态的情况。另外,如第4?第6实施方式那样,设想处理器30的唤醒间隔不同的情况。例如,支持睡眠状态Ml和睡眠状态M2,其中,所述睡眠状态Ml的激活状态与睡眠状态的转变时间较短,但功耗较大,所述睡眠状态M2的所述转变时间比睡眠状态Ml长,但功耗比睡眠状态Ml小。
[0226]应用程序在将处理器30设为睡眠状态时,基于从转变到睡眠状态的时刻起到下次唤醒为止所需的时间Tk,决定转变到睡眠状态Ml和M2中的哪一个。应用程序在所需时间Tk比阈值Ct短的情况下,选择具有转变时间较短的睡眠状态Ml,在所需时间Tk为阈值Ct以上的情况下,选择功耗较小的睡眠状态M2。
[0227]在第4?第6实施方式中,取得与S436、S524、S644中取得的传感器ID对应的下次处理时刻44c、45c、46c,计算从当前时刻起到取得的下次处理时刻为止的时间,由此计算所需时间Tk。
[0228]在第9实施方式中,计算从转变到睡眠状态的时刻起到下次唤醒为止所需时间Tk,基于该时间Tk来选择睡眠状态,因此,能够降低功耗,高效地进行处理器的状态转变。此外,也可以设置两个以上的阈值,对3个以上的睡眠状态进行切换。
[0229](第10实施方式)
[0230]在第I?第9实施方式中,设为通过软件来实现唤醒触发设定例程,但也可以通过硬件来实现唤醒触发设定例程。例如,在图6所示的唤醒触发设定例程的情况下,具有存储各传感器的处理间隔的多个寄存器和对这多个寄存器的寄存器值的最小值进行运算的比较器,通过比较器的输出进行唤醒触发寄存器12的设定。
[0231]说明了本发明的几个实施方式,但是这些实施方式是作为例子而举出的,没有限定发明范围的意图。这些新的实施方式能够以其他的各种各样的方式来实施,在不脱离发明要旨的范围内能够进行各种省略、替换、变更。这些实施方式及其变形包含于发明的范围或要旨内,并且包含于权利要求所记载的发明及其等同的范围内。
【主权项】
1.一种传感器数据收集装置,其能够与具有不同的数据生成周期的多个传感器连接,所述传感器数据收集装置具备: 控制器,其具有第I状态和第2状态,在所述第2状态时取得一个或多个所述传感器的数据;以及 第I电路,其具有第I寄存器,基于所述第I寄存器的寄存器值,使所述控制器从所述第I状态向所述第2状态转变, 所述控制器基于所述多个数据生成周期中的最小的数据生成周期来设定所述第I寄存器。2.根据权利要求1所述的传感器数据收集装置,其中, 所述第I电路具备电源管理单元和具有所述第I寄存器的中断控制器, 所述中断控制器在从具有最小的数据生成周期的传感器产生中断请求时,向所述电源管理单元产生第I信号, 所述电源管理单元以所述第I信号为触发,使所述控制器转变到所述第2状态。3.根据权利要求2所述的传感器数据收集装置,其中, 所述第I寄存器具有: 第2寄存器,其存储表示有无来自所述多个传感器的中断请求的信息;以及 第3寄存器,其存储识别具有最小的数据生成周期的传感器的信息。4.根据权利要求3所述的传感器数据收集装置,其中, 所述控制器在转变到了所述第2状态时,基于所述第2寄存器的寄存器值,取得存在中断请求的一个或多个传感器的数据,将所述第2寄存器清零,转变到所述第I状态。5.根据权利要求1所述的传感器数据收集装置,其中, 所述第I电路具备电源管理单元和具有所述第I寄存器的计时器, 在所述第I寄存器中存储第I时刻信息,所述第I时刻信息是所述多个传感器中的具有最小的数据生成周期的传感器的下次的数据生成时刻, 所述计时器在当前时刻与所述第I寄存器值一致时,向所述电源管理单元产生第2信号, 所述电源管理单元以所述第2信号为触发,使所述控制器转变到所述第2状态。6.根据权利要求5所述的传感器数据收集装置,其中, 所述控制器具有管理各传感器的数据生成周期和所述第I时刻信息的管理表, 所述控制器在转变到了所述第2状态时,取得当前时刻为所述第I时刻信息以上的一个或多个传感器的数据。7.根据权利要求6所述的传感器数据收集装置,其中, 所述控制器对取得了数据的所述传感器的所述第I时刻信息进行更新,根据具有所述最小的数据生成周期的传感器的所述第I时刻信息来更新所述第I寄存器值,转变到所述第I状态。8.根据权利要求1所述的传感器数据收集装置,其中, 所述第I电路具备:具有第2寄存器和第3寄存器的中断控制器;具有第4寄存器的计时器;以及电源管理单元, 在所述第2寄存器中存储表示有无来自所述多个传感器的中断请求的信息, 在所述第3寄存器中存储识别所述多个传感器中的具有最小的数据生成周期的传感器的信息, 在所述第4寄存器中存储第I时刻信息,所述第I时刻信息是具有所述最小的数据生成周期的传感器的下次的数据生成时刻, 所述中断控制器基于所述第2寄存器和所述第3寄存器,在从具有所述最小的数据生成周期的传感器产生中断请求时,向所述电源管理单元产生第I信号, 所述计时器在当前时刻与所述第4寄存器的寄存器值一致时,向所述电源管理单元产生第2信号, 所述电源管理单元以所述第I信号或所述第2信号为触发,使所述控制器转变到所述第2状态。9.根据权利要求7所述的传感器数据收集装置,其中, 所述控制器具有管理表,所述管理表管理各传感器的数据生成周期、所述第I时刻信息和表示有无中断请求功能的触发类型, 所述控制器在转变到了所述第2状态时,基于所述第2寄存器的寄存器值,取得存在中断请求的一个或多个第I传感器的数据,取得所述触发类型为不具有中断请求功能的传感器中的当前时刻为所述第I时刻信息以上的一个或多个第2传感器的数据。10.根据权利要求9所述的传感器数据收集装置,其中, 所述控制器在取得了所述第I传感器的数据之后,将所述第2寄存器清零,更新所述第I传感器的所述第I时刻信息,在取得了所述第2传感器的数据之后,更新所述第2传感器的所述第I时刻信息,在根据具有所述最小的数据生成周期的传感器的触发类型而更新了所述第3寄存器和所述第4寄存器的任一方之后,转变到所述第I状态。11.一种传感器数据收集装置,其能够与具有多个不同的数据生成周期的多个传感器连接,所述传感器数据收集装置具备: 控制器,其具有第I状态和第2状态,在所述第2状态时取得一个或多个所述传感器的数据;以及 第I电路,其具有第I寄存器,基于所述第I寄存器的寄存器值,使所述控制器从所述第I状态向所述第2状态转变, 所述控制器针对每个传感器,基于所述数据生成周期来算出作为下次的数据生成时刻的第I时刻信息,对所述第I时刻信息分别加上数据有效期间来算出第2时刻信息,基于各传感器中的具有比最小的第2时刻信息小的一个或多个第I时刻信息中的最大的第I时刻信息的第I传感器的第I时刻信息,设定所述第I寄存器。12.根据权利要求11所述的传感器数据收集装置,其中, 所述第I电路具备电源管理单元和具有所述第I寄存器的中断控制器, 所述第I寄存器具有:第2寄存器,其存储表示有无来自所述多个传感器的中断请求的信息;和第3寄存器,其存储识别所述第I传感器的信息, 所述中断控制器基于所述第2寄存器和所述第3寄存器,在从所述第I传感器产生中断请求时,向所述电源管理单元产生第I信号, 所述电源管理单元以所述第I信号为触发,使所述控制器转变到所述第2状态。13.根据权利要求12所述的传感器数据收集装置,其中, 所述控制器具有管理表,所述管理表管理各传感器的数据生成周期、所述第I时刻信息、数据有效期间和第2时刻信息, 所述控制器在转变到了所述第2状态时, 基于所述第2寄存器的寄存器值,取得存在中断请求的一个或多个传感器的数据,将所述第2寄存器清零, 对产生了所述中断请求的传感器的所述第I时刻信息和所述第2时刻信息进行更新,基于更新后的所述管理表来确定所述第I传感器,将识别所述第I传感器的信息存储到所述第3寄存器,然后转变到所述第I状态。14.根据权利要求11所述的传感器数据收集装置,其中, 所述第I电路具备电源管理单元和具有所述第I寄存器的计时器, 所述第I寄存器具有存储所述第I传感器的所述第I时刻信息的第4寄存器, 所述计时器在当前时刻与所述第4寄存器的寄存器值一致时,向所述电源管理单元产生第2信号, 所述电源管理单元以所述第2信号为触发,使所述控制器转变到所述第2状态。15.根据权利要求14所述的传感器数据收集装置,其中, 所述控制器具有管理表,所述管理表管理各传感器的数据生成周期、所述第I时刻信息、数据有效期间和第2时刻信息, 所述控制器在转变到了所述第2状态时, 基于所述管理表,取得当前时刻为所述第I时刻信息以上的一个或多个传感器的数据,对取得了所述数据的传感器的第I时刻信息进行更新, 更新各传感器的所述第2时刻信息,基于更新后的所述管理表来确定所述第I传感器,将所述第I传感器的第I时刻信息存储到所述第4寄存器,转变到所述第I状态。16.根据权利要求11所述的传感器数据收集装置,其中, 所述第I电路具备:具有第2寄存器和第3寄存器的中断控制器;具有第4寄存器的计时器;以及电源管理单元, 所述第2寄存器存储表示有无来自所述多个传感器的中断请求的信息,所述第3寄存器通过所述控制器存储识别所述第I传感器的信息,所述第4寄存器存储所述第I传感器的所述第I时刻信息, 所述中断控制器基于所述第2寄存器和所述第3寄存器,在从所述第I传感器产生中断请求时向所述电源管理单元产生第I信号, 所述计时器在当前时刻与所述第4寄存器的寄存器值一致时,向所述电源管理单元产生第2信号, 所述电源管理单元以所述第I信号或所述第2信号为触发,使所述控制器转变到所述第2状态。17.根据权利要求16所述的传感器数据收集装置,其中, 所述控制器具有管理表,所述管理表管理各传感器的数据生成周期、所述第I时刻信息、数据有效期间、第2时刻信息和表示有无中断请求功能的触发类型, 所述控制器在转变到了所述第2状态时, 基于所述第2寄存器的寄存器值,取得存在中断请求的一个或多个第2传感器的数据,将所述第2寄存器清零,更新所述第2传感器的所述第I时刻信息, 取得所述触发类型为不具有中断请求功能的传感器中的当前时刻为所述第I时刻信息以上的一个或多个第3传感器的数据,更新所述第3传感器的所述第I时刻信息, 更新各传感器的所述第2时刻信息,基于更新后的所述管理表来确定所述第I传感器,根据第I传感器的触发类型来更新所述第3寄存器和所述第4寄存器的任一方, 然后转变到所述第I状态。18.根据权利要求13所述的传感器数据收集装置,其中, 所述各传感器的数据生成周期,被设定为减去第I余裕值而得到的值, 所述控制器在转变到了所述第2状态时, 基于所述第2寄存器的寄存器值,取得存在中断请求的一个或多个传感器的数据,将所述第2寄存器清零, 产生了所述中断请求的传感器中的通过所述第3寄存器识别为所述第I传感器的传感器,基于当前时刻和数据生成周期来更新所述第I时刻信息, 产生了所述中断请求的传感器中的未通过所述第3寄存器识别为所述第I传感器的传感器,基于上次的第I时刻信息和数据生成周期来更新所述第I时刻信息, 对各传感器的更新后的第I时刻信息分别加上各传感器的数据有效期间来算出各传感器的第2时刻信息,确定具有比从各传感器的第2时刻信息中的最小的第2时刻信息减去第2余裕值而得到的值小的一个或多个第I时刻信息中的最大的第I时刻信息的第4传感器,将识别所述第4传感器的信息设定到所述第3寄存器。19.根据权利要求17所述的传感器数据收集装置,其中, 所述控制器使用所述第I时刻信息,向用户提示各传感器的数据生成时刻。20.根据权利要求17所述的传感器数据收集装置,其中, 所述控制器具有包含多个阶段的睡眠状态的所述第I状态, 所述控制器计算从本次启动时到下次启动时为止的第I时间间隔,根据计算出的第I时间间隔来转变到所述多个阶段的睡眠状态的任一个的所述第I状态。
【文档编号】G06F1/32GK106055068SQ201610110147
【公开日】2016年10月26日
【申请日】2016年2月29日 公开号201610110147.5, CN 106055068 A, CN 106055068A, CN 201610110147, CN-A-106055068, CN106055068 A, CN106055068A, CN201610110147, CN201610110147.5
【发明人】武田瑛, 小高刚, 横泽彰
【申请人】株式会社东芝
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1