NEC ELECTRONICS NEC ELECTRONICS
NEC electronics NEC electronics NEC
ホーム
アプリケーション
製品情報
先端技術
サポート
WEBショップ
ニュース&イベント
会社案内
header
GO
詳細検索機能/特性検索
サイトマップ お問い合わせ

A/D, D/A変換

目次

    
FAQ-ID = 78ad-nnnn
0001: 8ビットA/Dと10ビットA/Dの違いは?
0002: uPD780021A(8bitA/D) の開発を uPD78F0034A(10bitA/D) で代行する
0003: uPD78F9116での8ビットA/D変換 [78K0/S]
0004: 10ビットA/Dの変換結果はどのように入るのか?
0005: 10bitA/D変換値の高速6bitシフト方法
0006: uPD789445ペーパ・マシンの変換時間の記述
0007: ユーザーズ・マニュアルとデータ・シートに記述されているA/D変換時間の違いは? [78K共通]
0008: A/D変換は CHで指定した時間だけ待てば終了するのか? [78K共通]
0009: アナログ入力に指定しなかった端子はポートとして使用可能か? [78K共通]
0010: 低電圧領域の A/D変換結果が期待どおりにならない。
0011: A/Dリファレンス電圧AVrefを 5Vから 3.5Vに変更した時の問題点は?
0012: ADCS0=0により直列抵抗ストリングはカットオフされるのか?
0013: A/D変換専用の電源端子(AVDDとAVSS)を接続しないとどうなるか? [78K共通]
0014: A/D変換結果は 2度読みしないと正常な値にならないのか?
0015: A/Dの完了用割り込みフラグ INTADのセット/リセット条件は?
0016: A/D端子として使用する場合、PMレジスタの設定は入力・出力のどちら?
0017: uPD780054 のA/D精度は?
0018: 低電源電圧時のA/Dコンバータの精度は?
0019: A/Dコンバータ内部の等価回路
0020: A/D入力端子のインピーダンスは?
0021: A/D端子に付けることができるコンデンサの容量は?
0022: D/Aコンバータ出力端子から外部に流せる最大電流は?
0023: 8本のアナログ入力をほぼ同時にサンプリングする方法は? [78K4]
0024: 変換処理時間について [780034Aサブシリーズ]
0025: リファレンス電圧の設定について [780034Aサブシリーズ]
0026: A/D変換完了の割り込みが発生しない [78K共通]
0101: A/D変換チャネルを切り替えると、変換結果が切り替え前チャネルに影響される[78K0、78K0S]
78ad
-0001
8ビットA/Dと10ビットA/Dの違いは?
Q1
一つのフラッシュ版で 8bitA/D内蔵マイコンと 10bitA/D内蔵マイコンをサポートしていますが、 どうやって使い分けるのですか?
A1
対象となるのは以下のサブシリーズです。
uPD780024A/0034Aサブシリーズ(uPD78F0034A)
uPD789104A/9114Aサブシリーズ(uPD78F9116A)
uPD789124A/9134Aサブシリーズ(uPD78F9136A)
uPD789167 /9177 サブシリーズ(uPD78F9177)
uPD789407A/9417Aサブシリーズ(uPD78F9418A)
uPD789426 /9436 サブシリーズ(uPD78F9436)
uPD789446 /9456 サブシリーズ(uPD78F9456)
1つのフラッシュ内蔵マイコンで
8ビットA/Dを内蔵した製品と
10ビットA/Dを内蔵した製品と
の評価を兼用します。
この場合、A/Dの使い方に
注意が必要です。

 これらの製品では 8ビットA/Dと 10ビットA/Dを内蔵したマスク版の製品を一つのフラッシュ版で対応しています。
このために 10ビットA/Dの変換結果の見え方に工夫がなされています。

10ビットの変換結果は 16ビットの転送命令で読み出しますが、このときの 10ビットの変換結果は 16ビットの上位 10ビットに格納されます。
つまり、変換結果のレジスタが sfrのメモリ・マップ上では addr0 と addr0+1 に配置されていたとすると、
  addr0  :上位2ビットに変換結果10ビットの下位2ビット
  addr0+1 :変換結果10ビットの 上位8ビット
となっています。
従って、10ビットの場合には addr0 をワードで読み出し、 8ビットの場合には addr0+1 をバイトで読み出します。

 ハード的には以上のようになっていますが、実際に使う時には、 対象のデバイスを指定すると 8ビットA/Dか 10ビットA/Dかは決まってしまいます (これはデバイス・ファイルで決まります)。
