Arduinoの代替配線-BASCOM-AVR

まあ、私はあなたの配線のこの1つが好きではありません。 そして、何らかの理由で、彼は私を非常にゆっくりとコンパイルし、その後、ファームウェアの前に長い間考えます。
コードエディター、コンパイラー、デバッガーシミュレーターを組み合わせたAVRコントローラーをプログラミングするための代替環境についてお話します。 さらに、最近のバージョンでは、不必要なジェスチャーのない環境をArduinoブートローダーで使用できます(つまり、ボードを変更したり、ブートローダーをフラッシュしたりすることなく)



設置

Offsiteに移動するか、トピックの最後にある2番目のリンクをクリックするだけです。環境のデモバージョン(30Mb)がすぐにロードを開始します。 デモは、コンパイルされた重みが4Kbを超えないプロジェクトを収集できることを意味するだけです。 ほとんどのプロジェクトでは、これで十分です(特にAttiny2313の場合は特にそうです )。そうでない場合は、 rutracker最新バージョンのクラックを購入する必要があります
インストールは完全に正常です。誰かがWin7以降で起動しない場合は、互換モードをXPに設定します。 ぶどうの下で完璧に機能します。 実際には、インストールする必要はありません。フォルダをコピーするだけで、非常にポータブルなバージョンです。

使用する

メインウィンドウ:

すべてのボタンにはヒントが用意されており、どこに何があるのか​​を説明する必要はないと思います。
最新バージョンでは、ロシア語に翻訳されており、オプション-環境-IDE-言語-ロシア語に含めることができます。

ここにはArduino Nanoボードのコピーがあります。ArduinoIDEが嫌いなので、デバッグ時に長い間使用していて、プログラマのコネクタから直接フラッシュしていました。

彼女のために何かを書きましょう。 最初に、MKのタイプ-Atmega168を設定する必要があります。これは次の行で行います。
$regfile = "m168def.dat" 

なぜこのような行、明確に考えます。 もちろん、[設定]-[コンパイラ]-[MK]でコントローラのタイプを設定できますが、本文ではより便利です。 プログラムフォルダ(c:\ Program Files \ MCS Electronics \ BASCOM-AVR \ *。Dat)で、さまざまなコントローラ用に呼び出されるファイルを確認できます。
クロック周波数を設定します。
 $crystal = 16000000 

16 MHz。 時間間隔(ウェイト)のカウントダウン以外には影響しません。 コントローラーの周波数を設定しません。 あなたはまだ自分でそれを公開する必要があります、私はヒューズブロックをプログラムします。 ただし、Arduinoの場合、これを気にすることはできません。
ポートを構成します。
 Config Portb.5 = Output 

ライセンスピンなし、ハードコアのみ。 特定のコントローラーのデータシートを見ると、ポート名が表示されます。
画像
PD1 = portd.1、pb4 = portb.4
各ポートを個別にインストールできますが、次のように記述するだけです:Config Portb = Output

無条件のサイクルを開始します(それなしでも可能です。その後、コントローラーの開始時にプログラムが1回だけ実行されます)
 Do Loop 


そしてその中に、例えば、LEDを点滅させます:
  Toggle Portb.5 

Portb.5は、arduinoのピン13と同じです。 対応(ポートのこのような名前に慣れている場合)は、次の場所にあります。
画像

構文は非常にシンプルで、基本的なものを思い出させます。 7種類の変数: ビット、バイト、整数、ワード、ロング、シングル、ストリング。
次のようにプログラムの冒頭で宣言されています: Dim A as Single
HD44780コントローラーの画面への非常に簡単な接続:
 Config lcd = 16*2 Config lcdpin = PIN, DB4 = PORTB.1,DB5=PORTB.2,DB6=PORTB.3,DB7=PORTB.4,E=PORTB.5,RS=PORTB.6 Config lcdmode = PORT 

そして、それらのテキストに対する同じ単純な結論:
 Lcd "Hello, habr! " ; time 

しかし、そのシンプルさにもかかわらず、カーソル制御、組み込みの文字エディター、キリル文字のサポートがあります。
シンプルなサウンド生成:
 Sound, Portb.0, 100, 500 

