tag:blogger.com,1999:blog-8516057646005806683.post4089685881851278961..comments2023-04-07T18:39:50.976+08:00Comments on Cooper Maa: 3.1) External InterruptsCooper Maahttp://www.blogger.com/profile/14597993167511073460noreply@blogger.comBlogger5125tag:blogger.com,1999:blog-8516057646005806683.post-50933218599710596432012-07-25T13:36:08.585+08:002012-07-25T13:36:08.585+08:00謝謝!!
原來有這個先設定了~
#define ISC00 0
#define ISC01 1
#d...謝謝!!<br />原來有這個先設定了~<br />#define ISC00 0<br />#define ISC01 1<br />#define ISC10 2<br />#define ISC11 3<br />thx!!Sven Wanghttps://www.blogger.com/profile/15916872892211480651noreply@blogger.comtag:blogger.com,1999:blog-8516057646005806683.post-90889044471557535402012-07-24T22:15:29.914+08:002012-07-24T22:15:29.914+08:00這個是 ISC00~ISC11 的巨集定義 (可在 Arduino tools/avr/avr/in...這個是 ISC00~ISC11 的巨集定義 (可在 Arduino tools/avr/avr/include/iom328.h 找到):<br /><br />#define ISC00 0<br />#define ISC01 1<br />#define ISC10 2<br />#define ISC11 3<br /><br />要注意,這只是定義該巨集是第幾個位元,不是指 "那一個位元" 喔!<br /><br />也就是說 ISC10 巨集代表它是第 2 個位元,但並不是指 EICRA 的 bit 2<br /><br />所以如果你寫:<br /><br />ISC11 = 1; <br /><br />那麼這段程式碼在巨集代換後會變成:<br /><br />3 = 1; // 因為 ISC11 為 3<br /><br />這樣就錯了。<br /><br />所以沒有辦法那麼方便,還是得乖乖地搭配 _BV() 巨集來設定指定的位元喔Cooper Maahttps://www.blogger.com/profile/14597993167511073460noreply@blogger.comtag:blogger.com,1999:blog-8516057646005806683.post-50551454136265244332012-07-24T09:48:00.434+08:002012-07-24T09:48:00.434+08:00Cooper好~~~
這邊有一個問題一直困擾我!!
已知道有設定一個巨集
#define _BV...Cooper好~~~<br /><br />這邊有一個問題一直困擾我!!<br /><br />已知道有設定一個巨集<br />#define _BV(x) (1 << x)<br /><br />所以EICRA &= ~_BV(ISC01);的意思應該是<br />EICRA = EICRA & 1111 1101<br />好讓EICRA的第一個bit被設定為0<br /><br />這邊可得到一個結論"ISC01代表1"<br />所以也可以推出另外的結論<br />ISC10代表2<br />ISC11代表3<br /><br />那這邊衍生出一個問題<br />假設我想設定ISC11是1<br />那為什麼我不能直接下指令ISC11=1;,這樣就好了呢?是否一定要使用EICRA |= _BV(ISC11); <br />再者, 如果可以很單純的使用ISC11=1;<br />那是否跟ISC11代表3這樣的設定有矛盾呢?<br /><br />也就是ISC11=3 <=當使用_BV巨集推論出來的<br />ISC11=1 <==希望直接設定暫存器裡面的資料<br /><br />希望Cooper能為我解答,謝謝~~~~<br />我想我有很多觀念需要釐清XDDDSven Wanghttps://www.blogger.com/profile/15916872892211480651noreply@blogger.comtag:blogger.com,1999:blog-8516057646005806683.post-55812758071703159902012-03-02T00:22:00.191+08:002012-03-02T00:22:00.191+08:00我寫錯了!這句:
「FALLING: 當 pin 狀態從 "LOW 到 HIGH 時觸發...我寫錯了!這句:<br /><br />「FALLING: 當 pin 狀態從 "LOW 到 HIGH 時觸發中斷"」<br /><br />應該是這樣才對:<br /><br />「FALLING: 當 pin 狀態從 "HIGH到 LOW 時觸發中斷"」<br /><br />謝謝你的訂正。:)Cooper Maahttps://www.blogger.com/profile/14597993167511073460noreply@blogger.comtag:blogger.com,1999:blog-8516057646005806683.post-12598378669757713062012-03-01T23:52:37.061+08:002012-03-01T23:52:37.061+08:00LOW: 當 pin 為 LOW 時觸發中斷
CHANGE: 當 pin 狀態改變時觸發中斷,不管是...LOW: 當 pin 為 LOW 時觸發中斷<br />CHANGE: 當 pin 狀態改變時觸發中斷,不管是從 HIGH 到 LOW 或從 LOW 到 HIGH<br />FALLING: 當 pin 狀態從 "LOW 到 HIGH 時觸發中斷" ,又稱負緣觸發<br />RISING: 當 pin 狀態從 "LOW 到 HIGH 時觸發中斷" ,又稱正緣觸發<br /><br />我猜打""部分應該其中有一個是打錯的:)是嗎?BunnyBithttps://www.blogger.com/profile/12585367504675911003noreply@blogger.com