これで、変換結果レジスタ(ADCR0)を指定すると、アドレスとワード/バイトが自動的に決定されますので、 どのアドレスをアクセスするかは意識する必要はなくなります。
単に 10ビットの時の変換結果が 16ビットの上位10ビットに格納されることを知っていれば十分となります。
この情報はお役にたちましたか?
back to top  

78ad
-0002
uPD780021A(8bitA/D) の開発を uPD78F0034A(10bitA/D) で代行する
Q1
開発を uPD78F0034A で行い、マスクは uPD780021A で行います。 uPD78F0034Aは A/Dが 10bit、uPD780021Aは 8bitの違いがありますがソフトウエア・フル・コンパチで開発することは可能でしょうか?
A1
はい、可能です。
uPD78F0034Aで uPD780021Aを評価する場合には uPD780021Aとしてプログラムを作成してください。 このプログラムを uPD78F0034Aに書き込んで実行した場合には A/Dの変換結果は 8ビットで読み出せます。
(uPD78F0034Aの 10ビットA/Dは、上位8ビットと下位2ビットに分かれており、 8ビットの変換結果が欲しい場合には上位8ビットを読めばよいようになっており、 8ビットA/Dと同じ結果を得ることができます。)
なお、uPD78F0034Aを用いて評価する際には必ず IMSレジスタでメモリ構成を uPD780021Aと同じに設定してください。
この情報はお役にたちましたか?
back to top  

78ad
-0003
uPD78F9116での8ビットA/D変換 [78K0/S]
Q1
製品には uPD789102(マスク版)、開発には uPD78F9116(フラッシュ版)を使用しますが、 uPD78F9116 でアセンブルすると、
  MOV A, ADCR0
がエラーとなってしまいます。
A1
uPD78F9116では、ADCR0は、10ビットA/Dコンバータ用として 16 ビット・メモリ操作命令のみが 使用できるように定義されています。
お問い合わせのように uPD789102 (8ビットA/Dコンバータを内蔵) の評価用で uPD78F9116を使用する場合には、 プログラムの作成段階から uPD789102用のデバイス・ファイルを使用して作成し、アセンブルしてください。

(参照)
ユーザーズ・マニュアル
 「uPD789104A,789114A,789124A,789134A サブシリーズ」

  第18章 uPD78F9116A, 78F9136A フラッシュ・メモリ製品とマスクROM 製品の違い

注意
A/D 変換結果レジスタ0 (ADCR0 )を8 ビットA/D コンバータ (uPD789104A, 789124A サブシリーズ)として使用するときは 8ビット・メモリ操作命令で, 10ビット A/Dコンバータ(uPD789114A, 789134A サブシリーズ)として使用するとき は 16 ビット・メモリ操作命令で操作します。

ただし,uPD78F9116Aは,uPD789101A, 789102A, 789104A のフラッシュ・メモリ製品と して使用するとき,またuPD78F9136Aは,uPD789121A, 789122A, 789124A の フラッシュ・メモリ製品として使用するとき,ADCR0 を8 ビット・メモリ操作命令で 操作できます。その場合,uPD789101A, 789102A, 789104A でアセンブルした オブジェクト・ファイルまたはuPD789121A, 789122A, 789124A でアセンブルした オブジェクト・ファイルで行ってください。
この情報はお役にたちましたか?
Q2
uPD789111Aと uPD789101Aの両方に同じソフトを入れて、入力端子で切り替えたいが、 MOV A, ADCR0 と MOVW AX,ADCR0 を共存できない。
A2
ADCR0と言うレジスタを 8ビットと 16ビットの両方の意味で使うことはできません。

そのような使い方が必要な場合には ADCR0を明示的に使用するのでなく、 0xFF15番地の バイト・データを指すポインタ と 0xff14番地のワード・データを指すポインタの 2つを準備しておき、8ビットの変換結果の場合には 0xFF15番地のポインタでアクセスし、 10ビットの変換結果では 0xFF14番地のポインタでアクセスすることが考えられます。

それよりは、uPD789111Aだけでプログラムを作成し、8ビットの値が欲しい場合には、 変換結果の上位8ビットを使うことを考えてください。
この情報はお役にたちましたか?
Q3
当面は uPD78F9116A、量産時はマスク品の uPD78102Aを使用する予定ですが、 A/Dコンバータは 10ビットと 8ビットの違いがあります。
これを切り替えるような処理を行えばよいか?
A3
そのような処理は全く必要ありません。
プログラムは uPD78102Aとして作成してください。
それをそのまま uPD78F9116Aに書き込んでいただくだけで結構です。
この情報はお役にたちましたか?
back to top  
(2003/12)

