會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客





何時要宣告記憶體為far?
資深會員
註冊日期:
2005/02/01 19:56
所屬群組:
註冊會員
文章: 244
等級: 14; EXP: 60
HP : 0 / 340
MP : 81 / 12567
離線
如題?

1月03日 23:47:19
轉換PDF檔 列印


Re: 何時要宣告記憶體為far?
資深會員
註冊日期:
2012/05/04 19:18
所屬群組:
註冊會員
文章: 179
等級: 12; EXP: 43
HP : 0 / 285
MP : 59 / 4502
離線
MPLAB® C18 C COMPILER USER’S GUIDE

2.4.1 near/far Data Memory Objects
The far qualifier is used to denote that a variable that is located in data memory lives
in a memory bank and that a bank switching instruction is required prior to accessing
this variable. The near qualifier is used to denote that a variable located in data
memory lives in access RAM.
2.4.2 near/far Program Memory Objects
The far qualifier is used to denote that a variable that is located in program memory
can be found anywhere in program memory, or, if a pointer, that it can access up to and
beyond 64K of program memory space. The near qualifier is used to denote that a
variable located in program memory is found at an address less than 64K, or, if a
pointer, that it can access only up to 64K of program memory space.

1月04日 08:25:17
轉換PDF檔 列印


Re: 何時要宣告記憶體為far?
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14102
等級: 72; EXP: 43
HP : 1071 / 1785
MP : 4700 / 69936
離線
再補充一下,因為 Peripheral Library 裡的函數通常為滿足 2M 的位址範為所以會使用 far 的宣告。

所以在叫用函數庫時要注意一下該函數的雛型宣告有沒有使用 far。

far 的宣告是將 64KB 的定址能力擴展到 2MB 的位址,已符合抹些大容量的 PIC18F。

1月04日 12:57:05
轉換PDF檔 列印


Re: 何時要宣告記憶體為far?
資深會員
註冊日期:
2005/02/01 19:56
所屬群組:
註冊會員
文章: 244
等級: 14; EXP: 60
HP : 0 / 340
MP : 81 / 12567
離線
關於記憶體的部份宣告FAR是,我研究了一下英文想確認是指變數的大小會超過一個BANK時,需要宣告為FAR嗎?

1月06日 22:37:12
轉換PDF檔 列印


Re: 何時要宣告記憶體為far?
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14102
等級: 72; EXP: 43
HP : 1071 / 1785
MP : 4700 / 69936
離線
建議看一下 W401 教育材裡的說明。

C18 的 far 一般是用在程式(內定為near)。而RAM變數內定為far 宣告, 反而是用 near 來宣造為 access bank 的變數。

1月07日 16:54:55
轉換PDF檔 列印


Re: 何時要宣告記憶體為far?
資深會員
註冊日期:
2007/06/05 21:45
所屬群組:
註冊會員
文章: 937
等級: 27; EXP: 24
HP : 0 / 656
MP : 312 / 19756
離線
這奡ㄗ 另一種簡易看法...

關於 near,far的簡易看法就是跟通信的
寄信者跟收件者一樣...
near 相同 縣市(距離"近") (相同bank)
far 不同 縣市(距離"遠") (不同bank)

near 寄信(者)地址與收件(者)地址 同一縣市
所以 就縣市局內 分發 郵件
相同bank, 不用切換bank
註:access bank 設計(虛擬)成每一個bank 都有
所以"永遠"都是 near(與其他RAM,同在一個bank(縣市))

far 寄信(者)地址與收件(者)地址 不同縣市
所以 就需要分配到外縣市,再由該縣市局內 分發 郵件
不同bank, 要切換bank

例: ADC 讀取
ADCounts = (ADRESH<<8)+ADRESL;

// 先讀取 ADRESH 與ADRESL (需要切換至正確Bank)
// 然後 再放入 ADCounts
// 1. ADCounts 如果是在asscess bank則不用再切換bank
// 2. ADCounts 如果在其他bank,則需在切換bank
// 同樣放入ADCounts(同樣的C語言程式),
// 但內部(ASM)細部動作有所不同...

1月08日 13:03:51
_________________
程式是
依照寫出來(的code),跑出結果
不是依照你想出來的,得到結果

先有需求規格 後有解決方案
轉換PDF檔 列印






無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
線上教學影片
網頁捷徑
2017 Summer Elite 報名
教育訓練
其它網站連結
電話: 02-25000405
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project