請問 CAN 的傳輸量問題!
|
||||
---|---|---|---|---|
高級會員
|
我現在有一個 CAN node 每五秒就"連續(for 迴圈)"傳 400 筆 CAN
message,但接收的 node 無法全部接收並且會當掉! 但是如果傳的時候,傳一筆 message 完就 delay_ms (1),這樣傳 400 筆就都沒問題了! 請問 CAN 無法一次承受住多筆的 message 的接收嗎?
發表於: 2008/9/22 17:10
|
|||
|
請問在執行中斷程式間該怎麼儲存另一個中斷信號?
|
||||
---|---|---|---|---|
高級會員
|
PIC 18F8680 and C18
我現在有兩個 PIC,一個傳一個收,傳遞的訊息為 CAN message! 我在收的時候,用中斷的方式來收,但如果傳的訊息太快,會有一些訊息 收不到! 因為在執行中斷時,我會先關閉中斷的功能,等執行完中斷程式後,在開 啟中斷功能,所以在執行中斷程式的期間,有信號過來就收不到,請問有 方法可以使得所有訊息都收的到嗎?
發表於: 2008/9/19 17:53
|
|||
|
Re: 請問關於執行中斷前儲存的值如何回復?
|
||||
---|---|---|---|---|
高級會員
|
參照:
請問所謂的"自行處理"是指C18在compiler時,會額外的增加restore 的 程式碼嗎? 因為我compiler 後,從view->Disassembly Listing中去看組語,只看的 到store 的程式碼而已,沒看到 restore 的程式碼!!
發表於: 2008/9/16 16:20
|
|||
|
請問關於執行中斷前儲存的值如何回復?
|
||||
---|---|---|---|---|
高級會員
|
我用的是 PIC 18F8680 and C18
請問各位在執行中斷前加入以下的程式碼去儲存暫存器的值 #pragma interrupt high_interrupt_service_routine nosave=section(".tmpdata") 那執行完中斷後,要怎麼回復暫存器的值呢?
發表於: 2008/9/10 16:44
|
|||
|
Re: 請問如何查看變數以及暫存器值(Debug)
|
||||
---|---|---|---|---|
高級會員
|
問題解決了...
好像就是 tempdata 的資料儲存的關係! 因為我要的是透過中斷程式即時的更新資料,可是透過 tempdata 的關係,在執行完中斷程式會幫我還原資料以致可能在主程式的運算 造成溢位或其他的問題吧! 標記 tempdata 的資料儲存程式碼就可正常的執行了! 不過,我還是不知道怎麼看當機的單晶片的變數值,請問有教學檔嗎?
發表於: 2008/8/26 15:06
|
|||
|
Re: 請問如何查看變數以及暫存器值(Debug)
|
||||
---|---|---|---|---|
高級會員
|
使用 ICD2 除錯指的是在下拉式選單將原本的 Release 改選
Debug 嗎?選了之後會出現奇怪的好像警告的視窗,請問要怎麼 設定才能用Watch Window看變數值? 要 refresh一下內容且不要去執行了啟動模組。 ==> 這是只要先按一下 Reset 嗎? 你在中斷有使用到 + - 乘、除 的運算嗎?tempdata 有儲存起來嗎? 1. 有,我的中斷程式有用到 for 迴圈以及 ++變數 的運算. 2. 應該有儲存,我加了這段程式碼: #pragma interrupt RS232_Send_Data nosave=section(".tmpdata")
發表於: 2008/8/25 21:53
|
|||
|
請問如何查看變數以及暫存器值(Debug)
|
||||
---|---|---|---|---|
高級會員
|
我使用的是 MPLAB 7.6 以及 PIC 18F8680
我目前有支程式,執行一段時間後,PIC 就會當掉停住不動,但有 時卻又正常! 尚查不出原因,不知是程式問題還是我設定的問題! 請問有何方法可以讓我看到"當掉時"的單晶片目前的所有變數 以及暫存器的值嗎?可以抓到 MPLAB 上來看嗎?
發表於: 2008/8/25 16:46
|
|||
|
Re: 請問執行中斷前怎麼儲存各暫存器的值?
|
||||
---|---|---|---|---|
高級會員
|
請問在宣告的中斷程式後加上 nosave=section(".tmpdata") ,
是指將各個暫存器的值存在記憶體的某 section 中,等中斷程式 執行完再取出還原嗎? 還是將目前的暫存器的值另外儲存以供中斷程式執行時使用?
發表於: 2008/7/31 11:05
|
|||
|
Re: 請問執行中斷前怎麼儲存各暫存器的值?
|
||||
---|---|---|---|---|
高級會員
|
我想...我會用C....感覺比較簡單
我有參考了以上幾篇文章(超連結的),以下是我的中斷程式碼!! #pragma code high_vector = 0x08 void high_interrupt (void) { _asm GOTO RS232_Send_Data _endasm } #pragma code #pragma interrupt RS232_Send_Data void RS232_Send_Data (void) { .... } 是否將 #pragma interrupt RS232_Send_Data 改成 #pragma interrupt RS232_Send_Data nosave=section(".tmpdata") 即可????
發表於: 2008/7/30 22:44
|
|||
|