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


Browsing this Thread:   1 Anonymous Users




« 1 (2) 3 »


Re: Interrupt疑問
#11
資深會員
資深會員


查看用戶資訊
參照:

Iori 寫道:
對於只放上片段code造成誤解還真是抱歉


那就把完整的貼上來
比較快吧

發表於: 2009/7/20 10:34
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: Interrupt疑問
#10
新會員
新會員


查看用戶資訊
to yiming
stage這個變數原本我就設定為全域變數
這部分我到現在還是不曉得為什麼一到中斷完成後
值又消失了
感謝你的回應

發表於: 2009/7/20 9:35
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: Interrupt疑問
#9
資深會員
資深會員


查看用戶資訊
你會不會是宣告變數有問題,stage 必須設成全域變數,這樣所有時段都能看到stage變數,如果設定區域變數跑到switch時它會當中斷的stage 看成是2個不同的變數,switch的stage永遠=0


to yiming
那個程式碼只是做一個測試
我只是想試看看中斷的時候數值會不會去變化
在斷點的時候是有stage = 1;這部份
但是一跳開中斷的時候就stage不見了
這部分我就不知道該怎麼辦了

發表於: 2009/7/20 8:22
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: Interrupt疑問
#8
新會員
新會員


查看用戶資訊
to nicecookie
原本就把UART放在while之前
答案是一樣的
我也不知道為什麼
對於只放上片段code造成誤解還真是抱歉
感謝你的回應

發表於: 2009/7/18 18:41
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: Interrupt疑問
#7
資深會員
資深會員


查看用戶資訊
參照:

Iori 寫道:

是這樣嗎?
我改這樣會變成沒有中斷

感謝你們的回覆與指教
另外我說明一下
我的構想是當PIC還未與UART連接時
先SHOW幾個STRING 也就是welcome()的部份
開始接收到UART才透過中段跳到work() or empty()
這樣不知道我還需要補充些什麼
感謝


你那樣當然會沒有中斷
因為你的UART init是排在while迴圈後面
那樣永遠不會被執行

整體看來
應該是你程式的結構安排有問題
建議再把整個流程想清楚點吧

從power ON開始
甚麼時候做初始化
甚麼時候該show出 wellcome
時麼時候開始啟動中斷

發表於: 2009/7/18 11:54
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: Interrupt疑問
#6
新會員
新會員


查看用戶資訊
to Ryang
底下是我參照datasheet設定UART的部份
void UART2Init()
{
// Set directions of UART IOs
UART2_TX_TRIS = 0;
UART2_RX_TRIS = 1;
U2BRG = BAUDRATEREG2;
U2MODE = 0x8000;//Enable Uart for 8-bit data
//no parity, 1 STOP bit

U2STA = 0;
U2MODEbits.UARTEN = 1;
U2STAbits.UTXEN = 1;
// reset RX flag
IFS1bits.U2RXIF = 0;

IPC3bits.U1TXIP2 = 1; //Set Uart TX Interrupt Priority
IPC3bits.U1TXIP1 = 0;
IPC3bits.U1TXIP0 = 0;
IPC2bits.U1RXIP2 = 1; //Set Uart RX Interrupt Priority
IPC2bits.U1RXIP1 = 0;
IPC2bits.U1RXIP0 = 0;
U1STAbits.UTXEN = 1; //Enable Transmit
IEC0bits.U1TXIE = 1; //Enable Transmit
Interrupt
IEC0bits.U1RXIE = 1; //Enable Receive Interrupt

}
在main()的部份是直接呼叫UART2Init();

to yiming
那個程式碼只是做一個測試
我只是想試看看中斷的時候數值會不會去變化
在斷點的時候是有stage = 1;這部份
但是一跳開中斷的時候就stage不見了
這部分我就不知道該怎麼辦了

to nicecookie
while(1)
{
switch (stage)
{
case 1:
work();
break;
case 2:
empty();
break;
default:
welcome();
break;
}
}

是這樣嗎?
我改這樣會變成沒有中斷

感謝你們的回覆與指教
另外我說明一下
我的構想是當PIC還未與UART連接時
先SHOW幾個STRING 也就是welcome()的部份
開始接收到UART才透過中段跳到work() or empty()
這樣不知道我還需要補充些什麼
感謝

發表於: 2009/7/18 10:13
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: Interrupt疑問
#5
資深會員
資深會員


查看用戶資訊
因為沒有while()

發表於: 2009/7/17 9:11
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: Interrupt疑問
#4
資深會員
資深會員


查看用戶資訊
怪怪的,stege = 1; 那永遠只會做case1
出SWITCH後應該要像版大說的 清除 stege(當然會跑default)

建議在SWITCH後加一點時間延遲

斷點下在stege = 1;
看有沒有收到資料而中斷,如果收不到資料 那檢查UART設定.
有收到資料 就剩stege = ??; 的狀態設定了.





參照:

Iori 寫道:
to Ryang
我是想在一開始先SHOW幾個String在LCD上
之後有從UART收到訊息後才跳入到WORK()或是empty()
如果都沒收到UART的DATA則是一直在welcome()
也就是default的部分
不知道在哪個環節有弄錯
感謝你的回應

發表於: 2009/7/17 8:28
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: Interrupt疑問
#3
新會員
新會員


查看用戶資訊
to Ryang
我是想在一開始先SHOW幾個String在LCD上
之後有從UART收到訊息後才跳入到WORK()或是empty()
如果都沒收到UART的DATA則是一直在welcome()
也就是default的部分
不知道在哪個環節有弄錯
感謝你的回應

發表於: 2009/7/16 18:34
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: Interrupt疑問
#2
版主
版主


查看用戶資訊
邏輯架構有錯,在判斷 stage 之前沒有啟動中斷又怎會有收到東西呢?

一但收到 stage ==1 後執行 case 敘訴前要記的將 stage 旗號清除。

你的程式只有片段而已,看不出整體的錯誤,因為我看不到 UART 的設定函數。

發表於: 2009/7/16 15:46
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... ]

教育訓練中心

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