これは、500Hzの周波数と100msの持続時間でPB0に蛇行を発行することを意味します。
DTMFトーン生成:
 Dtmfout, 15, 100 

100ミリ秒の15番目のトーン。
UARTを使用します(両方とも鉄とソフトウェアを使用):
 Dim Name as String * 10 $Baud = 9600 Input "Hello, print you name", Name Print "Name: " ; Name 

割り込みの処理:
 On Int0 Button -   Config Int0 = Low Level -     Enable Interrupts -   Enable Int0 Button: Incr Cntr Return 

タイマー付き:
 Config Timer0 = Timer , Prescale = 64 -     On Timer0 Pulse: -   Enable Interrupts -   Enable Timer0 Pulse: Incr Cntr Return 


Arduinoファームウェア

最新バージョンでは、開発者がArduinaブートローダーのサポートを追加しました。いくつかの設定を行うだけで済みます。
オプション-プログラマー-ARDUINO 次に、com-portと速度を指定します。

私の場合、速度は正確に19200に指定する必要がありました。そうでなければ、ボードはフラッシュされませんでした。 arduino-1.0.1 \ hardware \ arduino \ boards.txtのファイル内のすべてのボードのパラメーターを表示できます。
ちなみに、メモリサイズと水晶周波数もあります。

 nano.name=Arduino Nano w/ ATmega168 nano.upload.maximum_size=14336 nano.upload.speed=19200 nano.bootloader.low_fuses=0xff nano.bootloader.high_fuses=0xdd nano.bootloader.extended_fuses=0x00 nano.build.mcu=atmega168 nano.build.f_cpu=16000000L 


代替のロード方法(組み込みのフラッシャーの速度が遅いのが好きではありません)は、最も強力なコンソールプログラマーであるAVRDUDEを使用することです。
ここから最新バージョンたとえばavrdude-5.11.tar.gzをダウンロードします。 プログラムフォルダーに解凍します。
[ オプション]-[プログラマー]-[外部プログラマー]に移動し、後のプログラムで実行可能ファイルへのパスを指定します。
「C:\ Program Files \ MCS Electronics \ BASCOM-AVR \ ARVDUDE \ avrdude.exe」
そして、以下の-この形式のパラメーター:
-C "C:\ Program Files \ MCS Electronics \ BASCOM-AVR \ ARVDUDE \ avrdude.conf" -p atmega168 -P com2 -c arduino -b 19200 -U flash:w:{ファイル}:i
名前からすべてが明らかであり、構成の場所を示し、コントローラーのタイプ、ポート、プロトコル、速度、フラッシュの操作、記録、およびファイルを示します。 Use HEX fileにチェックマークを付けます。
最大の喜びのために、 コンパイル後にアイテムProgramに注意することもできます-1つのボタンでコンパイルおよびフラッシュします。
アセンブリ中、プログラムは使用可能なフラッシュの消費量を表示します。

そして、ARVDUDEが開始します。


また、選択したコントローラーのピンのヘルプを有効にすることができます(デフォルトがあり、そうでない場合は、 表示-ピンレイアウトがオンになります)。

ピンにカーソルを合わせると、ピンの名前と説明が表示されます。
これで十分でない場合は、データシートをダウンロードして、 表示 -PDF ビューアーを有効にすることができます。


もう1つの優れた点は、鉄、ブレークポイント、およびステップごとの実行のシミュレーションを備えた組み込みデバッガーです。

赤いマイクロ回路のボタンを押すとオンになります。もちろん、最初にプログラムをコンパイルする必要があります。

良い面としては、bascomでコンパイルされたコードははるかに小さく、多くの場合Arduino IDEからのコードよりも高速に実行されます。
たとえば、標準の点滅(LEDの点滅):
Arduinoの場合:
 void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); digitalWrite(13, LOW); } 

3078(!!!)バイトのサイズの16進数にコンパイルされ、210 kHzの周波数でピンを引きます:


そして、バスコムでは、次のように書かれています。
 $regfile = "m168def.dat" $crystal = 16000000 Config Portb.5 = Output Do Toggle Portb.5 Loop 

これは、553バイト(5倍小さい)の16進数を占有し、1.6 MHzの周波数で既にフラッシュします。


参照:

Source: https://habr.com/ru/post/J151544/


All Articles