78ad
-0004
10ビットA/Dの変換結果はどのように入るのか?
Q1
uPD78F9116の 10bit A/Dについて、10ビットA/Dの変換結果はどのように入るのですか?
A1
変換結果の10ビットは16ビット読み出しのビット15から配置されます。
下位の6ビットには 0が入ります。
したがって読み出した 16ビットと変換結果は次のようになります。
レジスタbit位置 151413121110 9 8 7 6 5 4 3 2 1 0
変換結果データ bit
9
bit
8
bit
7
bit
6
bit
5
bit
4
bit
3
bit
2
bit
1
bit
0
000 000
この情報はお役にたちましたか?
back to top  

78ad
-0005
10bitA/D変換値の高速6bitシフト方法
Q1
uPD78F9116Aで、10bitA/D変換結果は上位15bit目から順に格納されますが、 高速にデータを右に 6bitシフトさせる方法はありますか?
  現在の使用方法:
    ad_buff = ADCR0;
    ad_buff >>= 6;
A1
基本的にアセンブラで記述して頂いて、それをCから関数コールする事になります。 ノーマル・モデルに対応したアセンブラ記述の本体部は以下のようになります。
 _funcsub: XCH     A,X     ;GET B1,0 IN A	
           ADD     A,A     ;SET CARRY WITH B1
           XCH     A,X     ;GET B9-B2 AND SAVE B0
           ADDC    A,A     ;ADD B1 TO B8-B2 AND SET CARRY WITH B9
           XCH     A,X     ;GET B0 AND SAVE B8-B1
           ADDC    A,A     ;GET B9 AND SET CARRY WITH B0
           XCH     A,X     ;GET B8-B1 AND SAVE B9
           ADDC    A,A     ;ADD B0 TO B7-B1 AND SET CARRY WITH B8
           MOV     C,A     ;SAVE B7-B0 TO C RETURN VALUE
           MOV     A,X     ;GET B9
           ADDC    A,A     ;ADD B8 TO B9
           MOV     B,A     ;SAVE B9,B8 TO B
           RET
AXレジスタの入力をシフトして下から詰め直したものが BCレジスタに入って戻ります。 この関数を Cの方では ad_buff に値があり、戻りも ad_buff に格納する場合
       ad_buff = funcsub(ad_buff);
の形でコールすることになります。
この情報はお役にたちましたか?
back to top  
(2001/07)

78ad
-0006
uPD789445ペーパ・マシンの変換時間の記述
Q1
uPD789445の A/D入力について質問がございます。
ペーパ・マシン p.116の 8ビットA/Dコンバータ特性の変換時間ですが上段は 「AVDD=2.7〜5.5V」と記述されていて下段は何も書かれていません。 これは、下段は「AVDD=1.8〜2.7V」ということでしょうか。
A1
はい、そうです。
条件の欄に何も書かれていない場合にはその欄上に書いてある条件だけであることを示しています。
この情報はお役にたちましたか?
back to top  

78ad
-0007
ユーザーズ・マニュアルとデータ・シートに記述されているA/D変換時間の違いは? [78K共通]
Q1
uPD780058で、ユーザーズ・マニュアル中(p.269)の ADMで選択する変換時間とデータ・シート中 (p.52)の変換時間との関係を教えてください。
A1
データ・シートの変換時間を満足する範囲で、システムに適した変換時間を ADMレジスタで選択してください。
データ・シートの変換時間
ユーザーズ・マニュアルのADMの説明
データ・シートには保証値を示してあります。 つまり、デバイスとしてどこまで高速に変換できるか性能を示しています。 この数値以上では変換動作が保証できません。 どのような設定ができるのか機能を示しています。 動作クロック周波数に対応して最適なものを選択できるようになっていますので、 お客様のシステムの要望に従って、最適な値を選択してください。
この情報はお役にたちましたか?
Q2
uPD789102Aで、マニュアルの A/D変換時間の選択の注意書きで
 「A/D変換時間が 14uS以上なるように設定してください」
とあるが、この 14uSはどのような意味を持つのか?
A2
この 14usはデバイスの A/D変換のハードウエアとしての性能限界です。
この時間より高速の変換はできません。
この情報はお役にたちましたか?
back to top  
(2003/12)

