Renesas Synergy™

FAQ 1006819 : スタック・ポインタの設定[78K共通]

マイコンではサブルーチンコールや割り込み、レジスタの一時的な退避用でスタックを使用します(スタックについてはFAQのスタックも参照してください)。
Cコンパイラを使用する場合には、コンパイラの方で自動的に空き領域の中から最も大きいところを探してスタックとして使用するように設定してくれるので、 あまり気にする必要はありません。ただし、コンパイラでは実行中にどこまでスタックが消費されるかは分かりませんので、全く気にしないで済ませるわけには いきません。

[使用できるメモリ]
78K0や78K0Sには内蔵RAMとして何種類かのRAMがあります。この中で、高速RAMだけがスタックとして利用できます。
(FAQのマイコン内蔵メモリの特徴と使い方も参照ください。)

[高速RAMへのスタックの設定]
高速RAMのどこにでもスタックは設定できます。スタックポインタに設定する値については以下の判定フローに示すいくつかのパターンが考えられます。

  • 高速RAMが512バイト以上の場合
    この場合にはsaddr領域の直前をスタックで使用するため、0FE20H を設定します。
  • 高速RAMが256バイトで、スタックには32バイトで十分な場合
    この場合にもsaddr領域を避けて、0FE20H を設定します。
    つまり、78K0のAll Flashの製品では0FE20Hが標準的な設定といえます。78K0S/Kx1+でも高速RAMが256バイトの場合にも同様のことが言えます。
  • 高速RAMが256バイトで、スタックが32バイトで不足する場合
    0FE00Hからスタックとして必要な容量を確保したアドレスを設定します。その見積もりが難しい場合には自由に使えるRAMの最後(78K0Sは0FF00H、78K0は0FEE0H)を設定します。
  • 高速RAMが128バイトの場合(78K0S)
    この場合には0FF00Hを設定します。

適用製品

78K0/Dx
78K0/Fx
78K0/Ix
78K0/Kx
78K0/Lx
UPD78F07xx
UPD7800xx
UPD7802xx
UPD7803xx
UPD7807xx
UPD7808xx
UPD7809xx
UPD780xx
UPD78F8025
78K0S/Kx1+
78K0/VAN ASCP
他にご質問がございましたら、リクエストを送信してください