アルゴリズム ビルダー プログラミング環境。 avr のアルゴリズム ビルダー、入門グラフィカル アセンブラ アルゴリズム ビルダーのプログラミング ダウンロード トレント
AVR アーキテクチャを備えたマイクロコントローラ用のアプリケーションを開発するためのグラフィカル プログラミング環境。
Algorithm Builder は、プログラム コードの作成とチェックの全サイクルを実行できる強力なツールです。 この環境には、グラフィカル エディタ、アルゴリズムをデバッグするためのマイクロチップ シミュレータ、コンパイラ、コードをチップにロードするためのインサーキット プログラマが含まれます。 このプログラムはアセンブラーの国内版であり、経験豊富な開発者とデバイスのファームウェアをマスターし始めたばかりの開発者の両方に適しています。
アルゴリズムの作成は、符号を考慮したマルチバイト値の操作に基づいて、アセンブリ レベルまたはマクロ レベルで行うことができます。 さらに、マクロ演算子には、最も一般的なコマンドのセットが含まれています。
開発されたすべてのプログラムは分岐ツリーのブロック図の形式で表示され、遷移ネットワークはベクトル形式でグラフィック表示されます。 条件に従って、プログラム コード内のどこかに移動する必要がある場合は、そこにベクトルを描画するだけで十分です。 このようにして、ソフトウェアは複数のラベル名から解放されます。 ブランチが長すぎる場合には、ブランチをラベル名にアドレス指定するオプションが常にあります。 開発者によれば、このような論理構造が明確になることで、コードの作成時間が大幅に短縮され、エラーの数が減少します。
メイン ウィンドウでは、グラフィック エディタと同様に、必要なオブジェクトを配置し、それらの変更、挿入、移動などを行うことができます。 画面の別の部分に、すべての定数と変数のリストを含むウィンドウがテーブルの形式で形成されるため、アルゴリズムは追加のエントリから解放されます。 周辺デバイス (UART、SPI、ADC、タイマー) のパラメータを設定するために、ドロップダウン ウィンドウ インターフェイスを備えた特別な要素が提供されています。 コンパイラは、選択されたデバイス動作パラメータを提供する一連の命令を独立して生成します。 さらに、Windows ANSI コードからロシア語の英数字 LCD コードへの自動変換がサポートされています。 このプログラムは、ATtiny、ATmega、AT90 などの幅広いマイクロコントローラー ファミリをサポートしています。
シミュレータは、さまざまなレジスタ、メモリ セル、タイマーで発生するすべての変更を表示します。 シミュレーションは、ブレークポイントまたは選択した領域まで (関数の入力の有無にかかわらず) 段階的に実行できます。
インサーキットプログラマを操作するには、マイクロコントローラをコンピュータのCOMポートに接続するための簡単なアダプタを個別に組み立てる必要があります。 また、USBコネクタによる接続も可能です。 プログラマはコアの再プログラムの数をカウントし、そのカウンタをチップ自体に保存します。
別のアダプタを使用したコア上のモニタ デバッグ モード (すべての図はソフトウェア ドキュメントで入手可能) により、任意のブレークポイントで実際の水晶の内部状態をモニタできます。 コントローラとコンピュータ間の通信では、ユーザーの選択により出力が 1 つだけ割り当てられます。 オンチップ デバッグは、SRAM メモリを備えたあらゆるタイプのチップに適用されます。
Algorithm Builder には明らかな利点があるにもかかわらず、アマチュア無線コミュニティではほとんど知られていません。 これは、2010 年まではビジュアル プログラミング環境が有料であり、無料のデモ版ではコードが 2 キロバイトに制限されていたことが一因となっています。 現在、このソフトウェアは完全に無料で配布されています。 プログラムがインストールされているフォルダーは、他のメディアにコピーしてポータブルに使用できます。 ソフトウェアにはユーザーマニュアルが付属しています。 この記事では、数多くの簡単な作業について説明し、USB および COM ポートのプログラマの図を示します。
アルゴリズム ビルダー プログラムの作成者は、ニジニ ノヴゴロド出身の民俗工芸家ゲンナジー レオニドヴィッチ グロモフの指導の下、国内のプログラマーのグループです。 このプログラムは現在も開発が続けられており、新しい機能が追加されており、いくつかのライブラリが作者の Web サイトに掲載されています。
Algorithm Builder プログラム インターフェイスとユーザー マニュアルはロシア語と英語で提供されています。
このソフトウェアは、Microsoft Windows 95、98、2000、NT、ME、XP、Vista、および 7 オペレーティング システムと互換性があります。
番組配信:無料
今ではアマチュア無線家でマイコンに触れたことがない人はいないと思います。 遅かれ早かれ、こういうことは起こります。 初めてマイコンを使った回路を見たとき、「ああ、まだ組み立てられないな」と思って、すぐにブラウザのページを閉じました。 しかし時が経ち、マイコンを使った回路が増えてきたので、ついに始めることにしました。 実際、すべては私が思っていたほど難しくないことがわかりました。
まず、マイクロコントローラー (MK) とは何なのかを理解しましょう。 本質的に、これは単純なタスクを実行するように設計された小型コンピューターです。 マイクロコントローラーの動作に必要なものはすべて 1 つの筐体に収められています。 マイクロコントローラーには、入出力ポート、タイマー、通信インターフェイスなどのさまざまな周辺機器があります。 マイクロコントローラには、RAM (ランダム アクセス メモリ)、FlashROM (プログラム メモリ)、EEPROM (不揮発性メモリ) の 3 種類のメモリがあります。
マイクロコントローラーと従来のマイクロ回路の主な違いは、マイクロコントローラーは工場でインストールされた厳密なロジックに従って動作するのではなく、プログラムされることです。 プログラムは従来、コンピュータ上の特別な環境でいずれかのプログラミング言語で書かれ、その後機械語に翻訳(コンパイル)されてコントローラのメモリに書き込まれます。 このコースでは、すべてが少し異なります。プログラムは書かれませんが、文字通りフローチャートの形で描かれます。 このアプローチのおかげで、プログラムはより明確に見え、従来のプログラミング手法と比較してプログラム開発時間が 3 ~ 5 倍短縮されます。
アルゴリズムビルダー - プログラミング環境
Algorithm Builder は、デバッグ プロセスを含むアルゴリズムの入力から始まり、メモリへのプログラムの書き込みで終わる完全な開発サイクルを実行します。
プログラムインターフェイスの簡単な概要から始めましょう
メインメニュー
- ファイル。プロジェクトや個々のアルゴリズムを開いたり、保存したり、閉じたり、プログラムを終了したりするために使用します。
- 編集。アルゴリズムの編集に関連するアクション: 切り取り、コピー、ハイライトなど。
- 画面。変数を使用したスイッチング アルゴリズム/テーブル (詳細は後述) + 操作と条件のテンプレート。
- 検索。ここで説明する必要はありません。
- 要素。アルゴリズムは特別な要素から抽出されます。 テキスト、頂点、フィールド、ラベル、条件、使用される (無条件の) 遷移ベクトル、カスタマイザー。私たちは学習の過程でそれらすべてを知ることになります。 メニューにはさらに重要な項目がいくつかあります。 非アクティブ化、マクロ、割り込み。 非アクティブ化- このコンポーネントはコンパイルされません。 大きい- マクロを作成します。 割り込み- すべてのマイクロコントローラー割り込みの名前のリストが含まれます。 この機能については次のレッスンで学習しますが、ここでは、これが仕事にとって非常に重要で必要なものであることだけを述べておきます。
- プログラム。プログラムに関連するアクション - コンパイル (機械語への翻訳)、プログラムのシミュレーション、コントローラー メモリ (フラッシュおよび EEPROM) の読み取りなど。
- オプション。プロジェクトと環境の設定。
- ?. Algoritm Builder の情報とヘルプ。
ツールバー
説明は必要ありません。 パネル要素の上にマウスを移動すると、ツールチップが表示されます。
プロジェクトを開く
ここには特殊性があります。 同時に 2 つのプロジェクトを開くことはできません。新しいプロジェクトを開いたり作成したりするには、古いプロジェクトを閉じる必要があります。 プロジェクトを開いた後は、別のアルゴリズム ファイルを開いたり作成したりすることしかできません。 プロジェクト ファイルの拡張子は .alp で、別のアルゴリズム ファイルの拡張子は .alg です。
変数と定数の操作
これは特別なテーブルの形式で構成されています (メニューまたはツールバーのキーを使用して F12 キーを使用して切り替えることができます)。 したがって、アルゴリズム自体は不要なエントリから解放されます。
膨大な数のラベルのおかげで、プログラムのある部分から別の部分への移行が可能になるため、コードが非常に乱雑になり、プログラムの明瞭さが失われます。 アルゴリズム ビルダーでは、矢印 (ベクトル) を使用してトランジションがはるかに簡単になります。。 ただし、名前付きラベルに沿った遷移も可能です。
プログラム動作のシミュレーション
シミュレーターは、仮想マイクロコントローラー内で発生するすべての変更を表示します。 プログラムの動作を確認するために、マイコンを購入する必要もありません。 シミュレーションは、設定されたブレークポイントまたは選択した領域まで (関数の入力の有無にかかわらず) 段階的に実行できます。
デバッグ
Algorithm Builder には、実際のマイクロコントローラーのメモリの内容を指定したポイントで観察できるオンチップ デバッグ システム (オンチップ デバッグ) が備わっています。 この場合、ユーザーの選択により、コンピューターとの通信に 1 つのマイクロコントローラー レッグのみが使用されます。 モニターのデバッグは、ほぼすべてのマイクロコントローラーに適用できます。 これは、debugWIRE プロトコルのソフトウェア バージョンです。
では、なぜ Algorithm Builder はアマチュア無線家の間でほとんど知られていないのでしょうか?まず、2010 年までこのプログラムは有料でした。 現在、このソフトウェアは完全に無料で配布されています。 第二に、プログラムに対する公式サポートの欠如です。 Builder を使用しているメーカーの apnot は 1 つも見つかりません。 このプログラム専用のインターネット リソースは片手で数えられるほどです。
少し話してみる価値はある 必要な材料と道具
まず必要なのは はんだごて。 アマチュア無線のメインツール。 はんだごての出力は 30 ~ 60 W の範囲にする必要があります。 なぜそれ以上はないのでしょうか? 強力なはんだごてはさらに加熱し、基板の配線や使用部品を損傷します。 そして、それははんだ付けにはそれほど便利ではありません - そのようなはんだごてははるかに大きくて重いです。
プログラムをマイクロコントローラーにロードするには、次のものが必要です。 プログラマー- 最も単純なバージョンでは、(LPT および COM ポートごとに) 少数の抵抗とダイオードのみで構成されます。 コンピュータに COM または LPT ポートがない場合は、DealExtreame または (検索クエリ) で USB プログラマを注文できます。 "avr プログラマー";費用は約4〜6ドル)。 次回はプログラマーの選定と組み立てについて書きます。
記事の資料は、モスクワ国立工業大学 (GOU MGIU) のオートメーション・情報学・制御システム学部 (AIiSU) で作成されました。
(2011 年以降、MGIU は連邦州高等専門教育予算教育機関「MGIU」と呼ばれるようになりました)。
著者: クリュコフ A.I.、シュブニコワ I.S.、トロイコフ S.M.
AI&CS学科は、35年以上にわたり、自動車および航空宇宙技術、機械工学、ビジネス向けの電子、マイクロプロセッサ、コンピュータ、ロボット、メカトロニクスおよび情報制御システムの開発と運用の分野の専門家を訓練してきました。 同部門の従業員の研究作業は、人工知能技術に基づく意思決定支援システムの開発、複雑なシステムを管理するプロセスの分析と合成、機器の故障の監視とインテリジェントな検出に関連する分野で行われています。 この部門の重要な科学活動の分野は、車両の自動および電子システムの分野で研究を行うことです。 |
Algorithm Builder は他の環境とは一線を画しており、そこに重点を置きます。 このアプリケーションのハイライトは、無料であるということではなく、その中のコードが書かれておらず、アルゴリズムのフローチャートの形式で描画されているため、アプリケーションの開発時間が大幅に短縮されていることです。 この環境は、デバッグを含むアルゴリズムの入力から始まり、水晶の回路内プログラミングで終わる完全な開発サイクルを提供します。 その結果、プログラム全体の論理構造が完全に明らかになります。
Algorithm Builder 環境でのソフトウェア開発は、最終的にはこのようなタスク ブロックを形成し、それらを平面上に配置し、条件付きおよび無条件の遷移からブロック間の接続を確立します。
Algorithm Builder 環境を操作するためにマニュアル全体を書き直さないよう、特にアプリケーションは国産であり、以下の内容が含まれているため、ご自身でマニュアルを読むことをお勧めします。 例に基づいたロシア語での詳細な説明彼との仕事について。 個人的な経験に基づいて、このマニュアルはこのソフトウェア製品を完全に理解し理解するのに十分であると自信を持って言えます (ちなみに、ボリュームはそれほど多くありません。学習時間はわずか 20 ~ 30 分です)。
アルゴリズム ビルダーは http://algrom.net/russian.html からダウンロードできます。 制御プログラムの開発プロセスは次のサイトでご覧いただけます。 リンク。 したがって、ここでは、説明した開発環境で完成したプログラムを詳細なコメントとともに提示します。
まず、[オプション]/[プロジェクト オプション]メニューで水晶タイプ (この場合は Atmega8) を選択し、そこでクロック周波数を 8,000,000 Hz (8 MHz) に設定する必要があります。 次に、起動時にクリスタルをリセットします (要素/割り込み/リセット)。 次に、Elements/Customer…/Stack Pointer (SP) を選択してスタックを初期化します。ウィンドウが開きます。[OK] をクリックして同意するだけです (図 2)。
米。 2. スタックカスタマイザー
次のステップは、USART トランシーバーを初期化することです (略語に「S」という文字が表示されても驚かないでください。これは UART のより最新のバージョンであり、データを送受信する機能が UART とは異なります)。非同期モードのみですが、同期モードでも)、Elements / Customizer メニュー... /USART を選択します。 開いたウィンドウ (図 3) の「レシーバー」セクションで、「有効」(データ受信機をオンにする) および「完全割り込み有効化」(データ受信時の割り込みを有効にする) の横のボックスにチェックを入れてから、「倍速」の横のボックスにチェックを入れます。 、文字サイズを Character Size: 8 – bit に設定し、データ転送速度を Baud Rate = 9615 bps に設定します (メニューでデータ転送速度の選択をクリックすると、9600 bps を選択する必要があります。9615 bps は、クロック周波数を 8 MHz に再計算します)。
米。 3. USART コンフィギュレーター
プログラムの本体は、一連の制御コードのチェックで構成されます (リスト 1)。 このアイデアは、PC が UART 経由でオペレーション コードを送信し、MK がそれを受信して、ファン ブレード ドライブとサーボ ドライブ上で適切な制御アクションを生成するというものです。 このようなコードは合計 3 つあります (任意のコードを思いつくことができます)。
最初の 2 つのコードですべてが明確であれば、3 番目のコードはそれほど単純ではありません。$A1 はサーボ ドライブにアクセスするためのコマンドにすぎず、回転角度コードを取得する必要があります。 実験的には、$05AF から $154F の範囲であることが判明しました。 また、PC から送信し、それに応じて MK から下位バイトから受信します。 また、コマンドの実行中は USART 経由でのデータ受信の中断も無効にします。そうしないと、データが「混乱」してしまう可能性があります。
リスト 1
リスト 2 に、遅延サブルーチン (Delay) のコードを示します。 遅延時間は、コマンドを正確かつ完全に処理するために必要であり、プログラムを N サイクルループすることによって形成されます (試行錯誤により、この場合、最も成功したサイクル数は 16 進数で 84FF であると計算されました)。
リスト番号 2
UART 経由のデータ受信が終了すると、USART_Receive_Complete 割り込みが発生します (プログラム本体で現在無効になっていない場合)。この割り込みは、Elements/Interrupts/USART_Receive_Complete メニューを通じてコード内で設定できます。 ハンドラーの本体では、その中で使用されるすべてのレジスターをスタックに保存し、ハンドラーの終了時にスタックから復元する必要があります。 また、このハンドラーでは、ステータス バイト (UCSRA レジスタ) を取得して、データのエラーをチェックすることもできます。もちろん、UDR レジスタからデータ自体も取得できます (リスト 3)。
リスト 3
サーボドライブの回転角度は、周期を一定に保ちながら供給されるパルスの幅によって異なります(周期は20ms、制御パルスの持続時間は0.8〜2.2msですが、これらの値はサーボによって異なります)。多少異なる場合があります) これには、サーボ ドライブの回転角度のサブルーチンが必要です (リスト 4)。 制御パルス時間とポーズ時間はディレイサブルーチンと同様に設定します。 上で書いたように、8 MHz の水晶周波数では、パルス時間が $05AF から $154F の範囲のコードによって指定されることが実験的に決定されました。 したがって、期間全体の時間 - $9E3C (これも実験的に決定) がわかれば、期間の継続時間とパルスの継続時間の差として休止時間を計算できます。 残っているのは、遅延サブルーチンと同様に、パルス時間とポーズ時間を順番に計算し、そのような信号を数回繰り返すことだけです (この場合、信号を $10 回、つまり 10 進表記で 16 回繰り返しました) )
リスト 4
制御プログラムのコードを書いた(アルゴリズムを描いた)後、それをコンパイルしてマイクロコントローラーにフラッシュする必要があります。 プログラムは、Ctrl+F9 を押すか、プログラム/コンパイル メニューを通じてコンパイルできます。 コンパイルが成功すると、情報ウィンドウが表示され、MK の占有メモリ量が示されます。
次に、コンパイル結果 (プログラム ソースと同じフォルダーにある、先頭に「EE_」プレフィックスのない *.hex 拡張子のファイル) をコントローラーにフラッシュする必要があります。 これは、同じく無料の AVR Studio パッケージに含まれている無料の AvrProg ユーティリティを使用して行うことができます。 mymcu.ru サイトまたは atmel.com (英語サイト) からダウンロードできます。
MK ファームウェアをフラッシュするためのユーティリティに加えて、プログラマーも必要です。 それを購入するか (簡易バージョンは比較的安価です)、自分ではんだ付けすることができます。
米。 4. LPTプログラマ回路 |
自己アセンブリ用のプログラマのもう 1 つのオプションは USB プログラマです (図を図 5 に示します)。もちろんこれはより複雑ですが、将来的にはさらに便利になる可能性があります。 ただし、「ただし」が 1 つあります。それを組み立てるには、1 回だけではありますが、LPT プログラマーが必要になります。 FUSE ビットをフラッシュするには、プログラマ自体の制御コントローラをフラッシュする必要があります。 SPIEN、CKOPT、SUT0ビットをプログラム(“0”に設定)する必要があります。 通常、MK は工場から出荷されます。 新しいものには SPIEN ビットがすでにプログラムされています。 BODEN ビットをプログラムする (「0」に設定する) ことも望ましい (必須ではありません)。 残りのビットはプログラムしない (「1」に設定する) 必要があります。 これには、Codevision AVR V2.03.4 アプリケーションが必要になる場合があります。 USB プログラマの組み立てに関する詳細な説明は、ここで読むことができます。
特徴的な機能:
- 対応OS:Windows 95/98/2000/NT/ME/XP
- ライセンス: フリーウェア
- インターフェース言語: 英語、ロシア語
- プログラミング言語: グラフィカルアセンブラ
- 主な機能:
- グラフィカルプログラムコードエディタ
- コンパイラ
- 導入したアルゴリズムをデバッグするためのシミュレーター
- シンプルなアダプターを使用した COM ポート経由のプログラミング (7 個の抵抗、3 個のダイオード。図についてはドキュメントを参照)
- さらに単純なアダプター (1 つまたは 2 つのダイオード、2 つまたは 4 つの抵抗、図についてはドキュメントを参照) を使用してチップ上のアルゴリズムをデバッグする
- インターネットサポートアドレス: http://algrom.net/russian.html
説明:
Algorithm Builder は、AVR MK 用の無料環境 (フリーウェア配布条件) であり、ファームウェア開発の全サイクルを提供します。 アルゴリズム入力、デバッグ、インサーキットプログラミングなどの段階。 プログラム開発は、アセンブラ レベルとマクロ レベルの両方で実行でき、任意の長さの交互量を扱うことができます。 これにより、プログラミング機能が高級言語に近づきます。
Algorithm Builder の特徴は、ツリー構造のアルゴリズムの形式でプログラムをグラフィカルに入力できることです。 その結果、プログラム全体の論理構造が完全に明らかになります。 このプログラミング方法は人間の知覚の性質に可能な限り近いため、従来のアセンブラーと比較して学習がはるかに簡単です。 従来のアセンブラと比較して、ファームウェアの作成時間は 3 ~ 5 倍短縮されると予想されます。
この環境は、Windows 95/98/2000/NT/ME/XP で動作するように設計されています。 エディターを通常に動作させるには、「Courier」フォントが必要です。
ダウンロード用のファイル:
- AT90シリーズ
- AT90CAN128、AT90PWM3、AT90S1200、AT90S2313、AT90S2323、AT90S2333、AT90S2343、AT90S4414、AT90S4433、AT90S4434、AT90S8515、AT90S8535、 4、AT90USB82、AT90USB128、AT90USB162
- ATメガシリーズ
- ATmega8、ATmega16、ATmega32、ATmega48、ATmega64、ATmega88、ATmega103、ATmega128、ATmega161、ATmega162、ATmega163、ATmega164P、ATmega165、ATmega168、ATmega323、ATmega324P、ATmega325、ATmega328P、メガ603、ATmega640、ATmega644、ATmega644P、ATmega645、ATmega1280、ATmega1281、 ATmega1284P、ATmega2560、ATmega2561、ATmega3250、ATmega6450、ATmega8515、ATmega8535
- ATtiny
- ATtiny10、ATtiny11、ATtiny12、ATtiny13、ATtiny15、ATtiny22、ATtiny24、ATtiny25、ATtiny26、ATtiny28、ATtiny44、ATtiny45、ATtiny84、ATtiny85、ATtiny261、ATtiny461、ATtiny861、 ATtiny2313
アルゴリズム演算子は 2 つのグループに分けられます。
最初のグループは、1 つの基本的なマイクロコントローラー命令を実装する基本的な演算子で構成されます。 このような演算子を使用したプログラミングにより、アセンブラ レベルでのプログラム開発が保証されます。 アルゴリズムでは、これらの演算子は通常の (太字ではない) フォントで表示されます。
2 番目のグループはマクロ演算子で構成され、コンパイル時に必要な基本マイクロコントローラー命令のセットに変換されます。 マクロ演算子を使用すると、マルチバイト変換などのより複雑な変換を便利な形式で実行できます。
アルゴリズム演算子は主に「Field」オブジェクトで記述され、条件分岐は「Condition」オブジェクトで実装され、無条件ジャンプは「Object」で実装されます。
JMP ベクトル。」 演算子を記録する形式は、従来のアセンブラーとは大きく異なります。 これは視覚と機能の原理に基づいて構築されており、実行されているアクションの画像が含まれています。 ステートメントの記述は、コンパイラーによって受け入れられるパターンと一致する必要があります。
以下の表は、AVR マイクロコントローラで使用できるすべての基本演算子のテンプレートを示しています。 一部の単純なタイプのマイクロコントローラーには未知のセットが含まれていることに留意する必要があります。
演算子パターン内の「#」記号は、直接または代数式として表される定数を想定しており、「Rd」と「Rr」は作業レジスタ、「Pn」は入出力レジスタです。
演算子は表形式で表示されます。
オペランド コメント
R 作業レジスタ、標準、または作業レジスタセクションで宣言: (...)
# 絶え間ない (...)
SRAM Var SRAM セクションで宣言された変数: (...)
EEPROM Var EEPROM セクションで宣言された変数: (...)
[#] 直接アドレス指定可能な SRAM セル
[X] X によって間接的にアドレス指定された SRAM セル
[--X] プレデクリメントを伴う X とともに間接的にアドレス指定される SRAM セル
ポストインクリメントを使用して X で間接的にアドレス指定される SRAM セル
[Y] Y によって間接的にアドレス指定された SRAM セル
[--Y] SRAM セルが間接的にアドレス指定され、プリデクリメント付きの Y
ポストインクリメントを使用して Y で間接的にアドレス指定される SRAM セル
# バイトのアドレス オフセットを持つ Y で間接的にアドレス指定された SRAM セル
[Z] Z によって間接的にアドレス指定された SRAM セル
[--Z] 間接的にアドレス指定された SRAM セル、Z プリデクリメント
ポストインクリメントを使用して Z で間接的にアドレス指定される SRAM セル
# バイトのアドレス オフセットを持つ Z で間接的にアドレス指定された SRAM セル
P I/O レジスタ (...)
EE[#] 直接アドレス指定可能な EEPROM セル
(...) としてマークされたオペランドはマルチバイトとして宣言できます。 異なる形式のオペランドの置換が許可されます。 さらに、演算の結果を受け取るオペランドが他のオペランドより短い場合、演算の次元は最小値に制限され、そうでない場合は、欠落したバイトがゼロで埋められます。 符号が考慮される量の演算を正確に行うためには、両方のオペランドが同じ形式でなければならないことに留意してください。そうしないと、負の数値が歪む可能性があります。 マクロ条件のオペランドの形式は同じである必要があります。
間接的にアドレス指定するオペランドはシングルバイトのオペランドです。 間接アドレス指定を使用したマルチバイト操作には、その形式の変換が必要です。 これを行うには、エントリにコロンと形式宣言を追加する必要があります。次に例を示します。
#hAB3E->[Y]:単語
このようなマクロ ステートメントは、次の一連のステートメントに変換されます。
マルチバイト マクロ演算子では、右シフトを除き、アクションは下位バイトから開始されます (右シフト演算子の場合は上位バイトから)。 これを考慮すると、間接アドレス指定を使用してマクロ操作を作成する機能には制限があります。
下位バイトから開始する演算の場合、プリデクリメントされたオペランドを使用することはできません。例: [--X]:Word+24000
上位バイトから開始する演算 (右シフト) の場合、ポストインクリメント オペランドは使用できません。例: :Int24>>
さらに、AVR 命令セットには X レジスタに対するオフセット間接アドレス指定がないため、[X] オペランドを使用してマルチバイト マクロ演算子を作成することはできません (
)。 または [--X] を使用します。
マクロ操作の作成が不可能な場合、コンパイラは次のメッセージを表示します。
そのようなマクロ操作は作成できません」 (「そのようなマクロ操作は実装できません」)。
マクロ ステートメントは、「フィールド」オブジェクトのみに記述されます。 使用可能なマクロ演算子のテンプレートを表に示します。
テンプレートコメント
* -> * コピー
* + * 算術加算
* - * 算術減算
* & * ビット単位の AND 演算
* ! * ビット単位の OR 演算
* ^ * ビット単位の「排他的論理和」演算
* リセット (ゼロ書き込み)
* ++ インクリメント
* -- デクリメント
- * - ビット反転
* >> 論理右シフト
> * >> キャリー付き論理右シフト
± * >> 算術右シフト
<< * Логический сдвиг влево
<< * < Логический сдвиг влево с переносом
EEPROM に属するオペランドを使用する場合、コンパイラは読み取りおよび書き込みに必要なコードを自動的にロードします。 EEPROM に書き込みが行われる場合、コードには書き込みの終了を待つ処理が含まれることに注意してください。 実行時には数ミリ秒かかります。
コンパイルされると、マクロ ステートメントは基本的なマイクロコントローラー命令のセットに変換されます。 この場合、そのようなセットを実装するには、原則として中間レジスタ r16 および r17 が使用されます。 したがって、マクロ演算子を使用する場合、誤解を避けるため、これらのレジスタの使用は推奨されません。また、割り込み処理ルーチンでは、その内容をスタックに保存することをお勧めします。
マクロ演算子に即時定数を使用する演算が含まれる場合、この場合は、上半分で宣言された作業レジスタを使用することをお勧めします。 それ以外の場合は、中間命令を使用して定数の一部をレジスタ r16 にロードします。 これにより、コードのサイズが最大 2 倍に増加する可能性がありますが、そのような入力は誤りではありません。
マクロ操作によって生成されるフラグは、基本的なマイクロコントローラー操作のレベルでの同様の操作には不適切であり、移行条件としてのフラグの使用は正しくないことに留意する必要があります。
サイクルを実装するには、マクロ条件「R--」を使用すると便利です。 これには、シングルバイト レジスタのデクリメントと、結果がゼロ以外の場合の分岐が含まれます。
オブジェクト「ラベル」 – (ラベル)
これは、ステートメントのブロック内にある垂直方向のストロークと、ストロークの左側または右側にあるオプションの名前です。 ラベルは、条件付きおよび無条件の遷移が可能なアルゴリズム内の場所を示すことを目的としています。 これを入力するには、「オブジェクト\ラベル」メニュー項目を選択するか、「Alt+L」キーを押すか、ツールバーの文字 L のボタンをクリックする必要があります。 必要に応じて、特定のプログラム アドレスをラベルに割り当てることができます。これを行うには、名前 (存在する場合) の前に、このアドレスを定義する定数または代数式を記述する必要があります。 ラベル名の位置を逆にするには、「Tab」キーを押します。
サービスマークを中断します。
プログラミングを容易にするために、Algorithm Builder は特別なタイプのラベル、つまり割り込みサービス ラベルをサポートしています。 通常の方法で割り込みを処理するには、割り込みベクタのアドレスにある対応するサブルーチンへの無条件ジャンプ コードを配置する必要があります。 特別な種類のラベルを使用する場合、コンパイラーはこれらすべてを自動的に実行します。 これを行うには、ラベル (頂点) に標準の割り込み名を付け、「F2」キーを押してマクロ形成としてマークする必要があります。名前は太字で表示されます。 メニュー項目「オブジェクト\割り込みベクトル\...」を選択すると、同じ結果がより簡単に得られます。
少なくとも 1 つのそのようなラベルに遭遇すると、コンパイラーは割り込みベクトルの空きスペースを割り込みサービス ルーチン (「RETI」) からのリターン コードで埋め、対応する割り込みアドレスに、このラベルへの無条件ジャンプのコードを配置します。ラベル。
「頂点」オブジェクト – (ブロックの上部)
表示と目的の点では、マークとまったく同じですが、マークとは異なり、作業面上のブロックの位置を指定し、常にマークの始まりになります。 頂点を作成するには、「オブジェクト\頂点」メニュー項目を選択するか、「Alt+V」キーを押すか、ツールバーの文字 V のボタンをクリックするか、マウスの左ボタンをクリックして使用する必要があります。キーと組み合わせて、フィールド内の希望の場所の ボタンを押します。
Alt+Ctl+Shift。」
「条件」オブジェクト – (条件ジャンプ)
構造的には最も複雑です。 このオブジェクトは、条件付き遷移の実装を目的としています。 これは楕円形のアウトラインで、その中には遷移条件と可能なベクトルが終端に矢印が付いた破線の形で書かれており、その横にオプションのベクトル名があります。 ベクトルが適切にアドレス指定されるためには、その終端がラベル、頂点、または別のベクトルのセグメントで終了するか、アドレス指定されるラベルの名前を持つ必要があります。
ベクトルの編集は、方向キーと「Alt」キーを組み合わせて使用するか、マウスの左ボタンを押したまま「Alt」キーと組み合わせて使用します。 条件の編集からベクトル名の編集に移行し、その位置を逆に変更するには、「Tab」キーを押します。 新しいオブジェクトを入力するには、「オブジェクト\条件」メニュー項目を選択するか、「Alt+C」キーを押すか、ツールバーの文字 C のボタンをクリックする必要があります。
条件付きスキップ次ステートメント演算子。
「Condition」オブジェクトには 3 つの設計オプションがあります。
1. オブジェクト ベクトルが欠落しており、ベクトル名が欠落しているか、予約語「Skip」が含まれています。 次の例では、操作が実行されます。
「r1=r2」の条件が真の場合、「[X]->r2」はスキップされます。
「[X]->r2」
2. 逆条件が書き込まれ、ベクタが欠落し、スキップされる命令がベクタ名として入力されます。 この場合、オブジェクトは次のように解釈されます: 条件が true の場合にステートメントを実行します。 以下の例はまったく同じです。
「[X]->r2」
3. 後続の命令がショート無条件ジャンプ (RJMP) の場合、逆条件を記述することが許可され、この条件のベクトルは後続の無条件ジャンプとして解釈されるため、オブジェクトは次のように解釈されます。条件が満たされれば無条件ジャンプ。 以下に、完全に同一の 3 つの例を示します。
R1=R2 目的地への矢印
デバッグ環境はAVR STUDIO。
AVR ファミリのマイクロコントローラ用のデバッグ アプリケーション開発環境には次のものが含まれます。
- アセンブリトランスレータ (Atmel AVR マクロアセンブラ)
- デバッガ
- インシステム プログラミング (ISP) をサポートする上位ソフトウェア
デバッグ環境は、アセンブリ テキストの形式と C 言語のソース テキストの形式の両方でプログラムの実行をサポートします。AVR デバッグ環境は、すべてのタイプの AVR マイクロコントローラをサポートし、次の 2 つの動作モードがあります。
- ソフトウェアシミュレーションモード
- さまざまなタイプの Atmel インサーキット エミュレータ (インサーキット エミュレータ) の制御モード
デバッグ モードを選択する場合、ユーザー インターフェイスは変わりません。
AVR STUDIO デバッグ環境では、内蔵ソフトウェア シミュレータまたは外部インサーキット エミュレータを使用してアプリケーションをデバッグできます。起動すると、コンピュータのシリアル ポートの 1 つにエミュレータが存在することが自動的に検出されます。 エミュレータが検出された場合は、基本デバッグ システムが選択されます。エミュレータが存在しない場合は、内蔵の AVR ソフトウェア シミュレータでデバッグが実行されます。
インサーキット エミュレータを使用すると、完成品上でアプリケーションを直接デバッグできます。 リアルタイムで作業する場合、エミュレータでのデバッグはソフトウェア シミュレータよりも高速です。 現在のデバッグモードに関する情報がAVR STUDIOステータスバーに表示されます。
AVR STUDIOには、プログラムをデバッグするための2つのステップバイステップモードコマンド、Step OverとTrace intoが用意されています。これらの違いは、Step Overコマンドがサブルーチンでは機能しないことです。
プログラムの動作を監視するために、複数のウィンドウを開くモードが提供されており、[表示] メニューまたはツールバーのボタンからウィンドウを開くことができます。
デバッグ環境は、以下のモードおよび MK ノードをサポートしていません。
- アナログデジタルコンバーター
- アナログコンパレータ
- リアルタイムクロックモード
- 低電力モード
AVR STUDIOのハードウェアサポートについては、次を使用してください。
- スターターおよび専用の開発キット
- インサーキットプログラマ
- インサーキットエミュレータ
デバッグ中に、内部 RAM と EEPROM を (.EEP 形式の変換ファイルで) 初期化するか、その内容を .HEX 形式で保存できます。これを行うには、[ファイル] メニューの [メモリのアップ/ダウンロード] 項目を使用します。
[ファイル] メニューから、他のユーザーが作成したファームウェアを開くことができます。 作成されたプログラムを開いて印刷します。 印刷し、シリアル ポートに接続されているデバイスのステータスを確認します。 COM ポート設定。
「ツール」メニューには、制御プログラムを起動するためのコマンドが含まれています
[表示] メニューには次のビューアが含まれています。
- メモリセルをプログラムする
- データメモリウィンドウ データ
- EEPROM ウィンドウ EEPROM
- レジスタ入出力ポートウィンドウ 新しい IO
- プログラム実行の進行状況 メモリウィンドウ
- 監視変数の変更を監視する
- プログラム カウンターの状態、ステータス レジスタ SREG の内容へのスタック ポインタ、およびマイクロコントローラ コア クロック プログラムの現在の実行時間のインデックス レジスタ X、Y、Z を表示する プロセッサ ウィンドウ
- レジスタの状態の表示 レジスタ (次のサイクルでのプログラム実行中にいずれかのレジスタの値が変化すると、このレジスタは赤色で強調表示されます。さらに、次のサイクルでレジスタの値が同じままの場合、その色は赤色で強調表示されます)ハイライトは削除されます。同様の変更制御が Windows の入出力メモリと変数にも適用されます。)
- 周辺機器のステータスの監視 I/O ウィンドウ
[編集] メニューは標準のテキスト エディタに似ています。
Windows メニューを使用すると、開いているウィンドウの位置を調整できます。
ヘルプには英語の参考情報が含まれています
プロジェクトを使用すると、新しいプロジェクトを開いて作成し、その内容を保存できます
デバッグ メニューを使用すると、次のことができます。
ブレークポイントはブレークポイントの選択を制御します
Trace& トリガーはトレースを実行します
オプションでプログラムをシミュレートまたはエミュレートできます
プログラムの作成
AVRスタジオ3.56を開く
表示される新規プロジェクト作成ウィンドウのプロジェクトメニューで新規プロジェクトメニューを開き、プロジェクト名行にプロジェクト名を入力します。 同じ名前が最初のファイル ウィンドウに自動的にコピーされます。
プロジェクトを配置するフォルダーを決定するには、[...] ボタンをクリックします。 開いたフォルダー選択ウィンドウの場所ウィンドウの右側にある現在のフォルダー行に、フォルダーの名前を書き込む必要があります。 そして選択をクリックすると、新しいプロジェクトの作成ウィンドウに戻ります。
次に、プロジェクト タイプを選択します。Atmel AVR Assembler à Next à deug platform and device à debug platform à avr Simulator デバイス ウィンドウでマイクロコントローラー タイプを選択します。周波数が高い場合はメッセージが表示されます。
したがって、プロジェクトでアセンブラウィンドウをアクティブにします
シンボル「。 「アセンブラディレクティブ」
";" プログラムの動作に影響を与えないコメント
F2 プログラム内のコマンド マーカーを検索します。
Ctrl +F2 デバッガーマーカーを設定
F7 キーを押してプログラムをアセンブルし、 に保存します。 16進数
F11 デバッグ ワークスペースを開く
Shift +F5 – リセットリセット
Ctrl +F5 - ブレークバック停止デバッグ
F9 – ブレークポイントのラベルを設定
F5 – ブレークポイントまでのプログラム実行
Ctrl +F10 カーソルでマークされたコマンドの実行に切り替えます
ブロードキャストとスペルチェック。
プロジェクト → アセンブル → プロジェクト出力 このウィンドウには、コードのワード数に関する情報と、エラーの存在に関するデータおよびその他の情報が含まれています。 エラーの場所を特定するには、メッセージ上にマウス カーソルを置き、マウスの左ボタンをダブルクリックします。 その結果、エラー メッセージの原因となった行にカーソルが置かれ、その行が色付きで強調表示されます。 ソース アセンブリ テキストに不揮発性データのセグメントが含まれている場合、変換中に解像度 .eer のファイルが作成されます。 このファイルには MK の内部 EEPROM のデータが含まれており、出力ファイルと同じ形式です。
翻訳結果は出力ファイルです
プロジェクトのデバッグ
デバッグにはオブジェクトファイルが必要です
デバッガは次の手順で起動します。
コントロールパネル上でビルドして実行
まず、入力アセンブリ ファイルが変換されてオブジェクト ファイルが生成され、そのオブジェクト ファイルがデバッガに配置されます。
古いバージョンの場合、オブジェクト ファイルを変換するオプションがあります。このオプションを使用すると、デバッガーでプログラムのソース ファイルを直接編集できません。
オブジェクト ファイルを生成するには、トランスレータ出力ファイルの形式を指定する必要があります
初めてデバッガを起動するときは、[オプション] à [シミュレータ オプション] ウィンドウで、マイクロコントローラ デバイスのタイプとプロセッサ コア周波数を選択します。
デバッグ中にプログラムを実行できる
次のステップで完全にデバッグします
ステップバイステップモードでのデバッグ→トレース
デバッグ機能ブロックのトレース – マルチステップ
カーソルデバッグで示されたポイントへ→カーソルまで実行
ブレークポイント別 ブレークポイント à トグル ブレークポイント
段階的なデバッグには、次のコマンドを使用します。
Ster Over (サブプログラムでは機能しません) とトレースイン
プログラムは、I/O Windows ウィンドウの View メニュー、レジスタ、周辺デバイスで表示されます。
講義 15 プログラマー プログラマー XXX プログラマー
プログラマは次のファイル形式をサポートしています。
標準/拡張インテル HEX
これらはプログラミングを目的としています。
・メモリチップ、
· マイクロコントローラーの内部 EPROM、
· プログラマブル ロジック チップ (ChipProg+、MultiProg のみ)。
プログラマは、IBM PC 互換コンピュータと連携して動作するように設計されています。 コンピュータとの通信は、標準のプリンタ ポートを通じて実行されます。
プログラマーの使用方法:
· プログラマ ブロックから超小型回路を取り外します (プログラマ ブロックが外されている場合)。
インストールされています)。
· プログラマを 220V AC ネットワークに接続します。
MultiProgの場合はプログラマ本体のスイッチをONにしてください
栄養。 緑色の LED が点灯し、電源が供給されていることを示します。
プログラマに電源を供給します。
プログラマを標準プリンタ ポートに接続します。
配送キットに含まれる通信ケーブルを使用したコンピュータ
プログラマー
· コンピュータ上で xxxProg サポート ソフトウェアを起動します。
· ソフトウェア サポートで、必要なマイクロ回路のタイプを設定します。
· マイクロ回路をプログラマのソケットに取り付けます (マイクロ回路
ケースの図面に従ってソケットに取り付けます
プログラマー)。
· マイクロ回路で必要なアクションを実行します。 入っている場合
マイクロ回路の操作中、プログラマー本体が赤く点灯します。
「ALARM」LEDが点灯し、コンピュータ画面に警告メッセージが表示されます。
電流保護回路のトリップに関するメッセージ。これは、次のことを意味します。
マイクロ回路が故障しています。
・プログラマの電源を切る前、またはチップの種類を変更する前に
マイクロ回路をソケットから取り外す必要があります。
・プログラマの電源を切ります。
· プログラマをコンピュータから取り外します。
プログラマとコンピュータの通信インターフェイスは、コンピュータ ポートの負荷を最小限に抑えるだけでなく、プログラマとコンピュータを任意の順序で切り替えることができるように設計されています。
マイクロ回路との相互作用の観点から、xxxProg ソフトウェアは、古典的なプログラマーのスキーム「ファイル」-「バッファ」-「チップ」に従って構築されています。 メモリ バッファはプログラマ ソフトウェア サポートに実装されています。 メモリ バッファは、ファイルとチップ間の中間リンクです。
ファイル<---->バッファ<---->チップ
プログラマの主要な要素の 1 つはメモリ バッファです。 メモリ バッファは、データを保存するために設計されたオブジェクトです。 プログラマ メモリ バッファは、ファイルとチップ間の中間リンクです。
xxxProg は、柔軟なメモリ バッファ構造を実装します。
· アクティブなバッファを無限に作成できます。
数量制限があるのは無料がないことだけです
システム内のメモリ。
各バッファーには一定量が含まれます
サブレイヤ 各サブレイヤーは特定のアドレス空間に関連付けられます
マイクロ回路が取り付けられています。
例えば、
- Intel 87C51FA チップの場合、各バッファには次のものが含まれます。
2 つのサブレイヤー: コード メモリ サレイヤーとコード テーブル サレイヤー
(暗号化テーブル);
- Microchip PIC16F84 チップの場合、各バッファには独自のバッファがあります。
コードメモリサブレイヤ、データメモリサブレイヤの 3 つのサブレイヤで構成されます。
EEPROM、ユーザー識別子サブレイヤー。
· 表示ウィンドウの数に制限はありません
各バッファの内容。
このバッファ システムの柔軟な実装により、ユーザーは複数の異なるデータ セットを異なるバッファに配置することで、非常に簡単に操作できるようになります。 すべてのファイル操作 (ファイルのロード/保存) はバッファーとのみ対話します。 それらの。 ファイルをバッファにロードしたり、バッファの内容をファイルに保存したりできます。 マイクロ回路との相互作用も同様の方法で構築されます。 チップを使用したすべての操作 (読み取り、書き込み、比較など) はバッファーのみを使用します。 したがって、チップをバッファに読み込んだり、バッファの内容をチップに書き込んだり、バッファの内容とチップを比較したりすることができます。 ファイルとチップ間の直接対話は許可されていません。
プログラマーはパフォーマンス テストのシステムを実装します。これにより、初期化段階ですでにハードウェアの障害を特定できるため、ユーザーのマイクロ回路の障害の可能性を防ぐことができます。
テスト システムは 2 つのグループに分かれています。
· プログラマー機器との通信品質のテストには、プログラマー機器との通信品質のテストのみが含まれます。
· すべてのプログラマ ハードウェアの完全なテスト すべてのプログラマ ハードウェアの完全なテストが含まれます。 これは、最初のテスト グループの実行が終了した直後に実行されます。 完全なテストを実行すると、プログラマのテスト DIP ブロックにさまざまなテスト信号が表示され、そこに取り付けられているマイクロ回路に損傷を与える可能性があります。 したがって、テストをアクティブにする前に、ブロックからチップを取り外す必要があることがユーザーに警告されます。
テスト システムがハードウェアの欠陥を検出した場合、ユーザーにはそのインシデントについて警告が表示され、プログラマーとのそれ以降の作業は不可能になります。