Stack overflow reset Enable問題
|
||||
---|---|---|---|---|
高級會員
|
我使用的是18f8622在configure設定內有一個
stack overflow reset enable的功能。 我想問一下、因為在測試一段時間後常常會發生reset的問題、在改變了stack size的大小後、只有發生過一次。 不過有一個問題是在 STATUS REGISTER 內有一個OV的bit。 請問一下stack overflow reset enable是參考這個bit嗎? 還有就是改變了stack size的大小但OVbit的判斷值不會、還是會在超過原設定的地方就會reset呢? 在測試stack的使用最大範圍抓到的值是d8我只在中斷內判斷FSR1的數值做判斷、使用上會不會過大了?
發表於: 2009/4/23 18:27
|
|||
|
Re: 關於stack size的幾個問題
|
||||
---|---|---|---|---|
高級會員
|
版大你好、經過測試在讀取FSR1已可以了解、堆疊指標目前的位置、還有幾個小小的疑問。
一、如果沒想抓曾經使用的最大值、我是想說另外編寫一個變數做存取的比軟如果FSR1大於變數值就將FSR1存入變數來做測試、不知道是否可行。 二、如果上述的方法可行的話、在程式內是在中斷High level還是中斷low level內的堆疊會用到最多?還是那裡會是最多的地方呢? 三、還有一個堆疊存取說明的七層、因第八層是中斷在用的、如果我的堆疊區變大了是不是在堆疊未overflow都可以一直使用下去呢? 四、如果在主程式下已經在第三層了、到了中斷又call了三層的副程式、那就是六層了嗎?是不是這樣算丫? 例子: void callFunction1(char *data) { callFuncton2(data); } void callFunction2(char *data1) { printf("data1"); } void main(void) { char cc; callFunction1(&cc); } 上面的程式就算是三層了嗎?
發表於: 2009/4/23 9:52
|
|||
|
關於ICD2 debig mode 的問題
|
||||
---|---|---|---|---|
高級會員
|
我在下面網址的討論看到的問與答之中:
http://www.microchip.com.tw/modules/n ... ost_id=6721#forumpost6721 在裡面有說到 在debig的時候要用i.lkr、如果我在程式用的lkr檔是copyl出來另外存放的、那我在debig mode的時候他是用什麼lkr檔呢? 因為我內設的lkr內並沒有debig的位址宣告。
發表於: 2009/4/22 14:13
|
|||
|
關於stack size的幾個問題
|
||||
---|---|---|---|---|
高級會員
|
我在下面網址看到的問與答
http://www.microchip.com.tw/modules/n ... t_id=11007#forumpost11007 內容是: 我使用18F4550 須將stack 闊展到384 將 .lkr 內容相關部份修改為如下 DATABANK NAME=pgr2 START=0x200 END=0x3F3 STACK SIZE=0x180 RAM=pgr2 可是執行時發現還是在 256 範圍內 超過的部份從 0x200 開始覆蓋\r 請問修改部份有錯嗎 STACK SIZE要如何才能超過 0x100 thanks!! 請問 一:在修改STACK SIZE後我要怎麼裀道他真正運行的範圍到底跑到多少呢?有沒辦法知道現在stack使用的數量是多少呢? 二:因為我在stack overflow reset enable是開啟的、在reset control register內有reset發生原因的旗標、請問在stack overflow reset有旗標可以查尋嗎?
發表於: 2009/4/22 14:04
|
|||
|
Re: mcp2515 應用的問題
|
||||
---|---|---|---|---|
高級會員
|
我測試的時候都是發送端當機。謝謝
發表於: 2008/11/13 15:28
|
|||
|
mcp2515 應用的問題
|
||||
---|---|---|---|---|
高級會員
|
我設定好mcp2515後在做測試的一些問題:
一、測試方法device當接收到can bus的訊息後、將接收到的訊息回傳。 二、測試程式、發送訊息、每次的data資料+1、比對回覆的訊息相同、發送下一筆資料。 在沒有任何delay的狀況下常會發生當機的問題、(用模擬器也一樣)但在發送前delay10ms後就沒有發生message error interrupt也沒有造成當機的問題。 有人可以告訴我為什麼嗎?
發表於: 2008/11/13 11:42
|
|||
|
Re: mcp2515 設定SJW參數問題。
|
||||
---|---|---|---|---|
高級會員
|
在誤差小於sjw時做hard SYNCHRONIZATION、在大於sjw做RESYNCHRONIZATION那是不是以sjw的tq數值為單位呢?
發表於: 2008/11/6 14:43
|
|||
|
mcp2515 設定SJW參數問題。
|
||||
---|---|---|---|---|
高級會員
|
在dtatsheet中說明同步有兩種:hand Synchronization 跟
resynchronization。 Phase Errors • e = 0 if the edge lies within SYNCESEG. • e > 0 if the edge lies before the SAMPLE POINT (TQ is added to PhaseSeg1). • e < 0 if the edge lies after the SAMPLE POINT of the previous bit (TQ is subtracted from PhaseSeg2). 上面說明增加ps1時為單位為tq、減少ps2單位也為tq 但下面的述序、在誤差小於sjw時、做hand Synchronization 大於sjw時最大到只增加到sjw的tq單位或減少sjw的tq單位 5.2.2.2 No Phase Error (e = 0) If the magnitude of the phase error is less than or equal to the programmed value of the synchronization jump width, the effect of a resynchronization is the same as that of a hard synchronization. 5.2.2.3 Positive Phase Error (e > 0) If the magnitude of the phase error is larger than the synchronization jump width and, if the phase error is positive, phase segment 1 is lengthened by an amount equal to the SJW. 5.2.2.4 Negative Phase Error (e < 0) If the magnitude of the phase error is larger than the resynchronization jump width and the phase error is negative, phase segment 2 is shortened by an amount equal to the SJW. 請問在位移時到底是以什麼為單位呢?
發表於: 2008/11/5 10:25
|
|||
|
Re: can bus 網路MCP2515應用
|
||||
---|---|---|---|---|
高級會員
|
我裝的硬體是mcp2515的device加上can drive(max3051) 在硬體的角度上來說、加上終端電阻才能動作、應該是在can drive 上的阻抗批配、但是我量測的地方是在mcp2515的can tx的傳送訊號就有問題了、就算沒有電阻訊息也應該能傳送出去、只是有可能接收不到、而不至於完全不能發送正確的訊號、還是這是can bus網路的機制呢?
發表於: 2008/10/30 14:21
|
|||
|