JP4671796B2 - Microcomputer timer adjustment mechanism - Google Patents
Microcomputer timer adjustment mechanism Download PDFInfo
- Publication number
- JP4671796B2 JP4671796B2 JP2005216980A JP2005216980A JP4671796B2 JP 4671796 B2 JP4671796 B2 JP 4671796B2 JP 2005216980 A JP2005216980 A JP 2005216980A JP 2005216980 A JP2005216980 A JP 2005216980A JP 4671796 B2 JP4671796 B2 JP 4671796B2
- Authority
- JP
- Japan
- Prior art keywords
- timer
- value
- virtual
- clock
- actual
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Executing Machine-Instructions (AREA)
Description
本発明はマイクロコンピュータ、特にタイマによるタイマ値を使用したアプリケーション(プログラム)処理を行うマイクロコンピュータにおけるタイマ調整機構に関する。 The present invention relates to a timer adjustment mechanism in a microcomputer, in particular, a microcomputer that performs application (program) processing using a timer value by a timer.
図8は一般的なマイクロコンピュータの一構成例を示す図であり、例えばECU(Electronic Control Unit)に塔載された場合について示す。本図において参照番号1はマイクロコンピュータ(以下、「マイコン」とも称す)を示し、ECU7に塔載されて該ECU全体を制御する。このマイコン1は大別して、上記のアプリケーション処理を実行する処理部2と、IOリソースをなすリアルタイムパルスユニット3から構成される。 FIG. 8 is a diagram illustrating an example of a configuration of a general microcomputer. For example, a case where the microcomputer is mounted on an ECU (Electronic Control Unit) is illustrated. In the figure, reference numeral 1 indicates a microcomputer (hereinafter also referred to as “microcomputer”), which is mounted on the ECU 7 to control the entire ECU. The microcomputer 1 is roughly divided into a processing unit 2 that executes the application process and a real-time pulse unit 3 that forms an IO resource.
上記処理部2は周知の構成であり、CPU11と、上記のプログラムを格納するROM12と、入出力データを一時的に記憶するRAM13とからなる。一方リアルタイムパルスユニット3は、フリーラン(Free Run)のタイマ15と、パルスの有効エッジ入力時におけるタイマ値をラッチし例えばパルス周期の演算を行うキャプチャ機能部16と、上記タイマ値を用いてパルス出力のタイミングを予約時刻として指定するといったパルス出力処理を行うコンペア機能部17等と、IOレジスタ18とからなる。
The processing unit 2 has a well-known configuration, and includes a
これらのキャプチャ機能部16およびコンペア機能部17は共にタイマ15のタイマ値に従って動作して、当該パルス入力をIOドライバ5より受けまた当該パルス出力をIOドライバ6より送出する。なお上記タイマ値を設定するそのタイマ15は外部発振子4により駆動される。
Both the
ここで処理部2に着目すると、この処理部2によるアプリケーション処理(パルス入力処理/パルス出力処理)では、上記タイマ15をベースにしたタイマ基準クロックによって時刻演算等が行われるが、この場合、そのタイマ基準クロックは予め定めた一定のクロックであることを前提としている。例えば、タイマ15のLSB(Least Significant Bit)が1μsの一定値であることを前提としている。
Here, when attention is paid to the processing unit 2, in the application processing (pulse input processing / pulse output processing) by the processing unit 2, time calculation or the like is performed by a timer reference clock based on the
なお本発明に関連する公知技術としては、下記の〔特許文献1および2〕がある。特許文献1は、内蔵するタイマ本数以上のタイマ出力処理を可能とし、タイマ出力機能を自在かつ広範に利用できるようにするとともに、全体を安価な構成とすることができる制御用処理装置、を開示しており、また特許文献2は、クロック周波数の変更に伴ってその都度適切なソフトウェアタイマ値に設定することができるインテリジェントタイマ、を開示している。 In addition, as a well-known technique relevant to this invention, there exist the following [patent documents 1 and 2]. Patent Document 1 discloses a control processing device that enables timer output processing of the number of built-in timers or more, allows the timer output function to be used freely and widely, and can be configured inexpensively as a whole. In addition, Patent Document 2 discloses an intelligent timer that can be set to an appropriate software timer value each time the clock frequency is changed.
前述したように、処理部2におけるアプリケーション処理では、予め定めた一定のタイマ基準クロック(例えば、タイマLSB=1μs)で処理が行われることが前提となっている。したがって、マイコン1にとってタイマ基準クロックが変わることは通常想定していない。ところが、そのタイマ基準クロックを変えなければならないニーズがしばしば生じている。 As described above, the application process in the processing unit 2 is premised on that the process is performed with a predetermined constant timer reference clock (for example, timer LSB = 1 μs). Therefore, it is not usually assumed for the microcomputer 1 that the timer reference clock changes. However, there is often a need to change the timer reference clock.
そのニーズの第1例は、上記外部発振子4の周波数アップである。これはマイコン1の処理スピードの向上が求められる場合等のニーズに起因する。またそのニーズの第2例は、マイコンの変更があったときにこれに伴いタイマ機能部の変更をしたい、というニーズである。 The first example of the need is to increase the frequency of the external oscillator 4. This is due to needs such as when improvement in processing speed of the microcomputer 1 is required. The second example of the need is a need to change the timer function unit when the microcomputer is changed.
かかるニーズによって、アプリケーション処理の中で使用される、時刻演算のもととなるタイマ15のLSBが変わると、アプリケーションに係るソフトウェアの中で多岐に渡るロジック、特に時刻演算等のためのタイマ値使用箇所におけるロジックを全て変更することが必要となり、そのロジック変更量、すなわちソフト修正量は膨大なものになる。このために大規模なロジック変換作業が必要となる、といった問題が生じる。一例を挙げると、タイマ基準クロックのLSBが1/2(例えば0.5μs)になったとすると、算出結果のパルス周期を2倍に換算するといったロジック変換処理が必要となる。
When the LSB of the
このようにタイマ基準クロックを変更することは容易ではなく、例えば次のような制約(i)および(ii)が課せられる。 Thus, it is not easy to change the timer reference clock, and the following restrictions (i) and (ii) are imposed, for example.
(i)クロック周波数アップによるマイコン処理能力の向上が要求される場合には、タイマ基準クロックを変更することなく実現可能なクロック変更に限定すること、(ii)新たなマイコンの選定に際しては、当該アプリケーション処理に適応可能なタイマ基準クロックを有するマイコンに限定すること、である。 (I) When improvement of the microcomputer processing capability by increasing the clock frequency is required, it is limited to the clock change that can be realized without changing the timer reference clock. (Ii) When selecting a new microcomputer, It is limited to a microcomputer having a timer reference clock applicable to application processing.
したがって本発明は、上記の問題点に鑑み、タイマ値を使用したアプリケーション処理を行うマイコンにおいて、そのタイマ値の元になるタイマ基準クロックを変えなければならないことになった場合であっても、そのマイコン内で実行するアプリケーション処理のロジックには一切変更を加えることなしに、そのタイマ基準クロックを変更することのできるタイマ調整機構を提供することを目的とするものである。 Therefore, in view of the above problems, the present invention provides a microcomputer that performs application processing using a timer value, even when the timer reference clock that is the basis of the timer value has to be changed. An object of the present invention is to provide a timer adjustment mechanism capable of changing the timer reference clock without changing any application processing logic executed in the microcomputer.
別言すれば、上記のタイマ基準クロックの変更をソフトウェア的に吸収する機構を備えたマイコンを提供することを目的とするものである。 In other words, an object of the present invention is to provide a microcomputer having a mechanism that absorbs the change of the timer reference clock in software.
図1は本発明に係るタイマ調整機構を図解的に示す図である。なお全図を通じて同様の構成要素には同一の参照番号または記号を付して示す。 FIG. 1 is a diagram schematically showing a timer adjustment mechanism according to the present invention. Throughout the drawings, similar components are denoted by the same reference numerals or symbols.
本図において、上段はクロックソース「変更前」のマイコン1を概略的に表しており、図8の処理部2におけるソフトウェア処理を「アプリケーションAP」として表し、またこのアプリケーションを実行する際の基準クロックを生成するのが実タイマtimである。これは、図8のフリーランタイマ15の出力を受けてIOレジスタ18内に形成される。
In the figure, the upper part schematically represents the microcomputer 1 with the clock source “before change”, the software processing in the processing unit 2 in FIG. 8 is represented as “application AP”, and the reference clock for executing this application Is generated by the real timer tim. This is formed in the
ここで上述のクロックソースの変更があったとすると、本図下段のクロックソース「変更後」のマイコン1のように構成が変わる。この下段の構成がすなわち本発明による構成であり、その特徴的な構成は、タイマ調整機構20にある。このタイマ調整機構20は、実タイマtimにより予め定めたクロック(例えば、LSB=1μs)で実行すべきアプリケーション(AP)処理を、そのクロックとは異なる実タイマTIMのクロック(例えば、LSB=0.8μs)で実行するようにした機構であり、この機構20は、実タイマTIMを、所定のクロック変換係数αに比例させた仮想タイマTIMvに変換し、上記のアプリケーション処理を、その変換された仮想タイマTIMvのクロックにより実行させることを特徴とするものである。かくして、実タイマtimのもとで実行しなければならないアプリケーションAPを、このアプリケーションAPに一切ロジック変更を加えることなくそのまま、クロックソース変更後の実タイマTIMのもとで実行可能とし、ここに導入されるものは比較的単純な上記のタイマ調整機構20に過ぎない。
If the clock source is changed as described above, the configuration changes like the microcomputer 1 of the clock source “after change” in the lower part of FIG. This lower configuration is the configuration according to the present invention, and the characteristic configuration is in the
さらに具体的には、タイマ調整機構20により、実タイマTIMのタイマ出力には、上記クロック変換係数αをパラメータとした「仮想タイマ生成処理」VIR(virtual)が行われる。そしてこの処理VIRによって仮想タイマTIMvが形成される。この仮想タイマTIMvは、上記処理によって得た仮想タイマ値を例えば図8のRAM13に書き込んでいくことにより実現できる。ここに、クロックソース変更前の実タイマtimと全く同等のクロックソースタイマが、この仮想タイマTIMvによって実現される。つまり図1中のプロセスPによって、マイコン1においてクロックソース変更によって生じる影響が吸収されることになる。そうすると、アプリケーションAPは、図中の「切替え処理」SWを介して実タイマ(TIM)アクセスから仮想タイマ(TIMv)アクセスへ切替えて、新たなタイマソースすなわち仮想タイマTIMvと連携可能となる。
More specifically, the
本発明によれば、タイマ調整機構20を導入するのみで、例えばマイコン1の処理スピード向上のために周波数アップしたタイマに変更したとしても、該マイコン1が元々実行していたアプリケーションには一切ロジック変更を加えることなくそのまま使用し続けることができ、既述した従前の制約(i)および(ii)を全く気にすることなく、クロックソースの変更をいつでも自由に行うことができる。
According to the present invention, even if the timer is changed to a timer whose frequency is increased in order to improve the processing speed of the microcomputer 1 only by introducing the
図2は本発明に基づくタイマ調整機構20の調整処理を分かりやすくアナログ的に表すタイミング図である。本図において、縦軸はタイマ値、横軸は時間である。このタイマ値は時間の経過と共に鋸歯状波のように繰り返し変化する。図中、実線で表す鋸歯状波の波形Rは、実タイマ(図1のTIM)の動きを表しており、一方、点線で表す鋸歯状波の波形Vは、仮想タイマ(図1のTIMv)の動きを表している。なお、図8において説明したパルス入力処理(キャプチャ)およびパルス出力処理(コンペア)は、それぞれ図2のパルスCAPTおよびCOMPとして示し(上向き矢印は前述の有効エッジを表す)。波形Rとの交点がそれぞれキャプチャ時刻(参照)およびコンペア時刻(設定)を特定する。なお、実タイマ(R)について示すが、仮想タイマ(V)についても全く同様である。 本発明のタイマ調整機構20は、大別して2つの処理を行う。その1つは「定期タイミング処理」であり、もう1つは「アプリケーションからのアクセス処理」である。図2において、その「定期タイミング処理」の発生は四角で囲んだ“A”で示し、「アプリケーションからのアクセス処理」の発生は四角で囲んだ“B”で示す。なお後者の「アプリケーションからのアクセス処理」Bはさらに2つの処理B1およびB2を含む。“B1”は前述したキャプチャ処理(時刻参照の読出し処理)であり、“B2”は前述したコンペア処理(時刻設定の書込み処理)である。ここで本発明における主要な基準動作(“A”、“B1”および“B2”)を下記〔1〕〜〔8〕に列記する。
FIG. 2 is a timing diagram showing the adjustment process of the
・基本動作“A”に関して
〔1〕実タイマTIMと仮想タイマTIMvの各タイマ値が共に、タイマ零値(図2左端下の“0”)と一定のタイマ上限値(図2左端上の0xFFFFFF)との間をそれぞれの勾配をもって増大し、そのタイマ上限値に到達すると再びタイマ零値(“0”)に戻るようなタイマ動作を繰り返すとき、定期タイミング“A”にて周期的に読み取った実タイマ(R)のタイマ値を実タイマ基準値Tbaserとし、この実タイマ基準値Tbaserとクロック変換係数αとをもとに仮想タイマ基準値Tbasevを算出しかつ更新していくことにより、仮想タイマTIMvを形成するようにする。
-Regarding the basic operation "A" [1] Each timer value of the real timer TIM and the virtual timer TIMv is both a timer zero value ("0" at the lower left end of FIG. 2) and a constant timer upper limit value (0xFFFFFF at the upper left end of FIG. When the timer operation is repeated so as to return to the timer zero value ("0") when the timer upper limit value is reached, it is periodically read at the regular timing "A". By setting the timer value of the real timer (R) as the real timer reference value Tbase and calculating and updating the virtual timer reference value Tbasev based on the real timer reference value Tbase and the clock conversion coefficient α, the virtual timer A TIMv is formed.
〔2〕前回および今回それぞれ読み取った各実タイマ基準値の差分(Tbaser(今回)−Tbaser(前回))にクロック変換係数αを乗じて得た値に、保持した前回の仮想タイマ基準値Tbasev(前回)を加算することにより、今回の仮想タイマ基準値Tbasevを算出する。 [2] The previous virtual timer reference value Tbasev (the value obtained by multiplying the difference (Tbaser (current) -Tbaseer (previous)) by the clock conversion coefficient α between the actual timer reference values read each time the previous time and the current time. By adding (previous), the current virtual timer reference value Tbasev is calculated.
〔3〕実タイマTIMおよび仮想タイマTIMvの起動に際し、これら実タイマと仮想タイマの各タイマ値を同一のタイマ値に初期設定する(図2左端下の「初期設定」参照)。 [3] When starting the real timer TIM and the virtual timer TIMv, the timer values of the real timer and the virtual timer are initially set to the same timer value (see “Initial setting” at the lower left of FIG. 2).
〔4〕定期タイミングAの周期は、その1周期(A−A)内に、上述のタイマ上限値に到達するタイマオーバーフロー“OF”が2回以上発生しないような長さに設定する。 [4] The period of the periodic timing A is set to such a length that the timer overflow “OF” that reaches the above-mentioned timer upper limit value does not occur twice or more within the period (AA).
・基本動作“B1”に関して
〔5〕アプリケーション処理においてキャプチャ時刻の参照要求が発生したとすると、
その参照時点t1に直近の仮想タイマ(v)の更新タイミングt0を基点としてその基点での実タイマ値である実タイマ基準値Tbaserと、その参照時点t1において取得した現在の実タイマ値Trealとの間の差分(Treal−Tbaser)である実タイマ相対値ΔTrealと、クロック変換係数αとに基づいて、その参照要求にかかる仮想タイマ値Tvirを算出しその仮想タイマ値Tvirを上記のアプリケーション処理に返すようにする。
-Regarding basic operation "B1" [5] If a capture time reference request is generated in application processing,
Based on the update timing t0 of the virtual timer (v) most recently at the reference time t1, the actual timer reference value Tbaser, which is the actual timer value at the reference point, and the current actual timer value Treal acquired at the reference time t1 Based on the actual timer relative value ΔTreal which is the difference between the two (Treal-Tbase) and the clock conversion coefficient α, the virtual timer value Tvir according to the reference request is calculated, and the virtual timer value Tvir is returned to the application process. Like that.
〔6〕上記の実タイマ相対値ΔTrealにクロック変換係数αを乗じて仮想タイマ相対値ΔTvirを得、この仮想タイマ相対値ΔTvirに上記の仮想タイマ基準値Tbasevを加算して上記参照時点t1での仮想タイマ値Tvirを得る。 [6] The virtual timer relative value ΔTvir is obtained by multiplying the real timer relative value ΔTreal by the clock conversion coefficient α, and the virtual timer relative value ΔTvir is added to the virtual timer reference value Tbasev to obtain the reference time t1. A virtual timer value Tvir is obtained.
・基本動作“B2”に関して
〔7〕アプリケーション処理においてコンペア時刻の設定要求が発生したとすると、
その設定要求時点t1に直近の仮想タイマ(V)の更新タイミングt0を基点としてその基点での仮想タイマ値である仮想タイマ基準値Tbasevと、その設定要求時点t1における仮想タイマ値Tvirとの間の差分(Tvir−Tbasev)である仮想タイマ相対値ΔTvirと、クロック変換係数αの逆数1/αとに基づいて、上記の設定要求にかかる実タイマ値Trealを算出しその実タイマ値Trealを上記のアプリケーション処理に返すようにする。
-Regarding basic operation "B2" [7] If a request to set a compare time is generated in application processing,
Between a virtual timer reference value Tbasev that is a virtual timer value at the base point and the virtual timer value Tvir at the setting request time point t1 with the update timing t0 of the virtual timer (V) most recently at the setting request time point t1 as a base point Based on the virtual timer relative value ΔTvir which is the difference (Tvir−Tbasev) and the reciprocal 1 / α of the clock conversion coefficient α, the actual timer value Treal related to the setting request is calculated, and the actual timer value Treal is calculated as the above application. Return it to the process.
〔8〕上記の仮想タイマ相対値ΔTvirにクロック変換係数αの逆数1/αを乗じて実タイマ相対値ΔTrealを得、この実タイマ相対値ΔTrealに上記の実タイマ基準値Tbaserを加算して上記設定要求に係る実タイマ値Trealを得る。 [8] The virtual timer relative value ΔTvir is multiplied by the inverse 1 / α of the clock conversion coefficient α to obtain the actual timer relative value ΔTreal, and the actual timer reference value Tbase is added to the actual timer relative value ΔTreal. An actual timer value Treal related to the setting request is obtained.
上記の基本動作の主要な項目について数式を用いて分かりやすく整理すると次のとおりである。 The main items of the above basic operation are summarized as follows by using mathematical formulas.
(A)定期(更新)タイミング処理
1)各定期タイミングAにおいて実タイマTIMのタイマ値(実タイマ値)を読み出し、これを実タイマ基準値として記憶する。図2の“Tbaser”がこの実タイマ基準値である。
(A) Periodic (update) timing processing 1) At each periodic timing A, the timer value (actual timer value) of the actual timer TIM is read and stored as an actual timer reference value. “Tbaser” in FIG. 2 is the actual timer reference value.
2)その実タイマ基準値Tbaserから、対応する仮想タイマTIMvの基準値を、仮想タイマ基準値Tbasevとして生成する。図2の“Tbasev”がこの仮想タイマ基準値である。 2) A reference value of the corresponding virtual timer TIMv is generated as a virtual timer reference value Tbasev from the actual timer reference value Tbase. “Tbasev” in FIG. 2 is the virtual timer reference value.
この定期タイミング処理の初期設定においては(図2の「初期設定」参照)、
Tbasev=Tbaser
とする。
In the initial setting of this periodic timing process (see “Initial setting” in FIG. 2),
Tbasev = Tbaser
And
そしてその定期タイミング処理の通常時においては、各隣接2定期タイミング間(A−A)での実タイマ基準値Tbaserの差分と、クロック変換係数αと、前回の仮想タイマ基準値とにより、今回の仮想タイマ基準値Tbasevを算出しながら各定期タイミング毎に更新していく。したがってこの算出されるTbasevは下記式により表される。 At the normal time of the periodic timing process, the current timer reference value Tbase difference between each adjacent two periodic timings (AA), the clock conversion coefficient α, and the previous virtual timer reference value The virtual timer reference value Tbasev is calculated and updated at each regular timing. Therefore, this calculated Tbasev is expressed by the following equation.
Tbasev=Tbasev(前回)+
(Tbaser(今回)−Tbaser(前回))×α
(B)アプリケーション(AP)からのアクセス処理
B1)参照時(キャプチャ/読出し処理)
実タイマ基準値Tbaserおよび仮想タイマ基準値Tbasevと、現在の実タイマ値(図2のTreal)とから、現在の仮想のタイマ値(図2のTvir)を算出する。この算出は下記式により表される。
Tbasev = Tbasev (previous) +
(Tbaser (current) -Tbaser (previous)) × α
(B) Access processing from application (AP) B1) At reference (capture / read processing)
The current virtual timer value (Tvir in FIG. 2) is calculated from the actual timer reference value Tbaser, the virtual timer reference value Tbasev, and the current actual timer value (Treal in FIG. 2). This calculation is represented by the following formula.
Tvir=Tbasev+(Treal−Tbaser)×α
=Tbasev+ΔTreal×α
=Tbasev+ΔTvir
ただし、ΔTrealは前述の実タイマ相対値、ΔTvirは前述の仮想タイマ相対値である。ここに参照時における参照要求に係る現在の仮想タイマ値Tvirが得られる。
Tvir = Tbasev + (Treal−Tbase) × α
= Tbasev + ΔTreal × α
= Tbasev + ΔTvir
However, ΔTreal is the aforementioned real timer relative value, and ΔTvir is the aforementioned virtual timer relative value. Here, the current virtual timer value Tvir related to the reference request at the time of reference is obtained.
B2)時刻設定時(コンペア/書込み処理)
実タイマ基準値Tbaserおよび仮想タイマ基準値Tbasevと、アプリケーションAPが算出した時刻設定値、すなわち仮想タイマ値Tvirとから、設定すべき実タイマ値Trealを算出する。この算出は下記式により表される。
B2) When setting the time (compare / write processing)
The actual timer value Treal to be set is calculated from the actual timer reference value Tbase and the virtual timer reference value Tbasev and the time setting value calculated by the application AP, that is, the virtual timer value Tvir. This calculation is represented by the following formula.
Treal=Tbaser+(Tvir−Tbasev)×1/α
=Tbaser+ΔTvir×1/α
=Tbaser+ΔTreal
ここに時刻設定時における実タイマ値Trealが得られる。
Treal = Tbase + (Tvir−Tbasev) × 1 / α
= Tbaser + ΔTvir × 1 / α
= Tbaser + ΔTreal
Here, the actual timer value Treal at the time setting time is obtained.
次に上記の各基本動作を実行するフローチャートの一例について説明する。 Next, an example of a flowchart for executing the above basic operations will be described.
図3は初期化処理動作を表すフローチャートである。本図において、
ステップS11:実タイマTIMを起動し、
ステップS12:その起動時の実タイマTIMのタイマ値を読み出す。
FIG. 3 is a flowchart showing the initialization processing operation. In this figure,
Step S11: Start the real timer TIM,
Step S12: Read the timer value of the real timer TIM at the time of activation.
ステップS13:その読出しタイマ値を、実タイマ基準値Tbaserの初期値として設定すると共に、
ステップS14:同じ読出しタイマ値を、仮想タイマ基準値Tbasevの初期値として設定する。
Step S13: The read timer value is set as the initial value of the actual timer reference value Tbase,
Step S14: The same read timer value is set as the initial value of the virtual timer reference value Tbasev.
なお続くステップS15およびS16は、次に述べる定時割込み処理(図4)における「初期化処理」ステップである。この定時割込み処理はマイコンにおいて一般的な割込み処理であり、例えば1ms毎に定時割込みが行われる。この場合、タイマのLSBが前述のように1μsであったとすると、本来はこの1μsをもとにその1msのインターバル時間が定められる。しかしこの1μsが前述の例のように0.8μsに短縮されると(周波数アップ)、その1msを維持できなくなりずれてしまう。 The subsequent steps S15 and S16 are “initialization processing” steps in the scheduled interrupt processing (FIG. 4) described below. This scheduled interrupt process is a general interrupt process in a microcomputer. For example, a scheduled interrupt is performed every 1 ms. In this case, if the LSB of the timer is 1 μs as described above, the interval time of 1 ms is originally determined based on this 1 μs. However, if this 1 μs is shortened to 0.8 μs as in the above example (frequency increase), the 1 ms cannot be maintained and will shift.
そこで本発明は前述した基本動作“B2”(コンペア処理)を流用し、このコンペア処理がその1msの設定を代替するようにする。図3に戻ると、
ステップS15:コンペア処理(B2)を起動し、
ステップS16:上記1ms(インターバル時間Tint)を前述のクロック変換係数倍した値(Tint×α)をコンペア処理の初期値としてセットする。
Therefore, the present invention diverts the basic operation “B2” (compare process) described above, and this compare process replaces the setting of 1 ms. Returning to FIG.
Step S15: The compare process (B2) is activated,
Step S16: A value (Tint × α) obtained by multiplying the above 1 ms (interval time Tint) by the above-mentioned clock conversion coefficient is set as an initial value of the comparison process.
以上を要約すると、アプリケーション(AP)処理の1つとして含まれる既存のタイマ割込み処理における一定インターバル(Tint)の定時割込みを行う場合、上記基本動作B1、すなわちコンペア時刻の設定要求時に実行するコンペア処理を起動するときに当該コンペア初期値として、クロック変換係数αを乗じた一定インターバルの時間を設定し(Tint×α)、そのタイマ割込み処理の初期化を行うようにする。そしてこのあとにタイマ割込み処理の通常処理が開始する。 To summarize the above, when performing a fixed interval (Tint) scheduled interrupt in the existing timer interrupt processing included as one of the application (AP) processing, the above-mentioned basic operation B1, that is, the compare processing executed at the time of setting the compare time Is set as the initial value of the comparison, a predetermined interval time multiplied by the clock conversion coefficient α is set (Tint × α), and the timer interrupt process is initialized. Thereafter, normal processing of timer interrupt processing starts.
図4は定時割込み処理とこれに連動する仮想タイマ基準値算出(上記基本動作“A”すなわち定期タイミング処理の通常処理)動作を表すフローチャートである。本図において、
ステップS21:定時割込み処理(Tint)を起動し、
ステップS22:上記基本動作“B2”に基づくコンペア機能により定時時刻(Tint×α)をセットする。
FIG. 4 is a flow chart showing the scheduled interrupt process and the virtual timer reference value calculation (the basic operation “A”, that is, the normal process of the periodic timing process) linked to this. In this figure,
Step S21: Start the scheduled interrupt process (Tint),
Step S22: The fixed time (Tint × α) is set by the compare function based on the basic operation “B2”.
ステップS23:上記のTint×αによるタイミングを分周し、実タイマ相当で例えば1secの定期タイミング処理(上記基本動作“A”)を実行し、その1secに達しないときはENDに至り、その1secに達する毎に次のステップS24に入る。 Step S23: Divide the timing by the above Tint × α and execute a periodic timing process (the basic operation “A”) of, for example, 1 sec corresponding to the real timer. When the 1 sec is not reached, END is reached, and 1 sec The next step S24 is entered each time.
ステップS24:本ステップでは、実タイマ基準値Tbaserおよび仮想タイマ基準値Tbasevの各前回値Tbasev_oおよびTbasev_oを保持し、
ステップS25:本ステップでは、今回のタイミングの実タイマ値Tbaser(今回)を読み出し、
ステップS26:本ステップでは、前述の算出式
Tbasev=Tbasev(前回)+
(Tbaser(今回)−Tbaser(前回))×α
により、仮想タイマ基準値Tbasevを算出し、かつ定期タイミング毎にこれを更新していく。
Step S24: In this step, the previous values Tbasev_o and Tbasev_o of the actual timer reference value Tbaser and the virtual timer reference value Tbasev are held,
Step S25: In this step, the actual timer value Tbase (current) at the current timing is read,
Step S26: In this step, the above-described calculation formula Tbasev = Tbasev (previous) +
(Tbaser (current) -Tbaser (previous)) × α
Thus, the virtual timer reference value Tbasev is calculated and updated at regular intervals.
上記のステップS16,S21およびS22により、タイマ割込み処理Tintにおける初期化後、クロック変換係数αを乗じた一定インターバル(Tint×α)毎に出力設定値を算出して通常処理を実行することになる。さらに上記のステップS23〜S26により、前回および今回それぞれ読み取った各実タイマ基準値の差分(Tbaser(今回)−Tbaser(前回))にクロック変換係数αを乗じて得た値に、保持した前回の仮想タイマ基準値Tbasev(前回)を加算することにより、今回の仮想タイマ基準値Tbasevを算出する。ここで上記ステップS23について考察すると、定期タイミング処理(“A”)におけるタイミング時間は、実タイマがオーバーフローしない程度に長い時間で十分である。なぜならそのタイミング時間を短くしても(高速の定期タイミングにしても)、タイマ値の精度はそれ程向上しないからである。このために、本ステップS23による「分周」を行うこととする。またこれによりソフトウェア処理の負荷を軽減することもできる。 After the initialization in the timer interrupt process Tint by the above steps S16, S21 and S22, the normal process is executed by calculating the output set value at every constant interval (Tint × α) multiplied by the clock conversion coefficient α. . Further, in the above steps S23 to S26, the value obtained by multiplying the difference (Tbaser (current) -Tbaseer (previous)) between the respective real timer reference values read the previous time and the current time by the clock conversion coefficient α is stored. The current virtual timer reference value Tbasev is calculated by adding the virtual timer reference value Tbasev (previous). Considering step S23 above, the timing time in the periodic timing process ("A") is sufficient to be long enough that the actual timer does not overflow. This is because even if the timing time is shortened (even if it is a high-speed regular timing), the accuracy of the timer value is not improved so much. For this purpose, “frequency division” in step S23 is performed. This also reduces the software processing load.
また上記の「オーバーフロー」について考察すると、前述したように定期タイミングAの1周期(A−A)内に、タイマ上限値に到達するタイマオーバーフロー“OF”(図2)が2回以上発生しないような長さに設定する。もしそのタイマオーバーフロー“OF”が該1周期内に2回以上発生したとすると、図4のステップS24〜S26の処理、とりわけTbaser(今回)とTbaser(前回)との差分を割り出す計算が困難になってしまうからである。 Further, considering the “overflow”, the timer overflow “OF” (FIG. 2) that reaches the timer upper limit value does not occur twice or more in one cycle (AA) of the periodic timing A as described above. Set to a reasonable length. If the timer overflow “OF” occurs two or more times within the one cycle, it becomes difficult to calculate the difference between Tbase (current) and Tbase (previous), especially the processing of steps S24 to S26 in FIG. Because it becomes.
以上のようにして「定期タイミング処理」“A”が実行され、その定期タイミングのもとで「アプリケーションからのアクセス処理」“B”が実行され、参照時の読出し処理(キャプチャ)“B1”と時刻設定処理(コンペア)“B2”とが行われる。 As described above, “periodic timing processing” “A” is executed, and “access processing from application” “B” is executed based on the periodic timing, and read processing (capture) “B1” at the time of reference is performed. Time setting processing (compare) “B2” is performed.
図5は参照時における読出し処理(キャプチャ)動作を表すフローチャートであり、
図6は時刻設定時における書込み処理(コンペア)動作を表すフローチャートである。
FIG. 5 is a flowchart showing a reading process (capture) operation at the time of reference.
FIG. 6 is a flowchart showing the write processing (compare) operation at the time setting.
まず図5を参照すると、
ステップS31:アプリケーション処理において、キャプチャ時刻の「参照要求」が発生したとすると、
ステップS32:現在の実タイマ値を取得してTrealとして記憶し、
ステップS33:上記実タイマ値Trealと実タイマ基準値Tbaserとの差分である実タイマ相対値ΔTrealを算出し、
ステップS34:算出したΔTrealをα(クロック変換係数)倍し、
ステップS35:そのΔTrealを仮想タイマ基準値Tbasevに加えて仮想タイマ値Tvirを得、
ステップS36:そのTvirを、参照要求元であるアプリケーションに、戻り値として返す。
First referring to FIG.
Step S31: Assume that a capture time “reference request” is generated in the application process.
Step S32: The current real timer value is acquired and stored as Treal,
Step S33: An actual timer relative value ΔTreal which is a difference between the actual timer value Treal and the actual timer reference value Tbase is calculated.
Step S34: The calculated ΔTreal is multiplied by α (clock conversion coefficient),
Step S35: The ΔTreal is added to the virtual timer reference value Tbasev to obtain a virtual timer value Tvir,
Step S36: The Tvir is returned as a return value to the reference request source application.
結局、上記一連のステップは次のとおりである。アプリケーション処理においてキャプチャ時刻の参照要求が発生したとすると、その参照時点t1に直近の仮想タイマ(v)の更新タイミングt0を基点としてその基点での実タイマ値である実タイマ基準値Tbaserと、その参照時点t1において取得した現在の実タイマ値Trealとの間の差分(Treal−Tbaser)である実タイマ相対値ΔTrealと、クロック変換係数αとに基づいて、その参照要求にかかる仮想タイマ値Tvirを算出しその仮想タイマ値Tvirを上記のアプリケーション処理に返す。この場合、上記の実タイマ相対値ΔTrealにクロック変換係数αを乗じて仮想タイマ相対値ΔTvirを得、この仮想タイマ相対値ΔTvirに上記の仮想タイマ基準値Tbasevを加算して上記参照時点t1での仮想タイマ値Tvirを得る。 After all, the series of steps is as follows. Assuming that a capture time reference request is generated in the application process, the actual timer reference value Tbase, which is the actual timer value at the base point, with the update timing t0 of the virtual timer (v) closest to the reference time t1 as the base point, Based on the actual timer relative value ΔTreal which is a difference (Treal−Tbase) from the current actual timer value Treal acquired at the reference time t1, and the clock conversion coefficient α, the virtual timer value Tvir related to the reference request is calculated. The calculated virtual timer value Tvir is returned to the application process. In this case, the virtual timer relative value ΔTvir is obtained by multiplying the real timer relative value ΔTreal by the clock conversion coefficient α, and the virtual timer reference value Tbasev is added to the virtual timer relative value ΔTvir to obtain the reference time t1. A virtual timer value Tvir is obtained.
次に図6を参照すると、
ステップS41:アプリケーション処理において、設定値Tvirをパラメータとして「時刻設定要求」が発生したとすると、
ステップS42:そのTvirと仮想タイマ基準値Tbasevとの差分を算出して仮想タイマ相対値ΔTvirを得、
ステップS43:そのΔTvirをα(クロック変換係数)分の1倍して(1/α)、実タイマ相対値ΔTrealを得、
ステップS44:そのΔTrealを実タイマ基準値Tbaserに加えて実タイマ値Trealを得、
ステップS45:そのTrealをIOレジスタ(図1)へ設定して、
ステップS46:そのTrealを時刻設定の要求元であるアプリケーションに返す。
Next, referring to FIG.
Step S41: In the application process, if a “time setting request” occurs with the setting value Tvir as a parameter,
Step S42: The difference between the Tvir and the virtual timer reference value Tbasev is calculated to obtain the virtual timer relative value ΔTvir,
Step S43: ΔTvir is multiplied by 1 / α (clock conversion coefficient) (1 / α) to obtain an actual timer relative value ΔTreal,
Step S44: The ΔTreal is added to the actual timer reference value Tbase to obtain the actual timer value Treal,
Step S45: Set the Treal in the IO register (FIG. 1),
Step S46: The Treal is returned to the application that is the time setting request source.
結局、上記一連のステップは次のとおりである。アプリケーション処理においてコンペア時刻の設定要求が発生したとすると、その設定要求時点t1に直近の仮想タイマ(v)の更新タイミングt0を基点としてその基点での仮想タイマ値である仮想タイマ基準値Tbasevと、その設定要求時点t1における仮想タイマ値Tvirとの間の差分(Tvir−Tbasev)である仮想タイマ相対値ΔTvirと、クロック変換係数αの逆数1/αとに基づいて、上記の設定要求にかかる実タイマ値Trealを算出しその実タイマ値Trealを上記のアプリケーション処理に返す。この場合、上記の仮想タイマ相対値ΔTvirにクロック変換係数αの逆数1/αを乗じて実タイマ相対値ΔTrealを得、この実タイマ相対値ΔTrealに上記の実タイマ基準値Tbaserを加算して上記設定要求に係る実タイマ値Trealを得る。 After all, the series of steps is as follows. Assuming that a comparison time setting request is generated in the application process, a virtual timer reference value Tbasev that is a virtual timer value at the base point with the update timing t0 of the virtual timer (v) closest to the setting request time point t1 as a base point; Based on the virtual timer relative value ΔTvir which is a difference (Tvir−Tbasev) from the virtual timer value Tvir at the setting request time point t1, and the reciprocal 1 / α of the clock conversion coefficient α, The timer value Treal is calculated and the actual timer value Treal is returned to the application process. In this case, the virtual timer relative value ΔTvir is multiplied by the inverse 1 / α of the clock conversion coefficient α to obtain the actual timer relative value ΔTreal, and the actual timer reference value Tbase is added to the actual timer relative value ΔTreal. An actual timer value Treal related to the setting request is obtained.
以上、図3〜図6を参照して、初期化処理、定時割込み処理、読出し処理(キャプチャ)および書込み処理(コンペア)について説明したが、これらの処理のいずれにも必須のパラメータはクロック変換係数αである。そこで、新たなクロック周波数が設定されると、そのクロック変換係数αが上記の全ての処理に対して自動的に反映されるようにしておけば、都合がよい。 As described above, the initialization process, the scheduled interrupt process, the read process (capture), and the write process (compare) have been described with reference to FIGS. 3 to 6. The parameters essential for any of these processes are the clock conversion coefficient. α. Therefore, it is convenient if the new clock frequency is set so that the clock conversion coefficient α is automatically reflected in all the above processes.
すなわちクロック変換係数αは、実タイマTIMの実クロック周波数(Hz)と仮想タイマTIMvの仮想クロック周波数(Hz)とから、仮想クロック周波数/実クロック周波数にて定義されるが、この定義されたクロック変換係数αを所定の1箇所に保持しておく。そしてアプリケーション処理に含まれる上記の各種処理(図3〜図6)が、そのクロック変換係数αを、共通乗数として共通に使用できるようにする。 That is, the clock conversion coefficient α is defined by the virtual clock frequency / real clock frequency from the real clock frequency (Hz) of the real timer TIM and the virtual clock frequency (Hz) of the virtual timer TIMv. The conversion coefficient α is held in a predetermined place. The various processes included in the application process (FIGS. 3 to 6) can use the clock conversion coefficient α as a common multiplier.
また前述した算出式等において、浮動小数点演算の場合には問題とならないが、固定小数点演算の場合には小数点以下が切り捨てられてしまうため、その演算精度が低下することがある。そこでその演算精度を確保するために、一定の定数例えば「256」を乗算(8ビット左シフト)しておいて上述した算出式等の所要の演算を行い、その演算のあとで「256」で除算(8ビット右シフト)するといった算法をとるのが好ましい。 In the above-described calculation formulas and the like, there is no problem in the case of floating-point arithmetic, but in the case of fixed-point arithmetic, the decimal part is truncated, so that the arithmetic accuracy may be lowered. Therefore, in order to ensure the calculation accuracy, a predetermined constant such as “256” is multiplied (8-bit left shift), and the required calculation such as the above-described calculation formula is performed. It is preferable to use an algorithm such as division (8-bit right shift).
さらに上記図3〜図6のうち図4に再び着目すると、タイマ割込み処理における通常処理において、αの値によってTint×αの値が整数にならない場合があり、端数が生じてしまうことがある。かかる端数が定時割込み毎に発生しかつ累積していくとその累積誤差は許容し得ない程の大きさになり、結局、一定時間割込みを維持できなくなる。 3 again in FIG. 3 to FIG. 6, in the normal processing in the timer interrupt processing, the value of Tint × α may not be an integer depending on the value of α, and a fraction may be generated. If such fractions are generated and accumulated at every scheduled interrupt, the accumulated error becomes unacceptable, and eventually the interrupt cannot be maintained for a certain time.
そこで上記タイマ割込み処理における上記の通常処理において、上述のようにクロック変換係数αの値に起因して一定インターバルTint×αの出力設定値に毎回端数が生じるような場合には、その一定インターバルのn回分に当たる端数を累積し、(n+1)回目の出力設定値にその累積値を加算する。これにより、長期的に見れば所要の一定インターバル時間を常に維持することができる。 Therefore, in the above-described normal processing in the timer interrupt processing, when a fraction occurs every time in the output set value of the constant interval Tint × α due to the value of the clock conversion coefficient α as described above, The fraction corresponding to n times is accumulated, and the accumulated value is added to the (n + 1) th output setting value. This makes it possible to always maintain the required constant interval time in the long run.
図7は図4のステップS22におけるTint×αの端数処理を表す図である。本図において、第1回から第n回までの各演算において生じた端数は毎回切り捨てていく。nは例えばn=10である。そしてn回分累積した端数βを補正値として、(n+1)回目の演算値にまとめて加算する。これにより上述の累積誤差が定期的に解消される。 FIG. 7 is a diagram illustrating the fraction processing of Tint × α in step S22 of FIG. In this figure, the fraction generated in each calculation from the first time to the nth time is rounded down every time. n is, for example, n = 10. Then, the fraction β accumulated for n times is added to the (n + 1) th calculated value as a correction value. Thereby, the above-mentioned cumulative error is periodically eliminated.
また上記図3〜図6のうち図6に再び着目すると、その第1ステップS41に関し、コンペア時刻の設定処理の直前において仮想タイマの更新処理を行い、前述した基点を最新の更新タイミングに変更することが好ましい。このコンペア時刻の設定処理においては、その設定範囲に十分余裕をもたせ定期タイミングの1周期(図2のA−A)を最大限使えるようにするのが望ましい。 3 to 6 again, with respect to the first step S41, the virtual timer is updated immediately before the compare time setting process, and the above-mentioned base point is changed to the latest update timing. It is preferable. In this comparison time setting process, it is desirable that the setting range has a sufficient margin so that one period of the periodic timing (A-A in FIG. 2) can be used to the maximum.
そこでコンペア時刻設定の直前で実タイマ基準値Tbaserならびに仮想タイマ基準値Tbasevを改めて生成し直して、その1周期A−Aのほぼ全範囲で、コンペア時刻の設定を行うことができるようにする。 Therefore, the real timer reference value Tbaser and the virtual timer reference value Tbasev are generated again immediately before the compare time setting, so that the compare time can be set in almost the entire range of the one cycle AA.
さらにまた上記図3〜図6のうち再び図6に着目すると、その第2ステップS42に関し、コンペア時刻の設定において、仮想タイマTIMvに規定される最大設定可能範囲に対応する、実タイマTIMに規定される最大設定可能範囲を、クロック変換係数αの値に応じて変更させるのが好ましい。すなわち、クロック変換係数αを反映した「ガード」の設定である。 3 again in FIG. 3 to FIG. 6, regarding the second step S42, in the setting of the compare time, it is defined in the real timer TIM corresponding to the maximum settable range defined in the virtual timer TIMv. The maximum settable range to be set is preferably changed according to the value of the clock conversion coefficient α. That is, the “guard” setting reflects the clock conversion coefficient α.
アプリケーション処理では、直接使用する仮想タイマの値を基準として時刻の設定可能範囲が決まる。その最大設定可能範囲は、仮想タイマの1周期(A−A)先の時刻までである。しかし実タイマでの設定可能範囲は、クロック変換係数αの値に応じて変わるため、その実タイマ上での設定可能範囲に対するガードを新たに設定し直すこととする。 In application processing, the time setting range is determined based on the value of the virtual timer used directly. The maximum settable range is up to the time ahead of one cycle (AA) of the virtual timer. However, since the settable range in the real timer changes depending on the value of the clock conversion coefficient α, the guard for the settable range in the real timer is newly set.
上述のコンペア時刻の設定において、その設定時刻が上記の最大設定可能範囲を超えることがあり得るが、このようなときには、当該コンペア時刻設定処理を保留すると共に当該設定要求のみを記憶しておいて、次回の定期タイミングにおいて当該設定要求を再実行するようにすればよい。 In the above-described setting of the compare time, the set time may exceed the above maximum settable range. In such a case, the compare time setting process is suspended and only the setting request is stored. The setting request may be re-executed at the next periodic timing.
すなわちタイマ時刻値設定時、その設定時刻が設定可能範囲を超えるような場合、当該設定処理を一旦保留し、その設定要求のみを記憶しておく。そして次回の定時処理においてその保留の時間を設定時刻から差し引いた上で、その記憶していた設定要求を再実行することにより、設定可能範囲を超える値でも処理を可能にする。その再実行によってもまだ設定可能範囲を超えるような場合には、再度、実行を一旦保留し、次回の定時処理において、再々実行を行う。これを設定時刻が設定可能範囲内に入るまで繰り返す。 That is, when setting the timer time value, if the set time exceeds the settable range, the setting process is temporarily suspended and only the setting request is stored. Then, in the next scheduled processing, the hold time is subtracted from the set time, and the stored setting request is re-executed, thereby enabling processing even with a value exceeding the settable range. If the re-execution still exceeds the settable range, the execution is once again suspended and re-executed in the next scheduled processing. This is repeated until the set time falls within the settable range.
以上詳述したとおり、本発明によれば、タイマソースの変更があったとき、当該アプリケーションに一切変更を加えることなしに、そのタイマソースの変更による影響をソフト的に吸収することができる。 As described above in detail, according to the present invention, when the timer source is changed, the influence of the change of the timer source can be absorbed in software without changing the application at all.
1 マイクロコンピュータ(マイコン)
2 処理部
3 リアルタイムパルスユニット
4 外部発振子
11 CPU
12 ROM
13 RAM
15 タイマ
16 キャプチャ機能部
17 コンペア機能部
20 タイマ調整機構
1 Microcomputer (microcomputer)
2 Processing unit 3 Real-time pulse unit 4
12 ROM
13 RAM
15
Claims (10)
発振子から出力される第1クロックで駆動され、該第1のクロックとは異なる第2のクロックに基づいてアプリケーション処理を実行する処理部と、
前記第1のクロックに基づいてカウント処理を行うタイマであって、所定数までのカウント処理を繰り返し実行する実タイマと、を備え、
前記処理部は、第1の周期で起動される定期割込み処理にて、前記実タイマによるかウント値を所定のクロック変換係数に基づいて、前記第2のクロックに対応する仮想タイマのカウント値に変換する仮想タイマ変換処理を行い、
前記定期割込み処理にて行われる前記仮想タイマ変換処理は、前記実タイマのカウント値が前記所定数に達するオーバーフローが2回以上発生しない、前記第1の周期よりも長い第2の周期で実行されることを特徴とするマイクロコンピュータ。 A microcomputer that executes application processing configured to operate based on a predetermined clock,
A processing unit that is driven by a first clock output from the oscillator and that executes application processing based on a second clock different from the first clock;
A timer for performing count processing based on the first clock, and a real timer for repeatedly executing count processing up to a predetermined number,
In the periodic interrupt process activated in the first cycle, the processing unit converts the count value of the real timer to the count value of the virtual timer corresponding to the second clock based on a predetermined clock conversion coefficient. Perform virtual timer conversion processing to convert,
The virtual timer conversion process performed in the periodic interrupt process is executed in a second cycle longer than the first cycle in which an overflow in which the count value of the real timer reaches the predetermined number does not occur twice or more. A microcomputer characterized by that.
前記定期割込み処理が、前記第2のクロックから前記第1のクロックに対応するように変換された前記第1の周期に基づくタイマ値と、実タイマで該第1のクロックに基づいてカウントされたタイマ値とが一致するタイミングで、前記コンペア処理部によって起動されることを特徴とする請求項1又は2記載のマイクロコンピュータ。 Provided with a compare processing unit that activates a predetermined process when the set timer value matches the timer value counted by the real timer,
The periodic interrupt process is counted based on the first clock based on the first period converted from the second clock to correspond to the first clock, and a real timer. 3. The microcomputer according to claim 1, wherein the microcomputer is started at the timing when the timer value coincides with the timer value.
該参照時点に直近の前記仮想タイマの更新タイミングを基点としてその基点での前記実タイマ値である前記実タイマ基準値と、その参照時点において取得した該実タイマ値との間の差分である実タイマ相対値と、前記クロック変換係数とに基づいて、前記参照要求にかかる仮想タイマ値を算出しその仮想タイマ値を前記アプリケーション処理に返すキャプチャ処理部を備えることを特徴とする請求項5記載のマイクロコンピュータ。 When a capture time reference request occurs in the application process,
Based on the update timing of the virtual timer that is closest to the reference time, the actual timer reference value that is the actual timer value at the reference point and the actual timer value that is acquired at the reference time is an actual difference. 6. The capture processing unit according to claim 5, further comprising: a capture processing unit that calculates a virtual timer value related to the reference request based on a timer relative value and the clock conversion coefficient and returns the virtual timer value to the application process. Microcomputer.
該設定要求時点に直近の前記仮想タイマの更新タイミングを基点としてその基点での前記仮想タイマ値である前記仮想タイマ基準値と、その設定要求時点における前記仮想タイマ値との間の差分である仮想タイマ相対値と、前記クロック変換係数の逆数とに基づいて、前記設定要求にかかる実タイマ値を算出しその実タイマ値を前記アプリケーション処理に返すコンペア処理部を備えることを特徴とする請求項5記載のマイクロコンピュータ。 When a compare time setting request occurs in the application process,
A virtual value that is a difference between the virtual timer reference value that is the virtual timer value at the base point and the virtual timer value at the setting request time point, based on the update timing of the virtual timer that is closest to the setting request time point The comparison processing unit according to claim 5, further comprising: a compare processing unit that calculates an actual timer value for the setting request based on a timer relative value and an inverse number of the clock conversion coefficient and returns the actual timer value to the application process. Microcomputer.
前記タイマ調整機構は、前記実タイマを、所定のクロック変換係数に比例させた仮想タイマに変換し、前記アプリケーション処理を、変換された該仮想タイマのクロックにより実行させ、
前記実タイマと前記仮想タイマの各タイマ値が共に、タイマ零値と一定のタイマ上限値との間をそれぞれの勾配をもって増大し、該タイマ上限値に到達すると再び前記タイマ零値に戻るようなタイマ動作を繰り返すとき、定期タイミングにて周期的に読み取った前記実タイマのタイマ値を実タイマ基準値とし、該実タイマ基準値と前記クロック変換係数とをもとに仮想タイマ基準値を算出しかつ更新していくことにより、前記仮想タイマを形成し、
前記アプリケーション処理においてコンペア時刻の設定要求が発生したとき、
該設定要求時点に直近の前記仮想タイマの更新タイミングを基点としてその基点での前記仮想タイマ値である前記仮想タイマ基準値と、その設定要求時点における前記仮想タイマ値との間の差分である仮想タイマ相対値と、前記クロック変換係数の逆数とに基づいて、前記設定要求にかかる実タイマ値を算出しその実タイマ値を前記アプリケーション処理に返し、
前記コンペア時刻の設定処理の直前において前記仮想タイマの更新処理を行い、前記基点を最新の更新タイミングに変更することを特徴とするマイクロコンピュータのタイマ調整機構。 A timer adjustment mechanism in a microcomputer in which application processing to be executed with a predetermined clock is executed with a clock of an actual timer different from the clock,
The timer adjustment mechanism converts the real timer into a virtual timer proportional to a predetermined clock conversion coefficient, and causes the application process to be executed with the converted clock of the virtual timer,
Both the timer values of the real timer and the virtual timer increase with respective gradients between the timer zero value and a constant timer upper limit value, and return to the timer zero value again when the timer upper limit value is reached. When repeating the timer operation, the timer value of the actual timer read periodically at regular timing is used as the actual timer reference value, and the virtual timer reference value is calculated based on the actual timer reference value and the clock conversion coefficient. And by forming the virtual timer,
When a compare time setting request occurs in the application process,
A virtual value that is a difference between the virtual timer reference value that is the virtual timer value at the base point and the virtual timer value at the setting request time point, based on the update timing of the virtual timer that is closest to the setting request time point Based on the timer relative value and the reciprocal of the clock conversion coefficient, the actual timer value for the setting request is calculated and the actual timer value is returned to the application process,
A microcomputer timer adjustment mechanism, wherein the virtual timer is updated immediately before the compare time setting process, and the base point is changed to the latest update timing.
前記タイマ調整機構は、前記実タイマを、所定のクロック変換係数に比例させた仮想タイマに変換し、前記アプリケーション処理を、変換された該仮想タイマのクロックにより実行させ、
前記実タイマと前記仮想タイマの各タイマ値が共に、タイマ零値と一定のタイマ上限値との間をそれぞれの勾配をもって増大し、該タイマ上限値に到達すると再び前記タイマ零値に戻るようなタイマ動作を繰り返すとき、定期タイミングにて周期的に読み取った前記実タイマのタイマ値を実タイマ基準値とし、該実タイマ基準値と前記クロック変換係数とをもとに仮想タイマ基準値を算出しかつ更新していくことにより、前記仮想タイマを形成し、
前記アプリケーション処理においてコンペア時刻の設定要求が発生したとき、
該設定要求時点に直近の前記仮想タイマの更新タイミングを基点としてその基点での前記仮想タイマ値である前記仮想タイマ基準値と、その設定要求時点における前記仮想タイマ値との間の差分である仮想タイマ相対値と、前記クロック変換係数の逆数とに基づいて、前記設定要求にかかる実タイマ値を算出しその実タイマ値を前記アプリケーション処理に返し、
前記コンペア時刻の設定において、前記仮想タイマに規定される最大設定可能範囲に対応する、前記実タイマに規定される最大設定可能範囲を、前記クロック変換係数の値に応じて変更することを特徴とするマイクロコンピュータのタイマ調整機構。 A timer adjustment mechanism in a microcomputer in which application processing to be executed with a predetermined clock is executed with a clock of an actual timer different from the clock,
The timer adjustment mechanism converts the real timer into a virtual timer proportional to a predetermined clock conversion coefficient, and causes the application process to be executed with the converted clock of the virtual timer,
Both the timer values of the real timer and the virtual timer increase with respective gradients between the timer zero value and a constant timer upper limit value, and return to the timer zero value again when the timer upper limit value is reached. When repeating the timer operation, the timer value of the actual timer read periodically at regular timing is used as the actual timer reference value, and the virtual timer reference value is calculated based on the actual timer reference value and the clock conversion coefficient. And by forming the virtual timer,
When a compare time setting request occurs in the application process,
A virtual value that is a difference between the virtual timer reference value that is the virtual timer value at the base point and the virtual timer value at the setting request time point, based on the update timing of the virtual timer that is closest to the setting request time point Based on the timer relative value and the reciprocal of the clock conversion coefficient, the actual timer value for the setting request is calculated and the actual timer value is returned to the application process,
In the setting of the compare time, the maximum settable range defined in the real timer corresponding to the maximum settable range defined in the virtual timer is changed according to the value of the clock conversion coefficient. Microcomputer timer adjustment mechanism.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005216980A JP4671796B2 (en) | 2005-07-27 | 2005-07-27 | Microcomputer timer adjustment mechanism |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005216980A JP4671796B2 (en) | 2005-07-27 | 2005-07-27 | Microcomputer timer adjustment mechanism |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2007034672A JP2007034672A (en) | 2007-02-08 |
JP4671796B2 true JP4671796B2 (en) | 2011-04-20 |
Family
ID=37793856
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005216980A Expired - Fee Related JP4671796B2 (en) | 2005-07-27 | 2005-07-27 | Microcomputer timer adjustment mechanism |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4671796B2 (en) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8181175B1 (en) | 2008-01-28 | 2012-05-15 | Hewlett-Packard Development Company, L.P. | Accounting for resource usage time by a virtual machine |
US8607083B2 (en) * | 2010-04-01 | 2013-12-10 | Intel Corporation | Method and apparatus for interrupt power management |
JP2017033055A (en) * | 2015-07-29 | 2017-02-09 | 日立オートモティブシステムズ株式会社 | Electronic control device, actuator, and sensor |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004318878A (en) * | 2003-04-10 | 2004-11-11 | Internatl Business Mach Corp <Ibm> | Maintaining virtual real-time clock in computer system that is logically partitioned |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10268968A (en) * | 1997-03-25 | 1998-10-09 | Hitachi Ltd | Timer for computer |
-
2005
- 2005-07-27 JP JP2005216980A patent/JP4671796B2/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004318878A (en) * | 2003-04-10 | 2004-11-11 | Internatl Business Mach Corp <Ibm> | Maintaining virtual real-time clock in computer system that is logically partitioned |
Also Published As
Publication number | Publication date |
---|---|
JP2007034672A (en) | 2007-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4671796B2 (en) | Microcomputer timer adjustment mechanism | |
CN103135661B (en) | Time measurement device, microcontroller, program and Method Of Time Measurement | |
JP2000517075A (en) | How to keep accurate time in computer systems | |
KR20130039678A (en) | Simulation apparatus, simulation method, and recording medium | |
KR101561372B1 (en) | Pwm signal generating circuit, printer and pwm signal generating method | |
CN111983943A (en) | Servo motor control method, controller, device, equipment and storage medium thereof | |
US20060150135A1 (en) | Circuit information generating apparatus and circuit information generating method | |
JP7397686B2 (en) | time generator | |
JP2705783B2 (en) | Vehicle instrument | |
Stultz et al. | We are not getting any younger: A new approach to time and timers | |
JP3949995B2 (en) | Counter circuit | |
JP2008262340A (en) | Automatic code generating device for dual core | |
JP6500550B2 (en) | Timer correction device, timer correction method and timer correction program | |
JP2014153860A (en) | Multi-thread processor | |
JP7456216B2 (en) | Drive control device, electronic clock, and motor drive signal output control method | |
Otiv et al. | H-pattern: A hybrid pattern based dynamic branch predictor with performance based adaptation | |
JP2002366373A (en) | Method and device for task scheduling | |
JP5678868B2 (en) | Signal processing device | |
JPS599303Y2 (en) | Time division data reading circuit | |
SU1037420A1 (en) | Pulse repetition frequency multiplier | |
JP2008083873A (en) | Digital signal processor | |
JPH06338719A (en) | Digitally controlled temperature compensation type crystal oscillator | |
JP4164160B2 (en) | Level meter display device | |
JP2960120B2 (en) | Pulse generator | |
JP2012242352A (en) | Pulse interval measurement circuit and semiconductor integrated circuit device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080725 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100614 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100720 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100921 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20101221 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110118 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140128 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150128 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |