JH1LHVの雑記帳

和文電信好きなアマチュア無線家の雑記帳

スポンサーリンク

ARDUINO CW KEYER を試してみた ~その18~

前回の「Lチカ」に引き続き、今回は「ARDUINO CW KEYER」のスケッチを ATmega1284P に転送してみます。

Lチカのスケッチが問題なく転送できたので、「ARDUINO CW KEYER」のようにデータ量が大きいものでも簡単に転送できるだろうと気楽に考えていました。ところが、シリアル転送中にエラーが続出し、すっかりハマってしまいました。

そのため、ウェブで解決策を探したり、オシロスコープで波形を確認したりと、色々試行錯誤を繰り返しました。その結果、問題の原因が判明しました。

ATmega1284P のピン配置が影響して、ノイズがシリアル通信を妨害していたようです。具体的には、クロック(Pin 12、13)の隣にあるピン(Pin 14)が RX として使用されており、このクロック側のノイズが RX に影響を与えていたようです。その結果、データ転送中にプロトコルエラーが発生してしまっていました。

そこで、RX 側にローパスフィルタ(10kΩ の抵抗と 100pF のコンデンサ)を追加してみました。その結果、これまで悩まされていた書き込みエラーが嘘のように解消し、データを一発で転送できるようになりました。

さて、ここからは「ARDUINO CW KEYER」シールドと ATmega1284P の接続についての話になります。

 

写真左側の「ARDUINO CW KEYER」シールドと、右側の 1284P が乗ったブレッドボードをジャンパワイヤで接続します。

シールドと 1284P の実際の接続は以下のとおりです。



■ 「ARDUINO CW KEYER」シールド、ATmega1284P ピン番号対応表

 Keyer シールド   ATmega1284P   
 RESET   9   
 5V   10   
 GND   11   
 Vin   30 (AVCC)   
 A0   40   Speed VR 
 A1   39   Button 
 A3   37   PS2 DATA 
 A4   23 (SDA)   I2C SDA 
 A5   22 (SCL)   I2C SCL 
 -   14 (RX0)   FT232RL TX 
 -   15 (TX0)   FT232RL RX 
 D2   3   Left Paddle 
 D3(D10)*  16 (INT0)   PS2 Clock 
 D4   5   Speaker 
 D5   6   Right Paddle 
 D11   17   TX Key 1 
 D12   18   TX Key 2 

※ keyer シールドのピン配置は Arduino Uno に合わせています。
 (Arduino Uno の D3 には、Atmega1284p の D10 を接続しています。 )

※ Arduino Uno で PS2 Keyboard を使うときには、"keyer_pin_settings.h" の設定を pin = 3 に、1284p では pin = 10 に設定する必要があります。

※ 328P と 1284P ではピン配置に違いがあるため、実際に接続する時には注意が必要です。

 

取り急ぎ、「ARDUINO CW KEYER」 のスケッチが正しく書き込めたか確認したかったので、上の対応表の一部だけを接続して試験を行いました。

 

パドルを接続した試験も良好です。
メモリ機能も動作してます。

これで、「ARDUINO CW KEYER」のような大きなデータサイズのスケッチでも 1284P に書き込めることが確認できました。

やれやれ。