• 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)


Re: C18底下開BIT 討論一下
#8
版主
版主


查看用戶資訊
參照:

foxjan 寫道:
阿 說明一下 我是在MPLAB底下用MCC18在組譯
就那個MICROCHIP C18

順帶一提 HI-TECH 的C及組語開發環境會比較好用嗎?

說個題外話

我目前的案子需要用到外部中斷 外部的CLOCK約125K HZ

但是需要計數 16次之後才會進中斷
也就是中斷時間,大約 1/125K HZ*16約等於128us

我目前OSC使用16M HZ 也就是一個指令時間為0.25us

用組語跑中斷 沒有發生過來不及的情形

但是用C跑卻跑的2266一直沒辦法正確處理

所以只好放棄C的開發方式 


128uS 中斷一次不算快,用 C 寫應是OK的,除非你在中斷裡作太多事了或有一些數學運算的運算。建議你用 MPALB SIM 模擬一下中斷所需的執行時間,C18 & PICC18 都可以支援 In-Line Assembly 的功能,配合著使用可以解決一些對Timing 要求較高的應用。

發表於: 2010/1/15 14:32
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: C18底下開BIT 討論一下
#7
資深會員
資深會員


查看用戶資訊
尚未預設要多久中斷一次,只是討論C和組語在中斷使用上的差異,如果像你說的時間這麼短的情況之下就另當別論,
只是不太清楚你用組語跟C在中斷時有差很多嗎?
當然背景儲存都一定是會跑的!

另外您的應用有需要這麼緊湊嗎?扣掉儲存的及其它還有取回儲存的數據,應該也都很趕吧!

發表於: 2010/1/15 12:58
不怕苦...苦半輩子;怕苦...苦一輩子
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: C18底下開BIT 討論一下
#6
資深會員
資深會員


查看用戶資訊
參照:

lancer0498 寫道:
做一個假設,提出討論,如有跟您的方式不同,
請別介意

void interrupt TIMER1_ISR(void)
{
cnt++;
if(cnt==16)
FLAG.TMR1_16=1;
TMR1IF=0;
}

int main(void)
{
.
.
.
while(1)
{
if(FLAG.TMR1_16)
{
do your wrok...;
FLAG.TMR1=0;
}
}
}

應該沒有幾個指令ㄚ


這個方式會更慘 因為變成TIMER1每8us就進一次中斷

8us/0.25us=32個指令
你打算中斷做爆他,還是主程式一直被中斷,主程式打死不能關中斷喔

發表於: 2010/1/15 12:02
My name is jan,Jan是棒的
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: C18底下開BIT 討論一下
#5
資深會員
資深會員


查看用戶資訊
做一個假設,提出討論,如有跟您的方式不同,
請別介意

void interrupt TIMER1_ISR(void)
{
cnt++;
if(cnt==16)
FLAG.TMR1_16=1;
TMR1IF=0;
}

int main(void)
{
.
.
.
while(1)
{
if(FLAG.TMR1_16)
{
do your wrok...;
FLAG.TMR1=0;
}
}
}

應該沒有幾個指令ㄚ

發表於: 2010/1/15 11:24
不怕苦...苦半輩子;怕苦...苦一輩子
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: C18底下開BIT 討論一下
#4
資深會員
資深會員


查看用戶資訊
阿 說明一下 我是在MPLAB底下用MCC18在組譯
就那個MICROCHIP C18

順帶一提 HI-TECH 的C及組語開發環境會比較好用嗎?

說個題外話

我目前的案子需要用到外部中斷 外部的CLOCK約125K HZ

但是需要計數 16次之後才會進中斷
也就是中斷時間,大約 1/125K HZ*16約等於128us

我目前OSC使用16M HZ 也就是一個指令時間為0.25us

用組語跑中斷 沒有發生過來不及的情形

但是用C跑卻跑的2266一直沒辦法正確處理

所以只好放棄C的開發方式 

發表於: 2010/1/15 10:29
My name is jan,Jan是棒的
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: C18底下開BIT 討論一下
#3
資深會員
資深會員


查看用戶資訊
union {
unsigned char var;
struct{
unsigned int bit0 : 1;
unsigned int : 6; //padding
unsigned int bit7 : 1;
} bits;
} uvar;
現在你可以看到:
uvar.var 􀃆8 bits 的變數
uvar.bits.bit7 􀃆僅僅bit 7 的位元

從Hi-Tech_PICC_Workshop摘錄的.....

看來foxjan的宣告方式不大對喔!

看看這樣行不行...
union
{
unsigned char FLAG;
struct
{
unsigned 0_BIT:1;
unsigned 1_BIT:1;
unsigned 2_BIT:1;
unsigned 3_BIT:1;
unsigned 4_BIT:1;
unsigned 5_BIT:1;
}FLAG_BIT;
}uFLAG;

發表於: 2010/1/15 10:22
不怕苦...苦半輩子;怕苦...苦一輩子
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: C18底下開BIT 討論一下
#2
版主
版主


查看用戶資訊
位元結構是標準 C 的用法,這是一定要知道的。建議你參考一下W401 C18 教材裡的第四章後面的說明,那裏有 指標、陣列,struct & union 的說明與用法。

http://www.microchip.com.tw/modules/w ... glefile.php?cid=4&lid=236

FLAG 與 FLAG_BIT 當然不一樣,至少英文字數就不一樣了。FLAG_BIT 是屬於結構變數他無法單獨使用必須與期結構位元一起使用的。

例 : FLAG_BIT.0_BIT = 1 ;

發表於: 2010/1/15 10:14
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


C18底下開BIT 討論一下
#1
資深會員
資深會員


查看用戶資訊
又是sturt 又是union的 被搞死了

最後參考IO.H檔 開出的方式如下

unsigned char FLAG;
union
{
struct
{
unsigned 0_BIT:1;
unsigned 1_BIT:1;
unsigned 2_BIT:1;
unsigned 3_BIT:1;
unsigned 4_BIT:1;
unsigned 5_BIT:1;
};
}FLAG_BIT;

.....組譯過了 但是程式怪怪的 最後再FILE REGISTERS一看

FLAG跟FLAG_BIT不是同一個位置 ,那我是設爽的嗎

有什麼標準格式嗎?

因為目前跑C的話,中斷來不及反應,所以改用組語寫了
但是還是想跟大家討論看看解決方式

發表於: 2010/1/15 9:50
My name is jan,Jan是棒的
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... ]

教育訓練中心

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