ISPプログラマーを使用したArduinoプログラミング

純粋なCまたはアセンブラーでArduino Unoをプログラミングすることは、Arduinoの標準プログラミング言語を使用することほど難しくありません。 同時に、生産性を大幅に向上させ、プログラムのサイズを削減できます。 次に、ISPプログラマとAVR Studio 6.2を使用してArduino Uno R3をアップグレードする方法について説明します。



したがって、 Arduino Uno R3Atmel Studio 6と互換性のあるISPプログラマー、1つのLEDと抵抗器、たとえば250オームが必要です。 Arduinoのプログラミングには、ユニバーサルAtmel ICEプログラマーを使用します。 先ほど言ったように、ArduinoのプログラミングにはどのISPプログラマも使用できます。 サポートされているプログラマーのリストは、Atmel Studioで直接確認できます。



Arduino Uno R3がATmega328P-PUマイクロコントローラーを使用していることは誰もが知っています。 それがプログラムです。 実際、プログラムを記録した後、Arduinoではなく、単にストラップの付いたマイクロコントローラーのみになります。 Arduinoブートローダーを消去するため。



残念ながら、 ATmega328P-PUマイクロコントローラーはJTAG経由の高度なデバッグをサポートしていません。 もちろん、ブレークポイントと出力値を使用してArduino MicroでArduinoをデバッグできます(受信する内容を明示的に確認する必要があります)が、このアプローチは必ずしも便利ではなく、さらに、Atmel Studioにははるかに高度なデバッグツールがあります(表示レジスタ状態、メモリ監視など)。 そのため、ISPを使用してコントローラーをフラッシュするだけに制限しています。



図に示すように、Atmel Studioを開き、 GCC C Exacutable Projectを選択します。



画像



プロジェクトが作成されました。 次に、プログラマーを接続する必要があります。 Atmel ICEを使用しています。 これは、ほとんどのAtmel AVRおよびARMマイクロコントローラーに適合する汎用プログラマーです。 プログラマーをコンピューターに接続し、Atmel Studioで[ ツール]-> [デバイスプログラミング]を選択します 。 重要! ロシア語のWindowsを使用している場合、ドキュメント内にプロジェクトを作成しないでください。通常、ロシア語の名前のフォルダーを使用します。 ディスク上にキリル文字を含まない名前で別のフォルダーを作成することをお勧めします(例:D:\ myprog)。 また、管理者権限でスタジオを実行することを忘れないでください。



画像



開いたウィンドウで、次のオプションを選択します:ツール-この場合Atmel ICEのプログラミング\デバッグ用デバイス、デバイス-プログラムするマイクロコントローラー、インターフェース-プログラマーがマイクロコントローラーをフラッシュ/デバッグするためのインターフェース、この場合はISPのみが使用可能



[読み取り]ボタンをクリックして、デバイス識別子とその動作電圧を取得します。 Arduinoが正しく接続されている場合、デバイス番号(0x1E950Fおよび電圧4.9Vなど)を取得する必要があります。



適用をクリックします。 その後、次の図に示すように、プログラマーの設定が表示されます。



画像



さらに、次のアクションを実行します。 ISPクロックを250に変更します。次に、「メモリー」セクションに移動して、「 今すぐ消去」ボタンをクリックします。 重要! このステップの後、ブートローダーが削除されるため、Arduino IDEでArduinoを使用できなくなります。



画像



これで、すべてのプログラミングの準備が整いました。 LEDを点滅させるための小さなプログラムを書きましょう。

LEDをブレッドボードに挿入し、電流制限抵抗器を介して接続します。 LEDのプラスのタブをArduinoのデジタル出力5に接続します。



次に、マイクロコントローラーのどのレッグがボード上の出力に対応するかを把握する必要があります。 これにはデータシートが必要です。



画像



Arduinoの6番目のピンを使用してLEDを制御するため、PORTDレジスタと、マイクロコントローラーの11番目のレッグに電圧を供給する5番目のビットを使用します。



プロジェクトコードファイルに次のコードを配置します。



#include <avr/io.h> #define F_CPU 16000000UL //16MHz #include <util/delay.h> int main(void) { DDRD |= 1<<6; PORTD &= ~1<<6; while(1) { PORTD |= 1<<6; _delay_ms(100); PORTD &= ~1<<6; _delay_ms(100); } }
      
      





「Ctrl + Alt + F5」を押すか、メニューから「デバッグ ->「デバッグなしで開始 」を選択します。 LEDが点滅します!



それだけです、実際には...ファームウェアの速度とプログラムのサイズに注意してください。 この例では、コントローラーメモリの0.6%である約186バイトを使用します。



画像







All Articles