|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
求助:關(guān)于nRF9E5的外部中斷問題 |
| 作者:banana9 欄目:通信技術(shù) |
nRF9E5是內(nèi)嵌51內(nèi)核的芯片,那它的外部中斷是否和51單片機(jī)的一樣呢?是否需要注意什么問題,我的外部中斷怎么也觸發(fā)不了,不知什么問題。向高手請(qǐng)教一下,被這個(gè)問題搞的好麻煩。順便說一下,因?yàn)槌鯇W(xué),對(duì)一些東西不是很熟悉,請(qǐng)不吝賜教。 bit flag_int; void Init(void) { int8u cklf; SPICLK = 0; // Max SPI clock SPI_CTRL = 0x02; // Connect internal SPI controller to Radio // SWITCH to 16MHZ clock: RACSN = 0; SpiReadWrite(RRC | 0x09); cklf = SpiReadWrite(0) | 0x04; RACSN = 1; RACSN = 0; SpiReadWrite(WRC | 0x09); SpiReadWrite(cklf); RACSN = 1; P0_DIR=0xFF; P0_DIR=P0_DIR&0x1F; //led p0.6 p0.5 P0.7 OUTPUT LEDR=0; LEDG=0; P0_DIR &= 0x18; // P0.4 /3 is input LED=0; InitTimer(); EA = 1; } void InitINT() //外中斷初始化 { EA=0; EX0=1; IT0=0; EA=1; return; } void INT0ISR (void) interrupt 0 using 0 //外部中斷0 { flag_int=1; LEDR = 0; LED=1; } main() { unsigned CHAR Fire_send[]={0xAA,0x00,0xC1,0x04,0x00,0x00,0x00,0x00,0x08,0x0D,0x0D}; Init(); InitUart(); InitINT(); delay(5000); Init9E5(); LEDR = 1; LEDG = 1; Rx.NewData = 0; while(1) { if( flag_int==1) { TransmitBytes(Fire_send); LEDR = 0; delay(20000); LEDR = 1; delay(50000); delay(50000); delay(50000); flag_int=0; } else ; } } 這個(gè)程序是一個(gè)程序的一部分,主要是不加中斷的時(shí)候數(shù)據(jù)完全可以接受發(fā)送,可加了中斷,中斷怎么也觸發(fā)不了,幫幫忙看看到底有什么問題啊。 還有9E5的資料比較少,我看了一下英文的datasheeet也講的比較籠統(tǒng),不知還又沒有其他的更詳細(xì)的資料,請(qǐng)知道的兄弟姐妹告知我一下,不勝感激! |
| 2樓: | >>參與討論 |
| 作者: banana9 于 2006/8/7 18:50:00 發(fā)布:
頂一下 不知是做這方面的人少,還是我的詢問方式有誤,抑或是這是個(gè)很老套的帖子,總之是沒人說點(diǎn)什么,我還是自己頂一下吧,期待有懂的人幫一下忙 |
|
| 3樓: | >>參與討論 |
| 作者: 12分 于 2006/8/8 0:49:00 發(fā)布:
你可以軟件使能外部中斷標(biāo)志位 如果不能夠進(jìn)入中斷,說明你的中斷設(shè)置有問題。否則就是沒有相應(yīng)的中斷信號(hào)觸發(fā)中斷。 |
|
| 4樓: | >>參與討論 |
| 作者: banana9 于 2006/8/8 12:02:00 發(fā)布:
可是我看到別人的外部中斷也是這么寫的啊 外部中斷 void InitINT() //外中斷初始化 { EA=0; EX0=1; IT0=0; EA=1; return; } void INT0ISR (void) interrupt 0 using 0 //外部中斷0 { flag_int=1; LEDR = 0; LED=1; } 我實(shí)在找不出其中的錯(cuò)誤,我查了一下,好多的中斷都是這么寫的嘛,到底怎么啦 |
|
| 5樓: | >>參與討論 |
| 作者: banana9 于 2006/9/4 15:54:00 發(fā)布:
知道了問題的所在 9E5中的8051處理器需要設(shè)置IO口的方向和它的復(fù)用功能才能響應(yīng)中斷,具體在中斷初始化時(shí)設(shè)置一下 void InitINT() { EA=1; EX0=1; IT0=0; PX0=1; P0_ALT |= 0x18; // SELECT alternate functions on pins P0.3 and P0.4 P0_DIR |= 0x18; //復(fù)用為外部中斷 return; } |
|
| 免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |