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


Browsing this Thread:   1 Anonymous Users






Re: 程式重置撰寫問題
#9
版主
版主


查看用戶資訊
參照:
我想它的意思是該如何寫"軟體reset"雖然他廠有些高階處理器有此功能,但是這顆好像沒有,我覺得直接將switch一端串接MCLR另一端接至地,比較單純,還有一種辦法,就是啟動WATCHDOG時,在switch觸發後,不要清除WATCHDOG,等待自動RESET。


真的,題目一樣,答案不一樣。

如果要在程式裡執行Reset 的動作的話,在 PIC 內部是很簡單的(PIC16 比較麻煩) 主要是外部的周邊尤其是ㄧ些內建 Status Machine 架構的周邊需要用硬體的 Reset。通常此類的設計可以考慮用一個 I/O來作為 Reset 的控制,這樣才能確保執行軟體 Reset 動作時也能將周邊同步來 Reset。

PIC16 因為沒有 RESET 指令,所以只能用 goto 0x0000 的方式執行,但要注意的是所有 RAM 及周邊、堆疊都不會改變其內容。

PIC18 及 PIC24 & dsPIC 系列都有 RESET 指令支援,其效果相當於 MCLR pin 的 Reset 動作,所以的內建周邊會回到一般的 Reset 時的初始狀態,但 MCLR pin不會有 Reset 訊號輸出去 Reset 外部的周邊,使用時要注意此點的。

發表於: 2008/8/4 9:51
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 程式重置撰寫問題
#8
資深會員
資深會員


查看用戶資訊
施主,這問題應該要問您自己吧?

不過PIC16的goto指令跳的距離只有2K的距離,如果要跳超過這距離的話,要注意PCLATH的值有沒有也是0,不然goto 0會跳到錯誤的地方。

movlw 0
    movwf PCLATH 
    
goto 0


C語言的goto要對應goto的標記,goto 0應該會編譯錯誤,所以要用內嵌組語的方式完成。

PICC沒在用,所以您參考看看就好。

C30的話,大概是類似這樣。
#include<p30f4011.h>
int soft_reset;
int main()
{
        
soft_reset 0;

        
//put your code.

        //if(soft_reset){asm("goto 0");}
        
if(soft_reset){asm("RESET");}
    return 
0;    
}

發表於: 2008/8/4 9:30

Edited by master on 2008年08月04日 09:56:46
不要問我哪裡來,我只是個流浪天涯的工程師
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 程式重置撰寫問題
#7
資深會員
資深會員


查看用戶資訊
請問master先進:
我使用PICC16,而使用goto 0;
但不知 0 該要放至置在那兒為佳?
煩請詳說.
Thanks.

發表於: 2008/8/4 8:41
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 程式重置撰寫問題
#6
資深會員
資深會員


查看用戶資訊
直接goto 0,讓啟動模組重新接手管理初始化就可以了。

不要用外部硬體RESET,可能是有些周邊設置需要先離線,這樣RESERT才比較安全。

發表於: 2008/8/2 11:30
不要問我哪裡來,我只是個流浪天涯的工程師
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 程式重置撰寫問題
#5
初級會員
初級會員


查看用戶資訊
參照:

jghn 寫道:
各位大大,請問在程式中想要寫一個語法按下SW1後,可以跳到前面程式未執行前的狀態,即是從頭開始動作,該如何撰寫?

如下所示: ..............
}

我想它的意思是該如何寫"軟體reset"雖然他廠有些高階處理器有此功能,但是這顆好像沒有,我覺得直接將switch一端串接MCLR另一端接至地,比較單純,還有一種辦法,就是啟動WATCHDOG時,在switch觸發後,不要清除WATCHDOG,等待自動RESET。

發表於: 2008/8/2 8:39
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 程式重置撰寫問題
#4
版主
版主


查看用戶資訊
啟動模組只要 Reset 後就會跳去先執行。要攔它就需修改修改 crt0.s
,在 C:\Program Files\Microchip\MPLAB C30\src\pic30 裡。

你可以參考檔案下載裡的 dsPIC30F Architecture 教材裡的 ASM30 章節裡的說明。

crt0.s 的功能:
Reset 後,控制權會先交給 Crt0.o 裡的 _reset
設定堆疊指標 (W15 & SPLIM)
設定 PSVPAG 及 CORCON ( .const )
處理初始值的設定
將控制權交給 User’s 程式裡的 main 標記

發表於: 2008/8/1 14:13
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 程式重置撰寫問題
#3
資深會員
資深會員


查看用戶資訊
大家好:
我也想知道該程式中要如何跳至啟動模組之前(C18及PICC16),
假設如下:
start_action:
start_module();
main(void)
{
if(PORTBbits.RB0) goto start_action;
}

Thanks.

發表於: 2008/8/1 13:41
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 程式重置撰寫問題
#2
版主
版主


查看用戶資訊
不是很了解你的需求,而且也沒看到友 main( ) 函數,所以程式是不會編譯成功的。到下載中心下載底下幾個教材看一下:

dsPIC101 ( 一天,免費,英文教材,級數:2 ) dsPIC30F基礎課程

以基本的dsPIC配合 C30 compiler 及使用dsPIC v1.1 Demo board為教材,主要介紹dsPIC的基本C程式的撰寫,介紹如何設定I/O、中斷優先權、巢狀式中斷控制、A/D的自動掃描及轉換、UART 及基本的FIR濾波器的設計。同時也會說明如何用 dsPIC Filter Design來產生係數及介紹使用dsPICworks Tool來觀察Time domain 及 Frequency domain 的資料分析。

203 PRC 課程內容說明
203PRC ( 一天,免費,,英文教材,級數:2 ) PIC24F基本週邊課程

介紹基本C30 的使用及 dsPIC24F 的基本架構。周邊介紹及實驗涵蓋 PSV 原理、中斷處理、I/O 設定、ADC、Timer、Output Comparator、Input Capture、I2C、SPI及 Power Management。課程使用 MPLAB ICD2 及 Explorer-16 (PIC24FJ128GA010) 為實驗工具。

發表於: 2008/8/1 7:45
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


程式重置撰寫問題
#1
新會員
新會員


查看用戶資訊
各位大大,請問在程式中想要寫一個語法按下SW1後,可以跳到前面程式未執行前的狀態,即是從頭開始動作,該如何撰寫?

如下所示:

#include <p30F4011.h>
#include "C30EVM_LCD.h"
int main( void )
{
LATE=0xffff;
ADPCFG=0Xffff;
TRISE=0xffc0;
OpenLCD( );
int a=2;
while(1) {
if( (PORTEbits.RE8==0) && (a%2==0) )
{ a=a+1;
setcurLCD(0,1);
putrsLCD("1");
while(PORTEbits.RE8==0);
}
else if( (PORTEbits.RE8==0) && (a%2==1) )
{ a=a+1;
setcurLCD(0,1);
putrsLCD("A");
while(PORTEbits.RE8==0);
}

if(PORTBbits.RB8==0)
{
if(PORTBbits.RB8==0)
goto Line ???????;
}
}
}

發表於: 2008/7/31 17:28
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... ]

教育訓練中心

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