78ad
-0008
A/D変換は CHで指定した時間だけ待てば終了するのか? [78K共通]
Q1
uPD789445で、ADMO=88H (fx=4MHz)の条件での変換時間は 30uSとなっていますが、 CHの指定から 30uS待っただけでは A/D変換は正しく終わっていないのでしょうか?
A1
CHの指定をしても、直ちに A/D変換が開始される訳ではございません。
このようにソフト・タイマで変換終了を待つのではなく、INTAD0が発生 (IF1レジスタの ADIF0がセットされるのを)待つような処理としてください (当然 ADIF0がセットされたのを確認したら ADIF0はクリアしてください)。
この情報はお役にたちましたか?
Q2
1MHzで動作させ、FR02, FR01, FR00は 48/fccに 設定してA/D変換をおこなっている。
変換時間に LEDを点灯させることでオシロで測定してみたら、約80uSかかっている。
48/fccであれば、計算上1回の A/D変換時間は 48μS程度になるのではないか?
A2
変換がスタートすると FRC02-00 で指定した時間で変換は終了します。
しかし、CPUのクロックと A/Dの動作クロックが異なりますので、CPUが A/D変換を起動しても、 直ちに変換がスタートするわけではありません。

また、変換終了割り込みによりプログラムでポートを操作されることになりますが、 変換終了割り込み発生から割り込み処理開始までの時間及び、プログラムでの処理時間が必要です。
お問い合わせではクロック周波数が低いので、1命令の実行に最低でも 2uSは必要になります。
以上のことから、変換に約80uS かかっているようにみえるものと思われます。
この情報はお役にたちましたか?
back to top  
(2003/12)

78ad
-0009
アナログ入力に指定しなかった端子はポートとして使用可能か? [78K共通]
Q1
アナログ入力チャネル指定レジスタで指定した端子以外は、入力ポートとして使用可能でしょうか?
A1
使用可能です。
アナログ入力として使用する端子以外は入力ポートとして使用できます。
ただし、変換最中に入力ポートを読み出さないでください。
この情報はお役にたちましたか?
Q2
uPD789166の A/D変換にて、
 「変換中にポートの入力命令を実行すると変換分解能が低下する事がある」
とあります。どの程度低下するのでしょうか?
A2
デバイスとして保証している精度の最下位ビットが影響を受ける程度とお考えください。
この情報はお役にたちましたか?
Q3
uPD789166で A/D変換中に A/Dと兼用のポート (P60-P67) に入力命令を行うと変換分解能が下がる、 と記載されています。
これは、入力命令を行ったときの変換1回分だけと、理解してよいのでしょうか?
A3
はい、入力命令を実行した時の変換結果だけが対象です。
この情報はお役にたちましたか?
Q4
なぜ、変換中にポートの入力命令を実行すると変換分解能が低下するのでしょうか?
A4
アナログ信号に比較してデジタルの信号は振幅が大きく、周りの回路に影響を与えてしまいます。
これがデジタル信号同士なら、影響によるノイズが大きくても、 スレッシュホールド電圧を超えない限り影響はありません。
しかしながら、アナログ信号の場合にはノイズの分だけ直接影響を受けてしまいます。
このため A/Dの精度がデジタル信号からのノイズで低下する事になります。
この情報はお役にたちましたか?
back to top  
(2003/12)

78ad
-0010
低電圧領域の A/D変換結果が期待どおりにならない。
Q1
uPD780034A のA/D変換において、 VREF=5Vにおいて、uPC1093の出力を、入力電圧を 0〜5V まで変化させ変換結果を確認すると、 1.25V以下の電圧では変換結果が上方にずれてしまうことがあり直線的になりません。
A1
uPC1093のカソード電流をどの程度流しているか分かりませんが、Vka=Vref のときには 負荷容量が大きいと安定動作領域に問題があります。

uPC1093の基準電圧は MINでは 2.440Vですが、これの誤差はないでしょうか?
コンデンサにアルミ電解を使用すると周波数が高いところでは容量がほとんどなくなります。
その場合には周波数特性のよいコンデンサと組み合わせてご使用ください。
詳細は uPC1093のデータ・シートを参照してください。

また、アナログ入力信号にノイズの問題はないのでしょうか?
ノイズの影響が考えられる場合には、デバイスのUMを参照されてセラミック・コンデンサ等を追加してみてください。
この情報はお役にたちましたか?
back to top  

78ad
-0011
A/Dリファレンス電圧AVrefを 5Vから 3.5Vに変更した時の問題点は?
Q1
uPD780988 を電源電圧 5V、リファレンス電圧 5Vにて使用していたリファレンス電圧を 3.5Vに変更したいのですが、問題点と注意点はありますか?
A1
AVrefを 3.5Vで使用する場合には、5Vで使用する場合に比べて A/V変換の総合誤差が 50% (TYP:0.2%FSRが 0.3%FSR)悪くなり、その他の変換誤差特性も悪くなります。

