Community Translation - Delay Functions in PSoC® 1 - KBA206625

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Kenshow
Level 8
Level 8
Distributor - Marubun (Japan)
50 solutions authored 25 solutions authored 10 solutions authored

Hi,               

I would like to translate KBA206625 into Japanese.

Please confirm to my work.

Thanks,

Kenshow

0 Likes
2 Replies
JennaJo
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

Hi, Kenshow-san

Confirm to work this KBA.

Thanks,

Jenna

Jenna Jo
0 Likes
Kenshow
Level 8
Level 8
Distributor - Marubun (Japan)
50 solutions authored 25 solutions authored 10 solutions authored

Hi Jenna-san,

                                

Japanese translation was over.
Please check below.

Original KBA:

Delay Functions in PSoC® 1 - KBA206625

Thanks.

Kenshow

==============================

タイトル: 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関数を呼び出すときにアキュムレータで乗算係数を渡す必要があることを認識します。

プロジェクトで遅延関数を使用するには、次のようにします。

  1. アプリケーションエディタの「project > Add File」メニューを使用して、「delay.asm」ファイルと「delay.h」ファイルをプロジェクトに追加します。
    これで、ファイル「delay.asm」がプロジェクトフォルダビューの「Source Files」フォルダに表示されます。ファイル「delay.h」が「Header Files」フォルダに表示されます。
  2. Cソースファイルから遅延関数を呼び出すには、Cファイルに「delay.h」ヘッダーファイルをインクルードします。
  3. ヘッダーで定義されている関数プロトタイプを使用して関数を呼び出します:
    voidDelay50u(void)
    void Delay50uTimes(BYTE Multiple)
    void Delay10msTimes(BYTE TenMsTimes)
  4. アセンブリでは、「callDelay50u」を使用して50 µsの遅延を生成します。50 µsの倍数を生成するには、アキュムレータに乗数をロードしてから、「callDelay50uTimes」を使用します。10ミリ秒の倍数を生成するには、アキュムレータに乗数をロードしてから、「callDelay10msTimes」を使用します。

==============================

25-Nov-2020

Kenshow

0 Likes