インストールして使い始めたばかりの Atmel Studio 7 でプログラムを書いています。Arduino 用のスタジオをセットアップし、サポートされているチップのライブラリに Atmega128 を追加しました。すべてが良いです。SoftwareSerial ライブラリを使用してコンパイルしようとすると、Atmega128 と Atmega64 は SoftwareSerial をサポートしていないというエラーが表示されます。どうしてこれなの?このAVRがatmega328などと大きく異なる点は、ライブラリをサポートしないことです. atmega128でSoftwareSerialまたはSoftUartを使用するためのより良いアプローチはありますか? ありがとう
2 に答える
私の調査によると、Arduino ライブラリとセットアップを使用している間、含まれている SoftwareSerial ライブラリは atMega64 と atMega128 をサポートしていません。これは、これらのチップの PIN と割り込みが異なるためです。この例を変更することで、atMega128 の他の GPIO ピンにソフトシリアルを正常に設定できました。この例は送信専用です。割り込みの設定とクロッキングが含まれるため、受信部分の作業を続けています。覚えておくべき重要な注意事項は、クロック設定がプロジェクト全体で一致していることと、シリアル ボーが正しく設定されていることを確認することです。いくつかの異なるボーレートを使用してコードをテストしました。
初心者向けの補足として、Arduino を使ったテストは素晴らしいものであることがわかりました。ただし、カスタム ビルドの C プロジェクトに移行しようとすると、Arduino プロジェクトからクリーンな C プロジェクトに移行することは非常に困難です。私の意見では、C を学習し、Atmel Studio 環境内でテストを開始し、Arduino から離れる方がほとんど簡単です。これは、プログラミングを始める人に役立ちます。
次のコンパイル エラーが発生しましたThis version of NewSoftSerial supports only 20, 16 and 8MHz processors
か?
これは、cpp ファイルのこれらの定義に由来します。F_CPU を 8000000 に定義し、実際にレジスタを設定してそのクロック速度にすることを確認すると、うまくいくかもしれません。一部のプロセッサは、デフォルトでより遅いクロック速度を使用します。ハードウェアのマニュアルを参照してください。
NewSoftwareSerial.cpp ファイルを処理する前に F_CPU を定義する必要があることに注意してください。D スイッチを使用して、コマンド ラインで直接定義を作成できます。
#if F_CPU == 16000000
[snip]
#elif F_CPU == 8000000
[snip]
#elif F_CPU == 20000000
[snip]
#else
#error This version of NewSoftSerial supports only 20, 16 and 8MHz processors
#endif