詳細は、データ・シートの A/Dコンバータ特性に記載されておりますのでご参照ください。
また、変換時間が 14uS(MIN)から 19uS(MIN)と長くなってしまいます。
これらの点にご注意頂ければ結構です。
この情報はお役にたちましたか?
back to top  

78ad
-0012
ADCS0=0により直列抵抗ストリングはカットオフされるのか?
Q1
A/Dコンバータに関し、ADCS0=0 とする事により、 本直列抵抗ストリングはオフされるのでしょうか?
A1
はい、そうです。
ユーザーズ・マニュアルに記載された通り、 A/Dの動作を停止(ADC0=0)することで直列抵抗ストリングに流れる電流を断ち切って消費電流を減らす事ができます。
この情報はお役にたちましたか?
back to top  

78ad
-0013
A/D変換専用の電源端子(AVDDとAVSS)を接続しないとどうなるか? [78K共通]
Q1
uPD789101Aで、A/D変換には専用の電源端子(AVDDとAVSS)がありますが、 これらを接続しない場合どうなりますか?
A1
そのような場合には、正常な A/D変換結果を得ることは保証できません。
AVDDから VDDに接続された内部の保護ダイオードを経由して電流が流れます。
従って、あたかも動作しているように見える状態になることは考えられますが、 常に同じ結果が得られるかは保証致しかねます。
この情報はお役にたちましたか?
Q2
uPD789104Aの P60/ANI0〜P63/ANI3 の端子のうち P60/ANI0〜P62/ANI2 を A/D入力、 P63/ANI3端子を入力ポートとして使用している。
P63端子は抵抗で VDDにプルアップしているが、端子のレベルがあがらない。
なお、AVDD は ANI0〜ANI2 を使い始めるときに供給している。
A2
ANI端子には保護のためのダイオードが入っており、 これにより AVDD より高い電圧が入力されないようになっております。
お問い合わせの状況は、P63/ANI3 に抵抗を介して入力された電流がこのダイオードにより AVDD側に流れてしまった為のものです。
A/D変換をしないときでも AVDD には VDD と同じ電圧を印加してください。
この情報はお役にたちましたか?
back to top  
(2003/12)

78ad
-0014
A/D変換結果は 2度読みしないと正常な値にならないのか?
Q1
uPD78F0078で「A/D変換結果を 2度読みしないと正常な値にならない」という制限事項がありますが、 ソフト的な対策以外で処理する方法があれば教えてください。
A1
ハード的な回避策はございません。
また、2度読みが対策ではありません。
A/Dをスタートした 1回目の変換結果がおかしくなることがありますので、 これは捨てて次の変換結果を使ってください。
なお、1度A/Dがスタートすると 2回目以降の変換結果は正常な精度となりますので、 A/Dをスタートした(変換動作許可にした)最初の 1回だけ無視すれば、 後はチャネルを切り替えても 1回読むだけで構いません。
この情報はお役にたちましたか?
back to top  

78ad
-0015
A/Dの完了用割り込みフラグ INTADのセット/リセット条件は?
Q1
uPD780058で、A/Dの完了用割り込みフラグINTADのセット/リセット条件を教えてください。
A1
セットされるのはA/D変換が完了した時、またはソフトでセットした時です。 リセットされるのは CPUがリセットされた時、INTADの割り込みが受け付けられた時、ソフトでクリアした時です。
この情報はお役にたちましたか?
Q2
A/Dの動作完了直前に CS=1を書き込むと INTADフラグはどうなりますか?
A2
A/D変換動作中に CSを再度 1 にすると最初から変換動作をやり直します。
この情報はお役にたちましたか?
back to top  

78ad
-0016
A/D端子として使用する場合、PMレジスタの設定は入力・出力のどちら?
Q1
兼用端子を A/Dとして使用するときには、モード設定は入力・出力のどちらでも良いのですか?
A1
いいえ違います。例えば P3や P4〜6 のように PMCレジスタや MMレジスタでの設定を行うことなしに A/Dとして使用できると言う意味です。
A/Dとして使用する時には PMレジスタは入力に指定して、出力バッファを切ってください。
A/Dその物は動作しますが、外部から信号を入れた場合、マイコンの出力と衝突します。
この情報はお役にたちましたか?
back to top  

