応用記述 - AVR.jp

®
応用記述
AVR1638 : XMEGA RTC較正
Atmel 8ビット マイクロ コントローラ
要点
●
●
●
正確な外部クロック元の助けでのRTC較正を実行するソフトウェア例プロジェクト
ソフトウェアはAtmel® Studio ASF例プロジェクトとして実装
Atmel XMEGA® Eデバイスを支援
説明
XMEGA Eデバイスは較正(CALIB)レジスタからppm誤差値を獲得することによってRTCクロックでの
補正を支援します。CALIBレジスタは外部校正または温度補正後に使用者ソフトウェアによって書
かれなければなりません。
この応用記述は正確な外部クロック元の助けでのRTC校正を実行するソフトウェア例プロジェクトを提
供します。ソフトウェアは現在の環境条件に関し、接続されたRTCクロック元に対するRTC較正値を
計算します。この値はデバイスのEEPROM位置へ格納されます。
後で、RTC周辺機能を使用し、自動RTCクロック補正の実行を意図する使用者応用コードは格納
されたEEPROM位置からこの較正値を読んでCALIBレジスタに設定しなければなりません。
本書は一般の方々の便宜のため有志により作成されたもので、Atmel社とは無関係であることを御承知ください。しおりの[はじめ
に]での内容にご注意ください。
Rev. 42042A-11/2012, 42042AJ1-03/2014
目次
1. RTCクロック補正 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 3
2. RTC較正 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 3
2.1.
2.2.
較正ソフトウェアの概要 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 3
較正はどう動く - 較正算法 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 3
2.2.1.
2.2.2.
2.3.
2.4.
ソフトウェアで使用される資源と形態設定 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 3
算法 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 4
ソフトウェアでのRTC較正形態設定 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 5
即時開始の手引き ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 5
3. 改訂履歴 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 5
AVR1638 : XMEGA RTC較正 [応用記述]
2
1. RTCクロック補正
Atmel XMEGA EデバイスはRTCが較正(CALIB)レジスタからppm誤差値を獲得することによってRTCクリスタル クロックでの内部補正を行うこ
とができる機能を支援します。CALIBレジスタは外部校正または温度補正後に使用者ソフトウェアによって書かれなければなりません。補
正は概ね100万RTCクロック周期の間隔で行われます。補正操作は単一周期操作、誤差の性質に応じて1周期を追加または削除する
ことによって実行されます。これらの単一周期操作は100万周期補正間隔全体を通して誤差数回(CALIBレジスタのERROR6~0)を繰り
返して撒き散らして実行されます。クロックの最終的な補正は計数器下位(CNTL)と計数器上位(CNTH)のレジスタを通して利用可能な
RTC計数値で反映されます。
この機能はRTC応用に対して相対的に安価で非常に高い精度でないRTCクリスタル/クロックを選ぶことを使用者に許します。このような
RTCでより高いタイミンング精度を達成するために、使用者応用のダウンロード(書き込み)に先立って、このようなクリスタル クロックからの誤差
は較正値を見つけ出す独立したソフト ウェアによって較正されなければなりません。後でRTCを使用する使用者応用で、この較正値を
RTC初期化ルーチンの一部としてCALIBレジスタに設定することが必要です。
要するに、XMEGA EデバイスはRTCクロックの較正ではなく補正だけを支援します。故に較正値を見つけ出すのは使用者の責任です。
2. RTC較正
第1.章で説明されるように、較正値を見つけ出すのは使用者の責任です。この応用記述は使用準備が整ったソース コードと共にこの課
題に合うようきっちりと手助けします。
このソフトウェアはAtmel Studio ASFの例プロジェクトとして実装されています。このASFプロジェクトは"RTC Calibration Demo application"で
す。
2.1. 較正ソフトウェアの概要
●
●
●
●
●
●
●
●
較正構成設定はシステム クロック元としてPC4に接続された非常に正確な外部クロックを使用します(よりもっと正確なクロックはRTC較正値
計算でのより少ない誤差を意味します)。2MHzの最小クロックで、RTCは±0.5ppmの精度に較正することができます。
RTCはTOSC1からの外部クロックまたはTOSCでのクリスタル用発振器のどちらかを使用することができます。
最低100万システム クロック(システム クロックでの誤差なしとの仮定)でRTCクロック数を比較することにより、RTC較正値が計算されます。
RTC-較正(CALIB)レジスタの設定に直接使用することができる較正値は形態設定可能なEEPROMアドレスに格納されます。
較正状態も別の形態設定可能なEEPROMアドレスに設定されます。
XMEGA Eは最大127ppmの補正を支援します。
RTCクロック誤差が127ppmよりも大きければ、補正が不可能で、較正状態は失敗です。失敗は状態値$02で示されます。
RTCクロック誤差が127ppmと等しいかまたはそれ未満なら、補正が可能で、較正状態は成功です。成功は状態値$01で示されます。
2.2. 較正はどう動く - 較正算法
本項は較正値を探し出すのに使用されるデバイス形態設定と算法を説明します。
2.2.1. ソフトウェアで使用される資源と形態設定
●
●
●
●
●
●
●
システム クロックとして使用されるPC4に接続される正確な外部クロック
TOSC1からの外部クロックまたはTOSCでのクリスタル用発振器のどちらかとしてのクロック元でのRTC
● 周期の持続時間が最低システム クロックの100万周期と等しくなるような値をRTC定期(PER)レジスタに設定してください。例として、
2MHzのシステム クロック、32.768kHzのRTCクロック、$8000でのRTC PERレジスタはRTC溢れで200万システム クロック周期を生成します。
この形態設定は±0.5ppmの較正精度を導きます。
タイマ/カウンタ4と5は共に両方を直列にすることによって32ビット捕獲入力動作形態として動きます。
以下の形態設定で使用されるタイマ/カウンタ4
● パルス幅と周波数の捕獲動作形態で、事象チャネル-1としての事象選択
● クロック元はシステム クロック
● 捕獲チャネルAが許可
以下の形態設定で使用されるタイマ/カウンタ5
● パルス幅と周波数の捕獲動作形態で、事象チャネル-1としての事象選択
● クロック元は事象チャネル-2
● 32ビット捕獲入力動作形態での動作のために事象遅延が許可
● 捕獲チャネルAが許可
ポートCピン7(PC7)形態設定
● PC7方向は出力
● PC7を上昇端での入力感知に形態設定
● PC7での事象チャネル-0出力に形態設定
事象システム形態設定
● 事象チャネル-0はRTC溢れに形態設定
AVR1638 : XMEGA RTC較正 [応用記述]
3
●
●
事象チャネル-1はポートCピン7(PC7)変化に形態設定
事象チャネル-2はタイマ/カウンタ4溢れに形態設定
2.2.2. 算法
先で与えられたように形態設定を行った後、RTCとタイマ/カウンタ4/5の両方を開始してください。
● 正しい捕獲値を保証するため、32ビット捕獲値を得る前にRTC開始とタイマ/カウンタ4/5の開始間を同期化してください。これについて
はタイマ/カウンタ4の捕獲フラグが設定(1)されるのを待ってそれを解除(0)してください。
● タイマ/カウンタ4の新しい捕獲フラグを待ってタイマ/カウンタ4と5の捕獲値を読み出してください。
● この32ビット捕獲値を予測される値と比較してください。どの偏差もRTCクロックでの誤差を示します。
● この誤差をppmに変換してください。それは100万当たりの誤差です。
● 捕獲値が予測値よりも大きい場合、それはRTCクロックがより遅いことを意味します。故に補正するためにより速いRTCクロックにするこ
とが必要です。即ち、CALBの符号ビットは1です。
● 捕獲値が予測値よりも小さい場合、それはRTCクロックがより速いことを意味します。故に補正するためにより遅いRTCクロックにするこ
とが必要です。即ち、CALBの符号ビットは0です。
● 必要とされる補正が周期飛ばしによるクロック速度向上の時(即ち、CALIBの符号ビットが1の場合)にRTC前置分周器をDIV2(RTCク
ロック/2)の最小設定で動かすことが必要とされます。
RTC較正算法の流れ図は図2-1.で示されます。
●
図2-1. RTC較正算法の流れ図
開始
初期化と形態設定
・ PC4に接続されるシステム クロック形態設定
・ RTCクロック元形態設定
形態設定とタイマ/カウンタ4開始
・ クロック元としてシステム クロック
・ 捕獲チャネルA許可
・ 事象選択として事象チャネル-1
・ 捕獲活動としてパルス幅(PW)
形態設定とタイマ/カウンタ5開始
・ クロック元として事象チャネル-2
・ 捕獲チャネルA許可
・ 事象選択として事象チャネル-1
・ 捕獲活動としてパルス幅と周波数(PWF)
・ タイマ/カウンタ4と5で32ビット捕動作
・
・
・
・
・
・
・
・
PC7形態設定
方向は出力
上昇端に対して入力感知
PC7で事象チャネル-0出力
事象システム形態設定
RTC溢れに対して事象チャネル-0
PC7変化に対して事象チャネル-1
タイマ/カウンタ4溢れに対して事象チャネル-2
RTC形態設定
定期(PER)レジスタ設定 (周期はシステム ク
ロックの最低100万計数です。)
RTC開始
RTC,タイマ/カウンタ4と5開始同期
・ タイマ/カウンタ4と5の捕獲値読み込み
・ 32ビット捕獲値表現のためにそれらを結合
・ RTC禁止
予測捕獲値と読み取り捕獲値間の偏差を得る
(変動がRTCクロック誤差)
NO
捕獲値>予測捕獲値
CALIBの符号ビットが0
YES
CALIBの符号ビットが1
RTCクロック誤差をppmでの誤差に変換
NO
ppmでの誤差≦127
(最大較正値)
YES
較正状態は失敗
較正状態は成功
CALIBレジスタに
設定されるべき値=0
CALIBレジスタに
設定されるべき値=
符号ビットとppmでの
誤差の組み合わせ
CALIB値と較正状態をEEPROMに格納
終了
NO
CCAで
タイマ/カウンタ4捕獲割り込み
フラグ設定 ?
YES
AVR1638 : XMEGA RTC較正 [応用記述]
4
2.3. ソフトウェアでのRTC較正形態設定
RTC較正実演ASFプロジェクトからsrc\configフォルダ下の'conf_rtc_calibration.h'ヘッダ ファイルを参照してください。
● 'conf_rtc_calibration.h'から使用者の必要条件/構成設定によって下の形態設定を作成してください。
● RTCCALIB_SYSTEM_CLOCK_IN_MHZ - MHzでのシステム クロック値
● RTCCALIB_EEPROM_ADDR_TO_STORE - 計算した較正値が格納されるべきEEPROMアドレス
● RTCCALIB_STAT_EEPROM_ADDR - 較正状態が格納されるべきEEPROMアドレス
● RTCCALIB_RTC_CLK_SRC - RTCクロック元
RTC較正実演ASFプロジェクトからsrc\configフォルダ下の'conf_clock.h'ヘッダ ファイルを参照してください。
● 'conf_clock.h'から使用者の必要条件/構成設定によって下の形態設定を作成してください。
● BOARD_XOSC_HZ - 外部システム クロック周波数値
2.4. 即時開始の手引き
ここではこの応用記述ソフトウェアを走行するのにAtmel ATxmega Eデバイスに基づく使用者基板を動かすと仮定されます。既定設定に
されたなら、どの形態設定値の変更も必要ありません。
1. PC4ポート ピンに2MHzの値(既定システム クロック値)の外部クロックを接続してください。
2. TOSC1ピンに32.768kHzのRTCクロックを接続してください(既定RTCクロック元)。これは較正されるべきクロックです。
3. Atmel Studio ASFプロジェクトの'RTC calibration demo project'を開いて正しいXMEGA Eデバイスを選んでください。既定選択デバイ
スはATxmega32E5です。
4. Atmel Studioから正しいデバッグを許可するため、Project⇒Properties⇒AVR/GNU C Compiler⇒Optimizationで"use rjmp/rcall
(limited range) on >8K devices"を選択してください。
5. 構築して.hexファイルを使用者基板にダウンロードして(書き込んで)ください。
6. 使用者基板でこの.hexファイル走行後、較正値がEEPROMアドレスの0(0は既定アドレス形態設定)に格納され、較正状態がEEPROMア
ドレスの1(1は既定アドレス形態設定)に格納されます。
7. ここで較正ルーチンが終了し、今や使用者応用をダウンロードする(書き込む)ことができます。
8. 使用者応用コードをダウンロードする(書き込む)前にEEPROM内容が保護されることを確実にしてください。
9. 使用者応用コードは最初に格納されたEEPROM位置から較正状態を読むべきです。
10. 較正状態が成功(状態が$01)なら、RTC補正を許可するために、格納されたEEPROM位置から較正値を読んで較正(CALIB)レジ
スタに設定してください。
11. 較正状態が失敗(状態が$02)なら、それはRTCクロック誤差が127ppmよりも大きく、故に補正が不可能なことを意味します。
3. 改訂履歴
資料改訂
42042A
日付
2012年11月
注釈
初版資料公開
AVR1638 : XMEGA RTC較正 [応用記述]
5
®
Enabling Unlimited Possibilities
®
Atmel Corporation
Atmel Asia Limited
Atmel Munich GmbH
Atmel Japan G.K.
1600 Technology Drive
San Jose, CA 95110
USA
TEL (+1)(408) 441-0311
FAX (+1)(408) 487-2600
www.atmel.com
Unit 01-5 & 16, 19F
BEA Tower, Millennium City 5
418 Kwun Tong Road
Kwun Tong, Kowloon
HONG KONG
TEL (+852) 2245-6100
FAX (+852) 2722-1369
Business Campus
Parking 4
D-85748 Garching b. Munich
GERMANY
TEL (+49) 89-31970-0
FAX (+49) 89-3194621
141-0032 東京都品川区
大崎1-6-4
新大崎勧業ビル 16F
アトメル ジャパン合同会社
TEL (+81)(3)-6417-0300
FAX (+81)(3)-6417-0370
© 2012 Atmel Corporation. 全権利予約済 / 改訂:42042A-AVR-11/2012
Atmel®、Atmelロゴとそれらの組み合わせ、AVR®、Enabling Unlimited Possibilities®、XMEGA®とその他はAtmel Corporationの登録
商標または商標またはその付属物です。他の用語と製品名は一般的に他の商標です。
お断り: 本資料内の情報はAtmel製品と関連して提供されています。本資料またはAtmel製品の販売と関連して承諾される何れの知
的所有権も禁反言あるいはその逆によって明示的または暗示的に承諾されるものではありません。Atmelのウェブサイトに位置する販売
の条件とAtmelの定義での詳しい説明を除いて、商品性、特定目的に関する適合性、または適法性の暗黙保証に制限せず、Atmel
はそれらを含むその製品に関連する暗示的、明示的または法令による如何なる保証も否認し、何ら責任がないと認識します。たと
えAtmelがそのような損害賠償の可能性を進言されたとしても、本資料を使用できない、または使用以外で発生する(情報の損失、
事業中断、または利益と損失に関する制限なしの損害賠償を含み)直接、間接、必然、偶然、特別、または付随して起こる如何なる
損害賠償に対しても決してAtmelに責任がないでしょう。Atmelは本資料の内容の正確さまたは完全性に関して断言または保証を行
わず、予告なしでいつでも製品内容と仕様の変更を行う権利を保留します。Atmelはここに含まれた情報を更新することに対してどん
な公約も行いません。特に別の方法で提供されなければ、Atmel製品は車載応用に対して適当ではなく、使用されるべきではありま
せん。Atmel製品は延命または生命維持を意図した応用での部品としての使用に対して意図、認定、または保証されません。
© HERO 2013.
本応用記述はAtmelのAVR1638応用記述(doc42042.pdf Rev.42042A-11/12)の翻訳日本語版です。日本語では不自然となる重複
する形容表現は省略されている場合があります。日本語では難解となる表現は大幅に意訳されている部分もあります。必要に応じて
一部加筆されています。頁割の変更により、原本より頁数が少なくなっています。
必要と思われる部分には( )内に英語表記や略称などを残す形で表記しています。
青字の部分はリンクとなっています。一般的に赤字の0,1は論理0,1を表します。その他の赤字は重要な部分を表します。