CDC-232

 RS-232C ポートを持たない PC に、仮想的な COM ポートを生成します。デバイスを接続しドライバをインストールすれば、RS-232C による通信(ただしデータ線のみ)が可能となります。
 

ソフトウェア USB による仮想 COM ポート

使い方

 AVR にプログラムを書き込み、回路を組み立てたら PC の USB ポートに接続します。Windows ではドライバを要求されますので指示に従ってインストールします。仮想 COM ポートが生成されますので、ターミナルソフトやアプリケーションからアクセスしてください。ホストPC側では制御線は、フローコントロールなし、に設定します。CDC プロトコルには制御線を操作するしくみもありますが、ここでは使っていません。RS-232C 側のデバイスとハンドシェイクするだけなら AVR 内の文字バッファ残量に対応させて拡張してください(ATmegaで対応済)。
 同じ PC でも異なる USB ポートに接続すると、ドライバインストールが要求されます。インストール済のドライバを自動検出させてください。また、COM ポート番号も違うものが割り当てられます。AVR のファームウェアにシリアル番号を設定すれば、どのポートでも同じ COM 番号となりますが、同一シリアル番号のデバイスは複数接続できません。
 デバイスを取り外す前に、必ずターミナルソフトやアプリケーションで COM ポートをクローズしてください。オープンしたままだとファイルハンドルが残留し、再接続できなくなります。この場合は、ターミナルソフトやアプリケーションを再起動する必要があります。
 9600bps より早いデータ転送速度が必要な場合は、lowcdc.vbs を起動して、バルク転送による高速モードに切り替えてください。

ATtiny45 版のループバック試験

回路図

 ATtiny45, ATtiny2313 および ATmega8/48/88 用の回路図です。いずれも ISP でプログラムできます。
赤色LEDは、USB バスからの 5V を 3.3V に降圧して AVR に供給するもので、過電流保護(ヒューズ)も兼ねています。10mA ぐらい流れます。他の回路に供給する余裕はありません。
 マイクロコントローラ(MCU)に接続するときは、Gnd を接続し、TxD と RxD をクロス接続します。R4 は、接続先の MCU が 5V 駆動のとき、逆流を抑止します。同電圧なら省いても構いません。 R5 は、短絡時の保護用です。MCU の代わりに MAX232 などの RS-232C ドライバを接続するときは、R4, 5 ともに不要です。
 発振子には、必ず水晶を使ってください。セラミック発振子でもほとんどの場合に動作しますが、偏差が大きいと動作が不安定になります。

 ATtiny45 では内蔵 RC 発振を使います。PC 接続時に PC からの USB 信号を使って同期します。UART をソフトウェアで実装しているため、高速通信はできません。TxD, RxD を反転すれば、RS-232C 回線に直結できます。
(1200 - 4800bps, 8N1固定)

CDC-232 for ATtiny45-20

               
mini-B コネクタによる製作例

 ATtiny2313 ではプログラム領域が狭いため、ホストPC からの通信設定機能を一部省いてあります。
(600 - 38400bps, 8N1固定)



CDC-232 for ATtiny2313-20

 ATmega8/48/88 では内蔵の UART が PC から自動設定されます。制御線(RTS/DTS)も使えます。
(600-38400bps, 7/8, N/E/O, 1/2)



CDC-232 for ATmega8/48/88-20


 RS-232C 回線に接続するには、信号反転とレベル整合が必要になります。MAX232 などの専用 IC を使う方法が一般的ですが、つぎのような簡易回路で代用することもできます。


 電圧の異なる MCU 回路へ接続する場合は、信号線を通してのリーク電流が問題になります。信号波形が乱れたり、保護ダイオードを通じて他方の MCU が動作することがあります。ダイオードとプルアップ抵抗での対策が、完全ではありませんが簡単です。

テンプレートのpondt