• 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: Stack overflow reset Enable問題
#3
高級會員
高級會員


查看用戶資訊
在程式的問題方面、有幾個問題:
假設我在主程式的時間call了一個副程式在使用、在使用中、被中斷了、中斷內又call了同樣的副程式。在副程式都是帶指標進去做存取的。這樣會有問題嗎?
二、我的spi程式writespi1
#include <p18cxxx.h>
#include <spi.h>

/********************************************************************
* Function Name: WriteSPI1 *
* Return Value: Status byte for WCOL detection. *
* Parameters: Single data byte for SPI1 bus. *
* Description: This routine writes a single byte to the *
* SPI1 bus. *
********************************************************************/
#if defined (SPI_V2) || defined (SPI_V3)

unsigned char WriteSPI1( unsigned char data_out )
{
unsigned int cnt;
cnt = 1000;
SSP1BUF = data_out; // write byte to SSP1BUF register
if ( SSP1CON1 & 0x80 ) // test if write collision occurred
return ( -1 ); // if WCOL bit is set return negative #
else
{
while( !SSP1STATbits.BF ) // wait until bus cycle complete
{
if (!cnt) break;
cnt--;
_nop();
}
}
return ( 0 ); // if WCOL bit is not set return non-negative#
}

#endif
我將內部做了跳出的功能、我怕在死迴圈跑不出來、做了點改變。
而造成當機的時候
9/4/28 6:24:12 CAN TX = <10 82 11 82> 3-> 9 2 1
0/0/0 0:0:0 FSR1 = E2B

0/0/0 0:0:0 FSR1 = F34

0/0/0 0:0:0 STKPTR = 4
前面的時間無法讀取成功、時間是由讀取SPI介面的rtc。
判斷可能是讀不到spi的資料後造成stack overflow
FSR1是在中斷內用一變數跟FSR1做比較如果FSR1大於變數就改變變數並丟出log來判斷
我設定的stack size為0x300
// $Id: 18f8622i.lkr,v 1.1 2004/01/27 19:06:39 sealep Exp $
// File: 18f8622i.lkr
// Sample ICD2 linker script for the PIC18F8622 processor

LIBPATH .

FILES c018i.o
FILES clib.lib
FILES p18f8622.lib

CODEPAGE NAME=vectors START=0x0 END=0x3F PROTECTED
CODEPAGE NAME=page START=0x40 END=0xF7FF
CODEPAGE NAME=DEV START=0xF800 END=0xFFFF PROTECTED
CODEPAGE NAME=idlocs START=0x200000 END=0x200007 PROTECTED
CODEPAGE NAME=config START=0x300000 END=0x30000D PROTECTED
CODEPAGE NAME=devid START=0x3FFFFE END=0x3FFFFF PROTECTED
CODEPAGE NAME=eedata START=0xF00000 END=0xF003FF PROTECTED

ACCESSBANK NAME=accessram START=0x0 END=0x5F
DATABANK NAME=FLASH START=0x060 END=0x0FF
DATABANK NAME=GPRS START=0x100 END=0x2FF
DATABANK NAME=UART START=0x300 END=0x7FF
DATABANK NAME=ECAN START=0x800 END=0xAFF
DATABANK NAME=MAIN START=0xB00 END=0xBFF
DATABANK NAME=stackregion START=0xC00 END=0xEFF
//DATABANK NAME=gpr12 START=0xC00 END=0xEFF
//DATABANK NAME=gpr13 START=0xD00 END=0xDFF
//DATABANK NAME=gpr14 START=0xE00 END=0xEFF
DATABANK NAME=gpr15 START=0xF00 END=0xF5F
ACCESSBANK NAME=accesssfr START=0xF60 END=0xFFF PROTECTED



SECTION NAME=DEV ROM=DEV
SECTION NAME=CONFIG ROM=config
SECTION NAME=GPRS RAM=GPRS
SECTION NAME=UART RAM=UART
//SECTION NAME=CANBUS RAM=CANBUS
SECTION NAME=FLASH RAM=FLASH
SECTION NAME=ECAN RAM=ECAN
SECTION NAME=MAIN RAM=MAIN
SECTION NAME=stackregion RAM=stackregion
STACK SIZE=0x300 RAM=stackregion
上面是我的lkr檔能幫我看看有沒有什麼問題呢?
謝謝
真是當機當到怕了

發表於: 2009/4/28 11:53
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: Stack overflow reset Enable問題
#2
版主
版主


查看用戶資訊
確定一下發生的原因,一般是程式寫的不好。這個堆疊是指 RAM Stack 作為參數的傳遞用,會爆掉似乎成是有問題。是不是進去與出來的層數不對了。

發表於: 2009/4/24 14:19
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Stack overflow reset Enable問題
#1
高級會員
高級會員


查看用戶資訊
我使用的是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
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... ]

教育訓練中心

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