- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, Kenshow-san
Confirm to work this KBA.
Thanks,
Jenna
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Jenna-san,
Japanese translation was over.
Please check below.
Original KBA:
Delay Functions in PSoC® 1 - KBA206625
Thanks.
==============================
タイトル: PSoC®1の遅延機能 - KBA206625
バージョン:**
質問:
プロジェクトにソフトウェア遅延を実装するにはどうすればよいですか?
回答:
添付のソースファイルdelay.asmおよびdelay.hを使用して、プロジェクトにソフトウェア遅延を導入します。
「delay.asm」には、遅延を生成する3つの関数があります。
Delay50u:この関数は、1.5MHzから24MHzまでのCPU速度に対して50µsの遅延を生成します。1.5 MHz未満の速度の場合、遅延は次の式で計算されます。
遅延=(1.5 MHz /(CPUクロック周波数))x 50 µs
この関数は、アキュムレータに値がロードされ、ゼロになるまでデクリメントされる単純なループを実装します。アキュムレータに書き込まれる初期値は、OSC_CR0レジスタから検出されたCPU周波数に基づいてルックアップテーブルから抽出されます。
Delay50uTimes:この関数は、50 µsの倍数の遅延を生成します。この関数は、アキュムレータで乗算係数を受け入れ、アキュムレータがゼロになるまでDelay50u関数を呼び出します。関数は255の最大値を受け入れるため、可能な最大遅延は255 x 50 µs = 12.75msです。
これらの2つの機能は、LCDユーザーモジュールで使用される遅延機能からコピーされています。
Delay10msTimes:この関数は、10ミリ秒の倍数の遅延を生成します。この関数は、アキュムレータで乗算係数を受け入れます。関数は255の最大値を受け入れるため、可能な最大遅延は255 x 10 ms = 2.55sです。
「delay.h」は、上記の関数の関数プロトタイプを定義します。また、関数はfastcall16として宣言されているため、Cコンパイラは、Delay50uTimes / Delay10msTimes関数を呼び出すときにアキュムレータで乗算係数を渡す必要があることを認識します。
プロジェクトで遅延関数を使用するには、次のようにします。
- アプリケーションエディタの「project > Add File」メニューを使用して、「delay.asm」ファイルと「delay.h」ファイルをプロジェクトに追加します。
これで、ファイル「delay.asm」がプロジェクトフォルダビューの「Source Files」フォルダに表示されます。ファイル「delay.h」が「Header Files」フォルダに表示されます。 - Cソースファイルから遅延関数を呼び出すには、Cファイルに「delay.h」ヘッダーファイルをインクルードします。
- ヘッダーで定義されている関数プロトタイプを使用して関数を呼び出します:
voidDelay50u(void)
void Delay50uTimes(BYTE Multiple)
void Delay10msTimes(BYTE TenMsTimes) - アセンブリでは、「callDelay50u」を使用して50 µsの遅延を生成します。50 µsの倍数を生成するには、アキュムレータに乗数をロードしてから、「callDelay50uTimes」を使用します。10ミリ秒の倍数を生成するには、アキュムレータに乗数をロードしてから、「callDelay10msTimes」を使用します。
==============================
25-Nov-2020