78ad
-0017
uPD780054 のA/D精度は?
Q1
uPD780054において、A/D入力部の精度を教えてください。
A1
データ・シートに次の通り記載しておりますのでご確認ください。
TA = -40 〜+85℃,AVDD = VDD = 2.0〜6.0V ,AVSS = VSS = 0V の時
2.7V ≦ AVREF0 ≦AVDD なら±0.6%(MAX)
2.0V ≦ AVREF0 <2.7V なら±1.4%(MAX)
この情報はお役にたちましたか?
back to top  

78ad
-0018
低電源電圧時のA/Dコンバータの精度は?
Q1
uPD789104A のA/Dコンバータで、
2.7〜5.5V での総合誤差は max±0.6% となっています。
1.8〜2.7V での総合誤差はどの程度でしょうか?
A1
1.8V〜2.7Vでの総合誤差は max±1.2% です。
この情報はお役にたちましたか?
Q2
78K0SのA/D部は uPD750064など 75XLシリーズより精度が良いのでしょうか?
A2
uPD750064の A/Dの精度が 3LSBですので、規格としてはほぼ同じとお考えください。
この情報はお役にたちましたか?
back to top  

78ad
-0019
A/Dコンバータ内部の等価回路
Q1
uPD78002xの A/Dコンバータ内部の等価回路について教えてください。
また電荷を取り込む時間を教えてください。
A1
実際には、単純な RCの回路とはなりません。
マニュアルの図13-19、及び表13-2に記載されておりますが、以下のような等価回路となります。
[78002xADC](8Kbytes)
内部の容量を十分充電するために、ドライブ・インピーダンスを下げて頂く必要があります
(数kオーム程度を推奨します)。
また、電荷を取り込む時間は、A/D変換時間の 1.5/12 程度です。
なお、これは参考値です。保証値ではございませんのでご注意ください。
この情報はお役にたちましたか?
back to top  

78ad
-0020
A/D入力端子のインピーダンスは?
Q1
uPD784031で、データ・シートの タイプ 20-Aの端子を A/Dとして使用したとき、 入力インピーダンスはどの程度でしょうか?
A1
この端子は時間と共にインピーダンスが変化します。
また、サンプリング・コンデンサの容量は 数pF 程度です。
サンプリング時にコンデンサを充電するために電流が流れますが、通常はリーク電流程度しか流れません。
従ってインピーダンスは、その状態によって大きく変化します。

なお、このA/D端子は 数kΩ程度以下の低いインピーダンスでドライブする必要があります。
これは、サンプリング時間中に、変換用のサンプリング・コンデンサを A/Dの精度以内に充電しなければならないからです。(データ・シートの「図8-7 A/Dコンバータのブロック図」を参照)
ドライブ・インピーダンスが高い場合は精度が得られません。
この情報はお役にたちましたか?
back to top  

78ad
-0021
A/D端子に付けることができるコンデンサの容量は?
Q1
uPD789166/uPD78F9177において、A/D入力ポートに直付けできる、電解コンデンサの容量を教えてください。
A1
アナログ入力に大きい電解コンデンサを付ける事自体には問題ありません。
しかし、コンデンサを付けることで、 そこに蓄えられた電荷の影響で電源のオン/オフ時に端子の電圧が電源電圧を越えてしまう可能性が考えられます。
これを避けるために、この電荷を逃がすためのダイオードを必ず追加してください
(ユーザーズ・マニュアルの図12-10を参照してください)。
この情報はお役にたちましたか?
back to top  

78ad
-0022
D/Aコンバータ出力端子から外部に流せる最大電流は?
Q1
uPD784214、uPD78F4216の内蔵D/Aコンバータにおいて、 ANO0,ANO1 各1ch当たりの最大出力電流はいくらでしょうか?
A1
このD/Aコンバータは、基本的に電流は流せません。
このD/Aは R-2R抵抗ラダー により構成されたものです。
従って、内蔵抵抗が標準で 5.3kΩ程度あり、これが AVref1 のインピーダンスと直列に入ってしまいます。
このため電流を流すと急激にレベルが変動して精度が悪化します。
D/A出力から電流を流す事は推奨できません。
10MΩ程度の大きなインピーダンスで受ける必要があります。(総合誤差の条件に記載)
この情報はお役にたちましたか?
back to top  

78ad
-0023
8本のアナログ入力をほぼ同時にサンプリングする方法は? [78K4]
Q1
uPD784217Aで、8本(ANI0〜ANI7)のアナログ入力をほぼ同時にサンプリングするよい方法はありますか?
A1
uPD784037ではスキャン・モードとマクロ機能を使用して行えますが、 uPD784217Aではスキャン・モードが無いため、マクロ・サービスを使用する方法が考えられます。

