傳感器數據收集裝置的制造方法
【專利摘要】傳感器數據收集裝置具有第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
【發明人】武田瑛, 小高剛, 橫澤彰
【申請人】株式會社東芝