• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
  • slider image 488
  • slider image 491
:::


Browsing this Thread:   1 Anonymous Users






Re: dsPic33.. C語言 return( unsigned long 值) 的問題
#6
資深會員
資深會員


查看用戶資訊
你的HEAP(或STACK)是不是用到了保留區?

7: unsigned long ret;
8: ret = foo(3);
0282 200030 mov.w #0x3,0x0000
0284 200001 mov.w #0x0,0x0002
0286 070004 rcall 0x000290
0288 BE8F00 mov.d 0x0000,[0x001c]
9: return ret;
028A 78001E mov.w [0x001c],0x0000

在這測試程式中,其中0288的[0x001c]即W14指向0x0806,直接run就沒事,但是用step over一類的就掛啦!

這一類的問題用Disassembly Listing來找是最快的,如果解決了也請回post一下喔。

如果還是不行的話試著post出你的Disassembly Listing來看看。

話說回來,MPLAB IDE都到了v8,Disassembly Listing真是一點進步也沒有,special registers 也不知道用alias喔……


發表於: 2007/11/27 8:42
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: dsPic33.. C語言 return( unsigned long 值) 的問題
#5
新會員
新會員


查看用戶資訊
你可能要在某些用到的共用變數之前加個 __atribute__( __week__)的宣告.請見P18-19 C30 user guide manual.
http://ww1.microchip.com/downloads/en ... 30_Users_Guide_51284f.pdf

發表於: 2007/11/26 16:41
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: dsPic33.. C語言 return( unsigned long 值) 的問題
#4
新會員
新會員


查看用戶資訊
感謝 大大 的回答 ...

格式和宣告確定無誤 , 因為之前有一陣子是可以傳遞正確的 , 但是程式變大後 , 也不知道何時開始 , 全部有 return unsigned long 的函式 的傳遞值 , 變成全部都是錯的 ..

請各位高手幫忙 ...


發表於: 2007/11/20 16:41
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: dsPic33.. C語言 return( unsigned long 值) 的問題
#3
中級會員
中級會員


查看用戶資訊
我用的 C30 是 v3.01, 沒有這樣的問題!

依你的敘述, 使用全域公共變數來傳遞計算結果就會正確,
那就表示你的計算結果數值型式與你接受return值的儲存型式應該都正確.

那建議你檢查一下 函數的宣告型式 吧!
函數型式也須是 unsigned long 型式, 如下

unsigned long function()

希望這個小意見能對你有幫助 !

發表於: 2007/11/17 8:24
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: dsPic33.. C語言 return( unsigned long 值) 的問題
#2
新會員
新會員


查看用戶資訊
補充 : C30 DATA Model 組譯的模式 是 Large ...

發表於: 2007/11/16 15:35
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


dsPic33.. C語言 return( unsigned long 值) 的問題
#1
新會員
新會員


查看用戶資訊
請教各位先進 , 小弟目前發現一個麻煩 , 就是 當 return 一個 unsigned long 的值 會發生錯誤 , 而且是 32767 以內對 , 超過 32767 便會變成極大值 或 亂七八糟 的數值 , 我若是不用 return 的方法 , 改使用 公共變數傳遞 , 那結果就對 , 所以不是運算的錯誤 , 請問可能的問題在哪裡 ?

發表於: 2007/11/16 12:07
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------