A/D変換終了の割り込みでマクロ・サービスを起動し、そこで ADISに次のチャネルの値を書き込む処理を行います。
これだけでは変換結果は読めませんので、回数は1回に設定し、VCIEを 0にして直ちに A/D変換の割り込みをかけるようにしておきます。
当然、その割り込み処理で A/D結果の読み出しと、次の ADISのデータの設定、ISMと MSCを1に設定する処理を行う必要があります
(タイプBを使えば、ADISは一連の値をメモリに入れておくことで、毎回設定する必要はありません。)

これにより、次のチャネルの指定はマクロ・サービス、変換結果の読み出しは通常割り込みとなります。
ただし、この割り込み処理は時間制約がきついので、 A/D変換時間と処理時間を十分に検討しないと実現可能かどうかは判断できません。
この情報はお役にたちましたか?
back to top  
(2002/06)

78ad
-0024
変換処理時間について [780034Aサブシリーズ]
Q1
uPD78F0034Aでスタンバイ状態から外部割り込みをかけ、 起動したら A/Dにて電圧を読み込む動作を 10ms以内に完了させたのですが可能ですか?
A1
可能です。
10msであれば、セラミック発振子を用い、STOPモードの場合でも処理可能です。
この情報はお役にたちましたか?
Q2
HALTモードの場合の処理時間はどれ位になりますか?
A2
以下のような処理と時間が考えられます。
処理クロック数条件
割り込み受け付けまでの時間 約10 
A/D起動処理 7  
A/D変換1回の時間 144uPD78F0034B, 12MHz, 4.5V
1208.38MHz, 4.0V
96 5MHz, 2.7V
2回の変換に必要な時間288uPD78F0034B, 12MHz, 4.5V
2408.38MHz, 4.0V
1925MHz, 2.7V
CPUと A/Dの非同期による
処理待ち(最悪1周期として)
144uPD78F0034B, 12MHz, 4.5V
1208.38MHz, 4.0V
96 5MHz, 2.7V
2回目変換完了割り込み待ち(*1)10  
変換値の読み出し 8  

これらを合計すると概略で以下のような時間となります。
クロック数処理時間条件
467約40usuPD78F0034B, 12MHz, 4.5V
395約50us8.38MHz, 4.0V
323約65us5MHz, 2.7V

(*1)
1回目でも必要な処理ですが、時間としては2回目の変換動作と平行して処理されるので、
計算では2回目しか出てきません。
この情報はお役にたちましたか?
back to top  
(2003/11)

78ad
-0025
リファレンス電圧の設定について [780034Aサブシリーズ]
Q1
A/D変換される電圧は、AVss〜AVrefの間の電圧と理解していますが、 AVssに 1V、AVrefに 4Vを入力して、この間の 3Vを 256分解能で変換できますか?
A1
いいえ、できません。
AVSSは VSSと同じ電位にする必要があります。
AVSSは外部からのアナログ入力の基準電位として使用するだけでなく、 内部ではデジタル回路とのインタフェースの基準電位としても使用されます。
従って、AVSSを VSSと異なる電位に接続することはできません。
この情報はお役にたちましたか?
back to top  
(2003/11)

78ad
-0026
A/D変換完了の割り込みが発生しない [78K共通]
Q1
uPD789177Yで以下のプログラムを作成して、A/D変換させようとしているが、 割り込み要求フラグがセットされない。
    ADM0 = 0x28;
    ADS0 = 0x00;
    ADMK0 = 0;
    ADCS0 = 1;
    EI();
    while(ADIF0 == 0) ;
A1
このプログラムには問題があります。
A/D変換完了割り込みのマスクが解除され、CPUが割り込み許可状態になっています。
この状態では、割り込みが受け付けられてしまい、 割り込みが受け付けられると割り込み要求フラグ ADIF0はクリアされてしまいます。
割り込みはマスクした状態で実行してください。
    ADM0 = 0x28;
    ADS0 = 0x00;
    ADMK0 = 1;
    ADCS0 = 1;
    EI();
    while(ADIF0 == 0) {
        NOP();
    }
    ADIF0 = 0;
この情報はお役にたちましたか?
back to top  
(2003/12)

