オーバーランエラーの原因:Q&Aで学ぶマイコン講座(16)(3/3 ページ)
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、中級者の方からよく質問される「オーバーランエラーの原因」についてです。
外部メモリなどのアクセス時間
マイコンに内蔵されているRAMは、アクセス時間が速いので、データ転送時間は問題になりませんが、外部メモリを使用する場合は、一般的にアクセス時間が遅く、データ転送に時間がかかります。そのため、オーバーランエラーが発生する可能性が高くなります。
マイコンが外部メモリをアクセスする場合の周波数はシステムクロックよりも遅くなる場合が多い上、外部メモリ自体のアクセス時間が遅く、ウェイトサイクルを入れる必要がある場合があります。これらの要因による外部メモリのトータルのアクセス時間を計算して、余裕をもった受信バッファからの読み出しタイミングを設定しないとオーバーランエラーが発生します。
また、内蔵のフラッシュメモリやEEPROMの読み出し時間は比較的速いですが、書き込み時間は遅い場合が多いです。そのため、フラッシュメモリやEEPROMといったメモリにデータを書き込む場合は時間を考慮して、受信バッファからの読み出しタイミングを設定する必要があります。
受信データと転送データのビット数の違い
受信データのビット数とDMA転送のビット数が異なる場合に、計算を間違わないように注意してください。例えば受信データは16ビットで、DMAは8ビット単位でデータ転送する場合、DMAは受信データを取り出すのに2回転送を行う必要があります。そのためデータ転送に時間がかかりオーバーランエラーの原因になります。
複合的な要因
ユーザーは前述した個々の要因に関して、比較的注意深くシステム設計を行っていますが、実際は、これらの要因が複数関係してオーバーランエラーを発生させる場合がほとんどです。
例えば、UARTの通信で16ビットデータを受け取って、DMAまたはCPUで8ビットずつ2回に分けて、外部のメモリに書き込む場合です。通信速度と外部メモリのアクセス時間は、ユーザーがオシロスコープなどを使って実測できますが、DMA転送のスピードやCPUの割り込み処理は内部動作ですので、多くの場合、ユーザーには分かりません。そのため、マイコンベンダーにDMAやCPUの内部処理の詳細を確認して、トータルのデータ転送時間を算出する必要があります。
通信ペリフェラル以外のオーバーランエラー
オーバーランエラーが発生するのは通信ペリフェラルだけではありません。A-Dコンバータでも発生します。A-Dコンバータで周期的に変換を繰り返すと、変換結果を格納するレジスタから変換結果を周期的に取り出さなくてはなりません。変換結果を取り出す前に次の変換結果がレジスタに入ってしまうとオーバーランエラーが発生してしまいます。これは通信ペリフェラルとまったく同じ現象です。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- そもそも「マイコン」って何?
マイコンを使いこなすために知っておくべき基本用語を毎回1つずつ取り上げて解説する新連載がスタート!! 第1回目の今回は、「そもそも“マイコン”って何?」という問い掛けから、マイコンの実態や応用分野、具体的な働きについて紹介します。 - マイコン周辺部品の選び方――電源編
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、初級者の方からよく質問される「マイコン周辺部品の選び方――電源編」です。 - 解析実行エラーの原因と対策(その3)
連載の第6回と第7回で解説した収束エラーに気を付けていても、SPICEによる解析を行っているとさまざまな形で解析実行エラーが発生する。第8回では、陥りやすい失敗事例を挙げて、その原因と対策を具体的に説明する。 - 通信デバイスがなぜか故障、その陰に“活線挿抜”アリ!!
RS-485規格のシリアル通信方式は、FA機器の分野に広く普及している。ところが故障品の修理を手掛ける筆者の元には、機器の内部で通信を担うトランシーバICが壊れ、通信不良に陥った機器がたびたび持ち込まれる。調査したところ、電源を入れたまま通信コネクタを抜き差しする“活線挿抜”が、原因を作り出していた。