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

論壇索引


Board index » All Posts (shadow)




Re: 請問 CAN 的傳輸量問題!
#11
高級會員
高級會員


參照:

Ryang 寫道:
每秒資料間隔為 12.5mS,這對 CAN 來說不是很快的。懷疑是 CAN 接收時的中斷處理程序有問題(中斷處理太多資料) 或 Polling 得時間太慢了。


Sorry!!
可能是我說的不清楚,我的設定是 BaudRate = 1Mbps,
不是 5 秒傳 400 筆,而是過了 5 秒後,就一次傳 400 筆
CAN message!!

因此有 delay_ms(1) 的,平均每筆 message 間隔為 72.5 uS
~ 75 uS 之間.

我在猜不知是否接收端因為一次收的量太多,而有 Error 的產生
,因而自動 Bus-off!!

P.S 也有其它的 CAN Node 進行傳送 message

另外,這是題外話!!
想請問 MPLAB 有模擬器的功能嗎?
就是不用燒錄到單晶片中,就能看到其執行的結果!!
(這是我今天看到有人在寫 8051 時,無意中看到的,執行的結果
可由軟體模擬出來,我覺得很實用)

發表於: 2008/9/23 21:36

Edited by shadow on 2008年09月23日 21:52:24
頂部


請問 CAN 的傳輸量問題!
#12
高級會員
高級會員


我現在有一個 CAN node 每五秒就"連續(for 迴圈)"傳 400 筆 CAN
message,但接收的 node 無法全部接收並且會當掉!

但是如果傳的時候,傳一筆 message 完就 delay_ms (1),這樣傳 400
筆就都沒問題了!

請問 CAN 無法一次承受住多筆的 message 的接收嗎?

發表於: 2008/9/22 17:10
頂部


請問在執行中斷程式間該怎麼儲存另一個中斷信號?
#13
高級會員
高級會員


PIC 18F8680 and C18

我現在有兩個 PIC,一個傳一個收,傳遞的訊息為 CAN message!

我在收的時候,用中斷的方式來收,但如果傳的訊息太快,會有一些訊息
收不到!

因為在執行中斷時,我會先關閉中斷的功能,等執行完中斷程式後,在開
啟中斷功能,所以在執行中斷程式的期間,有信號過來就收不到,請問有
方法可以使得所有訊息都收的到嗎?

發表於: 2008/9/19 17:53
頂部


Re: 請問關於執行中斷前儲存的值如何回復?
#14
高級會員
高級會員


參照:

Ryang 寫道:
Tempdata 的存取C18會自行處理不用考慮restore的問題。


請問所謂的"自行處理"是指C18在compiler時,會額外的增加restore 的
程式碼嗎?
因為我compiler 後,從view->Disassembly Listing中去看組語,只看的
到store 的程式碼而已,沒看到 restore 的程式碼!!

發表於: 2008/9/16 16:20
頂部


請問關於執行中斷前儲存的值如何回復?
#15
高級會員
高級會員


我用的是 PIC 18F8680 and C18

請問各位在執行中斷前加入以下的程式碼去儲存暫存器的值
#pragma interrupt high_interrupt_service_routine nosave=section(".tmpdata")

那執行完中斷後,要怎麼回復暫存器的值呢?

發表於: 2008/9/10 16:44
頂部


Re: 請問如何查看變數以及暫存器值(Debug)
#16
高級會員
高級會員


問題解決了...
好像就是 tempdata 的資料儲存的關係!
因為我要的是透過中斷程式即時的更新資料,可是透過 tempdata
的關係,在執行完中斷程式會幫我還原資料以致可能在主程式的運算
造成溢位或其他的問題吧!
標記 tempdata 的資料儲存程式碼就可正常的執行了!

不過,我還是不知道怎麼看當機的單晶片的變數值,請問有教學檔嗎?

發表於: 2008/8/26 15:06
頂部


Re: 請問如何查看變數以及暫存器值(Debug)
#17
高級會員
高級會員


使用 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)
#18
高級會員
高級會員


我使用的是 MPLAB 7.6 以及 PIC 18F8680

我目前有支程式,執行一段時間後,PIC 就會當掉停住不動,但有
時卻又正常!
尚查不出原因,不知是程式問題還是我設定的問題!

請問有何方法可以讓我看到"當掉時"的單晶片目前的所有變數
以及暫存器的值嗎?可以抓到 MPLAB 上來看嗎?

發表於: 2008/8/25 16:46
頂部


Re: 請問執行中斷前怎麼儲存各暫存器的值?
#19
高級會員
高級會員


請問在宣告的中斷程式後加上 nosave=section(".tmpdata") ,
是指將各個暫存器的值存在記憶體的某 section 中,等中斷程式
執行完再取出還原嗎?
還是將目前的暫存器的值另外儲存以供中斷程式執行時使用?

發表於: 2008/7/31 11:05
頂部


Re: 請問執行中斷前怎麼儲存各暫存器的值?
#20
高級會員
高級會員


我想...我會用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
頂部



« 1 (2) 3 4 5 ... 9 »



:::

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... ]

教育訓練中心

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