78ad
-0101
A/D変換チャネルを切り替えると、変換結果が切り替え前チャネルに影響される[78K0、78K0S]
Q1
複数のアナログ入力を処理したいので、ADSレジスタで変換するチャネルを切り替えながら、A/D変換を行っています。ところが、得られた変換結果が切り替え前の変換結果に影響されているように見えます。
A1
原因として2つ考えられます。
(1)一つはハードウェアが原因となったものです。78Kマイコンに内蔵されているA/Dコンバータはほとんどが逐次変換型のA/Dコンバータで、アナログ入力信号を内部のコンデンサにサンプリング(チャージ)して、そのチャージした結果を変換に使用します。このチャージされた内容は次のサンプリングまでは保持されます。サンプリングは、下図に示すように抵抗を介してコンデンサをチャージします。



この動作は抵抗を介したコンデンサの充電ですから、コンデンサの電圧は下のグラフのような曲線(充電カーブ)を描いて入力電圧に近づいていきます。



シリーズに入った抵抗の値が大きいと、この曲線は寝てきます。逆に小さいと立ち上がってきます。この抵抗の大きさによりサンプリング期間でコンデンサの電圧が何処まで入力電圧に近づくかが変化します。入力電圧に近づいても、等しくなることはありませんが、A/Dコンバータの精度以下の誤差になれば、使用上は問題ありません。
問題はこのシリーズ抵抗、中でも信号の出力抵抗(信号源インピーダンス)が大きい場合です。この抵抗が大きいと十分に充電できず、充電開始前の電圧と入力電圧の間の電圧となってしまいます。これが、チャネルを切り替えた場合に前のチャネルの影響を受ける原因となります。この様子を模式的に示した例を以下に示します。この例では、2チャネル目の出力抵抗が大きいために、1チャネル目の値から2チャネル目の値に変化できない状態を示しています。



この対策としては、以下の3つがあげられます。

@信号源のインピーダンスを下げる

A端子にコンデンサを付加して、信号源のインピーダンスの影響を少なくする

Bサンプリング時間を長くする

@が基本ですが、かなり困難です。そこで、AかBの対策となります。Aはハードウェアとしての対策で、Bはソフトウェアでの対策となります。Bでは、変換時間を長くすることで、サンプリング時間を長くすることもできますが、他のチャネルの変換時間も遅くなることから、2チャネル目だけ複数回の変換を行うことが対策として考えられます。変換回数を増やすことで、サンプリングの回数が増加して、トータルのサンプリング時間が長くなります。

(2)2つ目はソフトウェア処理の問題です。A/D変換処理はプログラムの実行とは独立して実行されます。問題となるのは、ADSレジスタを変更してチャネルを変更したタイミングの直前で変更前のチャネルのA/D変換が完了した場合です。このときの割り込みを新しいチャネルでの変換完了の割り込みと解釈して処理しても、切り替え前のチャネルの値が得られてしまいます。この場合にはハードウェアの問題とは異なり、切り替え前のチャネルの変換結果となります(下記の1チャネル目)。



この場合の対応方法は不要な割り込み要求フラグをクリア(ADIFビットをクリア)することです。
もし、ベクタ割り込みを使用していたなら、チャネルを切り替える前に割り込みをマスク(ADMKビットをセット)して新たな割り込みでベクタに分岐しないようにします。その後でADSを変更し、割り込み要求フラグ(ADIFビット)をクリアしてから割り込みマスクを解除(ADMKビットをクリア)します。なお、A/D変換完了のベクタ割り込み処理の中でADSレジスタを書き換えている場合には(多重割り込みを許可しない限り)、新たなA/D変換完了割り込みを受け付けることはないので、ADSレジスタを書き換えた後で割り込み要求フラグ(ADIFビット)をクリアするだけで済むはずです。

この場合の派生問題として、ADSレジスタを書き換える前にADCSビットをクリアしてA/D変換動作を停止する場合があげられます。A/D変換を停止すると、変換結果が不定になってしまいます。その状態でADSレジスタを変更し、A/D変換を再開して割り込みを待つと、既に割り込み要求フラグはセットされているので、直ぐに割り込みを受け付け、不定となった変換結果を読み出してしまいます。この場合にも、ADSレジスタを変更したら、割り込み要求フラグ(ADIFビット)をクリアしてください。

いずれの場合にも、現れる現象は似たようなもので、対策として、A/D変換時間を長くしたり、A/D変換を複数回実行したりすることで、正しい結果が得られます。しかし、本来の原因は全く別物です。原因を良く見極めた対策が必要です。

(2008/02)

この情報はお役にたちましたか?
back to top  
(2008/02)









































 ご利用にあたって  個人情報保護について  RSS       © 1995-2008  NEC Electronics Corporation