フォーラムへの返信

13件の投稿を表示中 - 46 - 58件目 (全58件中)
  • 投稿者
    投稿
  • 返信先: TMS320F28379D ePWM1割込みについて #8240

    ttkkttkk
    参加者

    回答ありがとうございます。
    助かりました。

    返信先: TMS320F28379D ePWM1割込みについて #8196

    ttkkttkk
    参加者

    すみません、
    問題は解決しましたが一点教えていただきたい点があります

    TMS320F28379Dのベクタテーブルの記載がされている資料は
    どこにあるのでしょうか

    spruhm8h.pdf
    上記リンク先のベクタテーブル(96ページ~103ページ)は古い内容なのでしょうか

    • この返信は5 年、 2 ヶ月前に  ttkkttkk さんが編集しました。
    • この返信は5 年、 2 ヶ月前に  ttkkttkk さんが編集しました。
    返信先: TMS320F28379D ePWM1割込みについて #8192

    ttkkttkk
    参加者

    ご回答ありがとうございます

    ご指摘の通り
    割込みベクタ(0xD6C番地)へのepwm7_isrのアドレスが正しく設定がされていないことが原因でした。
    (0xD8C番地に設定をしておりました)

    0D6c番地にepwm7_isrのアドレスを設定しましたところ
    IllegalISRも発生しなくなり、プログラムのRAMコピー処理も正常に動作いたしました

    長々とありがとうございました。

    • この返信は5 年、 2 ヶ月前に  ttkkttkk さんが編集しました。
    返信先: TMS320F28379D ePWM1割込みについて #8169

    ttkkttkk
    参加者

    回答ありがとうございます

    ePWM7についてはPHSEN=1を設定していることが原因で、
    ePWM1と同期されておりました。ありがとうございました。

    話が戻り、割込み処理ですが
    割込み関数(epwm7_isr)がLSRAM0の最初00008000に
    割り当てられている場合、割込みが発生。

    下記のように、
    割込み処理epwm7_isrより容量の大きい関数をコピーした場合
    IllegalISRの不正割込みが発生することがわかりました。

    ramfuncs_ReadEEPROM
    * 0 00088000 000000b9 RUN ADDR = 00008000
    00088000 000000b9 MainLoop.obj (ramfuncs_ReadEEPROM)

    ramfuncs_epwm7_isr
    * 0 000880b9 0000004c RUN ADDR = 000080b9
    000880b9 0000004c Interrupt.obj (ramfuncs_epwm7_isr:retain)

    ベクタテーブルにepwm7_isrのアドレスを設定はしております。
    コピー処理を行うと容量の大きいモジュールから順にRAMに割り当てられるのでしょうか

    たびたび申し訳ございませんが
    何かわかりませんでしょうか

    返信先: TMS320F28379D ePWM1割込みについて #8075

    ttkkttkk
    参加者

    ありがとうございます
    どのコードが悪いかまでは追えませんでしたが
    どのあたりで飛んで行っているかまでは分かりました。
    この情報をもとに詰めていきたいと思います

    別の質問で申し訳ないのですが
    PWMの割込みモジュールが定期的に発生しているのですが
    ePWM1の割込みかePWM7の割込みで来ているのかを知る方法はないのでしょうか?
    割込み関数に入った箇所で何かのレジスタ(フラグ)を見れば分かる、等
    あれば教えていただけませんでしょうか

    返信先: TMS320F28379D ePWM1割込みについて #8066

    ttkkttkk
    参加者

    回答ありがとうございます。

    2点質問なのですが、17日に張り付けたデータは既に1word分ずれてしまっている状態なのでしょうか
    メモリブラウザで[ SP]とアクセスした箇所が 0x00000428を指していた場合、
    0x00000420 か 0x0000041FがReturn Addressになっているのでしょうか?

    返信先: TMS320F28379D ePWM1割込みについて #8008

    ttkkttkk
    参加者

    何度も申し訳ございません。
    StepOver(F6)で進める場合と
    StepInto(F5)で進める場合で挙動が異なり、

    F6で進めた場合、上記の「3fe493: 7625 ESTOP0 」で
    Break at addressとなり、Memory Browserでスタック領域(0x000400)を確認しましたが
    全てゼロで表示されるような結果となりました。

    F5の場合は、「0x200008」のアドレスで止まり、
    スタック領域は更新されておりますが、以下の領域で
    どこがSPに当たるのかが理解できておりません。
    _stack
    C054 0000 952D 0008 95EF 0008 95FB 0008 8920 0008 938B 0008 0000 0001 00C8
    0018 0001 0000 0000 0000 0003 FFFF EA0A 0033 0004 001F 958C 0008 0020 0000
    0000 0004 0096 FFFF 0000 0001 C1E2 0000 0001 0000 0000 0000 0000 0000 0000
    :
    何度も申し訳ございませんが、SPを知る方法について今一度教授お願いいたします

    返信先: TMS320F28379D ePWM1割込みについて #8006

    ttkkttkk
    参加者

    回答ありがとうございます

    コピー処理は提示の方法で相違ございません。
    LOAD_SIZEの追加し再度確認してみます。

    最後のスタックについての確認方法がわかりません
    Disassemblyウィンドウなどに表示がされるものなのでしょうか
    CCSは8.1.0を使用しています。

    返信先: TMS320F28379D ePWM1割込みについて #7938

    ttkkttkk
    参加者

    回答ありがとうございます。
    cmdファイルは以下のように変更しております。

    PAGE 0 : /* Program Memory */
    /* Program Space */
    RAMLS0_5 : origin = 0x008000, length = 0x003000 /* Ram for Program */

    RAMM0 : origin = 0x000122, length = 0x0002DE
    RAMD0 : origin = 0x00B000, length = 0x000800

    /* BootROM Vector */
    RESET : origin = 0x3FFFC0, length = 0x000002 /* Reset Vector */

    /* Flash Rom */
    BEGIN : origin = 0x080000, length = 0x000002 /* Program Start(Boot to FLASH) */
    FLASHA : origin = 0x080002, length = 0x001FFE /* Flash Rom */
    FLASHB : origin = 0x082000, length = 0x002000 /* Flash Rom */
    FLASHC : origin = 0x084000, length = 0x002000 /* Flash Rom */
    FLASHD : origin = 0x086000, length = 0x002000 /* Flash Rom */
    FLASHEF : origin = 0x088000, length = 0x00FFFE /* Flash Rom */
    FLASHEF_SUM : origin = 0x097FFE, length = 0x000002 /* Flash Rom Sum */
    FLASHG : origin = 0x098000, length = 0x008000 /* Flash Rom */
    FLASHH : origin = 0x0A0000, length = 0x008000 /* Flash Rom */
    FLASHI : origin = 0x0A8000, length = 0x008000 /* Flash Rom */
    FLASHJ : origin = 0x0B0000, length = 0x008000 /* Flash Rom */
    FLASHK : origin = 0x0B8000, length = 0x002000 /* Flash Rom */
    FLASHL : origin = 0x0BA000, length = 0x002000 /* Flash Rom */
    FLASHM : origin = 0x0BC000, length = 0x002000 /* Flash Rom */
    FLASHN : origin = 0x0BE000, length = 0x002000 /* Flash Rom */

    中略

    ramfuncs_epwm7_isr
    : LOAD = FLASHC,
    RUN = RAMLS0_5,
    LOAD_START( _RamfuncsLoadStart_epwm7_isr ),
    LOAD_END( _RamfuncsLoadEnd_epwm7_isr ),
    RUN_START( _RamfuncsRunStart_epwm7_isr ),
    PAGE = 0

    コピー元はFLASHの定義でも試しております。(同じ現象となります)
    マップファイルよりコピー処理の部分を抜粋します
    ramfuncs_epwm7_isr
    * 0 00084000 0000004c RUN ADDR = 00008000
    00084000 0000004c Interrupt.obj (ramfuncs_epwm7_isr:retain)

    ramfuncs_InitSetRegisterFlash
    * 0 0008404c 00000015 RUN ADDR = 0000804c
    0008404c 00000015 Initial.obj (ramfuncs_InitSetRegisterFlash)

    ramfuncs_CtrlMainLoop
    * 0 00084061 00000001 RUN ADDR = 00008061
    00084061 00000001 MainLoop.obj (ramfuncs_CtrlMainLoop)

    上記の3モジュールのコピーだけであればESTOP0停止なし

    ramfuncs_ReadEEPROM
    * 0 00084000 00000089 RUN ADDR = 00008000
    00084000 00000089 MainLoop.obj (ramfuncs_ReadEEPROM)

    ramfuncs_epwm7_isr
    * 0 00084089 0000004c RUN ADDR = 00008089
    00084089 0000004c Interrupt.obj (ramfuncs_epwm7_isr:retain)

    ramfuncs_InitSetRegisterFlash
    * 0 000840d5 00000015 RUN ADDR = 000080d5
    000840d5 00000015 Initial.obj (ramfuncs_InitSetRegisterFlash)

    ramfuncs_CtrlMainLoop
    * 0 000840ea 00000001 RUN ADDR = 000080ea
    000840ea 00000001 MainLoop.obj (ramfuncs_CtrlMainLoop)

    上記の4モジュールにすると、ESTOP0停止が発生
    追加されているのは、一番上のモジュールです。
    申し訳ございませんが、何かわかる点はないでしょうか

    返信先: TMS320F28379D ePWM1割込みについて #7758

    ttkkttkk
    参加者

    すみません
    プロジェクトを新規で作成しなおし、
    .cmdファイルも自作したものを使うことにより
    割込み自体は入るようになりました。

    コピー処理のモジュール単位を増やすと、
    以下の箇所で止まるようになりました。
    3fe493: 7625 ESTOP0

    TI社のフォーラムを検索し、以下のことを行ってみましたが
    止まる現象は同じでした
    ・スタックサイズを0x200 → 0x400に変更。
    ・クロック設定後のコピー処理をクロック設定前に変更。

    申し訳ございませんが、何か対処法についてわかりましたら教授願います

    返信先: TMS320F28379D ePWM1割込みについて #7756

    ttkkttkk
    参加者

    ありがとうございます。
    プロジェクトのプロパティを確認しましたが、TI-RTOSの表示はありませんでした。
    よって、F2837xD_Headers_BIOS_cpu1.cmdのインクルードを
    F2837xD_Headers_nonBIOS_cpu1.cmdに変えてみました。

    しかし、状況は変わりませんでした。

    割込みのモジュールもDisassemblyのビューにて確認、
    PieVectTable.EPWM1_INT = &epwm1_isr;
    も確認はできております。

    実行するプログラムのモジュールをある程度削除すると
    割込みが発生するようになります。

    度々申し訳ございませんが、再度ご教授をお願いいたします

    返信先: TMS320F28379D ePWM1割込みについて #7754

    ttkkttkk
    参加者

    申し訳ございません
    TI-RTOS自体がよくわかっておりません。
    プロジェクトのプロパティ等で使用しているかどうかがわかるのでしょうか?

    返信先: TMS320F28379D ePWM1割込みについて #7751

    ttkkttkk
    参加者

    回答ありがとうございます

    #pragma CODE_SECTION( epwm1_isr, “ramfuncs_epwm1_isr”)の記載も

    FLASHからRAMへのメモリコピー処理も行っております。

    上記cmdファイルは2ファイル、プロジェクト上にあり、
    F2837xD_headers\cmd\F2837xD_Headers_BIOS_cpu1.cmd
    2837xD_FLASH_lnk_cpu1.cmd
    の両方をリンクしており、上記の記載は2837xD_FLASH_lnk_cpu1.cmdのほうで
    記載しております。

    TI社のフォーラムにて

    BIOSを使用するのがよくない?との記載されているのですが
    2ファイル存在するため起こっている現象なのでしょうか?

    cmdファイルに関して分かっておらず申し訳ないのですが、よろしくお願いいたします

13件の投稿を表示中 - 46 - 58件目 (全58件中)