This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F280039C: F28069_PID例程轉移到F280039C

Part Number: TMS320F280039C
Other Parts Discussed in Thread: C2000WARE, SYSCONFIG

你好,

我目前有0039c的開發板,因此我想將F28069_PID例程更改為F280039C的設置

在修改後進行debug,發現uk值始終為0,似乎沒有跑PID的功能

想請問一下是甚麼問題

在修改的程式中

F28069_stdmem.cmd改為F280039_ram_lnk.cmd

我將下列四行註解掉(因為在0039c頭檔中找不到定義)

49行 InitEPwm() 

53行 EPwm1Regs.TBCTL.bit.SYNCOSEL = 3;

73行 InitAdc()

121行 SetDBGIER(0x0001);

會出現(error) #10099-D</a>  program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section. run placement with alignment/blocking fails for section ".stack" size 0x400 page 1.  Available memory ranges: 

(Warning) #10247-D creating output section "dclfuncs" without a SECTIONS specification  

當我將 Set C system stack size (--stack_size,-stack) 從0x400改成0x200後error就不見了,但是Warning依然存在

想知道我以上的步驟有那裡需要修改嗎?

謝謝!!

  • Hi,

    您具体使用的是哪个例程?方便发一下路径吗?

  • Yale 你好,

    我使用的範例在以下路徑

    C:\ti\c2000\C2000Ware_4_02_00_00\libraries\control\DCL\c28\examples\F28069_PID

  • 我目前懷疑是epwm、adc和GPIO這邊腳位設置的問題,讓adc result 沒有值;想請問一下這個範例中的 configure ADC、GPIO、EPWM的設置,我想透過syscfg去設置要怎麼設定,我已經有看過syscfg的USER guide了,但例程中每個腳位都有許多的設定,我不曉得要怎麼一一轉成syscfg上。

      

  • TMS320F280039CHi,

    我想透過syscfg去設置要怎麼設定

    这个例程原来不是通过sysconfig配置的,要修改成用sysconfig配置比较困难;

    F28069_stdmem.cmd改為F280039_ram_lnk.cmd

    F280039_ram_lnk.cmd麻烦您指一下路径;

    49行 InitEPwm() 

    53行 EPwm1Regs.TBCTL.bit.SYNCOSEL = 3;

    73行 InitAdc()

    121行 SetDBGIER(0x0001);

    这些配置与设备的关联性比较强,您可以参考一下F280039C用到这些模块的例程来做移植;

    會出現(error) #10099-D</a>  program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section. run placement with alignment/blocking fails for section ".stack" size 0x400 page 1.  Available memory ranges: 

    .stack输出节的大小超出了可用内存的大小,放置失败,所以会有这个报错;

    (Warning) #10247-D creating output section "dclfuncs" without a SECTIONS specification

    没有为输出节"dclfuncs"指定具体的内存范围,所以会有这个警告。

    这两个问题都与cmd文件有关。

  • Yale 感謝你的回覆!!

    F280039_ram_lnk.cmd麻烦您指一下路径;

    我是在專案的Properties中將Linker command file下拉改為 F280039_ram_lnk.cmd後 cmd文件就出現在專案中了

    这个例程原来不是通过sysconfig配置的,要修改成用sysconfig配置比较困难;

    我想確認一下,原本沒有使用sysconfig配置的例程都沒辦法改為sysconfig配置嗎? 那我使用例程原本的配置程式在0039c上是可以的嗎?

    因為我目前將例程的配置程式改為0039c的變數名稱後,發現有些變數找不到(例如上述提到的InitEPwm(), EPwm1Regs.TBCTL.bit.SYNCOSEL = 3; InitAdc(),SetDBGIER(0x0001);),我只能先將他註解掉。

    您可以参考一下F280039C用到这些模块的例程来做移植

    因為在c2000ware中好少F280039c的例程,我目前只能想辦法將我想使用功能例程的MCU改為0039c的版本,像是這裡使用的PID功能。

    .stack输出节的大小超出了可用内存的大小,放置失败,所以会有这个报错

    我手動將.stack改小會產生甚麼問題嗎?

    没有为输出节"dclfuncs"指定具体的内存范围,所以会有这个警告

    我是不是不能直接使用F280039_ram_lnk.cmd這個檔案。

  • Hi,

    我先去确认一下C2000ware或其它SDK中有没有F280039C的PID例程

  • Hi,

    这里有一个F280039C的非线性PID例程:

    C:\ti\c2000\C2000Ware_4_02_00_00\libraries\control\DCL\c28\examples\NLPID\CCS

  • Yale 感謝你提供這個例程!!

    想請問一下有這個例程的說明嗎?

    在C2000Tm Digital Control Library的user guide中沒有介紹到這個例程

  • Hi,

    C:\ti\c2000\C2000Ware_4_02_00_00\libraries\control\DCL\c28\docs-->DCL User's Guide.pdf

    5.11 Example 11: NLPID Running on FPU32 (TMU1)

    是这个例程的说明