音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | 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

avr外部中斷出問(wèn)題了,請(qǐng)求分析

作者:ipman 欄目:單片機(jī)
avr外部中斷出問(wèn)題了,請(qǐng)求分析
void initExtInt(void)
{
    cbi(DDRD,PD3);
    sbi(PORTD,PD3);
    MCUCR = (1<<ISC11);// 下降沿觸發(fā)
    enable_external_int(_BV(INT1));
}
SIGNAL(SIG_INTERRUPT1)
{
    cli();
    decode();
    sei();
}
u08 decode()
{
    PORTA&=0xFE;
    delay_ms(1000);    //結(jié)束碼
    PORTA=0xFF;
    delay_ms(1000);
    return 0;
}
我在2秒內(nèi)快速連續(xù)觸發(fā)2次,PA7連接到一個(gè)LED上,竟然閃爍2次??? 

* - 本貼最后修改時(shí)間:2005-12-14 16:46:48 修改者:ipman

2樓: >>參與討論
javie
應(yīng)該是你的delay程序不準(zhǔn)的問(wèn)題
 
3樓: >>參與討論
ipman
這個(gè)誤差不大吧
void delay_ms(u16 n)
{
    while(n--)
        _delay_ms(1);
}

4樓: >>參與討論
ipman
快速觸發(fā)2次,應(yīng)該閃爍一次才對(duì),因?yàn)榈诙斡|發(fā)已經(jīng)被屏蔽了啊
 
5樓: >>參與討論
javie
最好用示波器看一下波形
 
6樓: >>參與討論
ipman
示波器看到的波形
 

7樓: >>參與討論
ipman
打電話到雙龍,竟然讓我手動(dòng)清除一下GIFR
GCC竟然沒(méi)有GIFR定義,好奇怪

8樓: >>參與討論
javie
用的多大的晶振?
熔絲位配置對(duì)否?
我懷疑就是delay不準(zhǔn)確

9樓: >>參與討論
ipman
這么搞都沒(méi)用,到底問(wèn)題在哪里?
SIGNAL(SIG_INTERRUPT1)
{
    cli();
    enable_external_int(0);
    decode(remoteId);
    enable_external_int(_BV(INT1));
    sei();
}
程序就這么點(diǎn),bug都無(wú)法查出來(lái) :(

10樓: >>參與討論
javie
雙龍的一些工程師很嫩的,經(jīng)驗(yàn)不夠
不要太相信雙龍

11樓: >>參與討論
javie
你在中斷服務(wù)程序里玩一下
把這個(gè)時(shí)間弄長(zhǎng)一點(diǎn),比如10S
你再按鍵
看是否是重復(fù)響應(yīng)中斷的問(wèn)題

1S時(shí)間太短了


12樓: >>參與討論
kanprin
不知道SIGNAL()處理中斷服務(wù)時(shí)是否先清除中斷標(biāo)志?
我一直都沒(méi)有找到SIGNAL()的原函數(shù)。不清楚他是如何寫(xiě)的。如果是一進(jìn)中斷就清楚了中斷標(biāo)志的話,雖然說(shuō)你在中斷處理時(shí)關(guān)了中斷,但中斷標(biāo)志還是會(huì)被硬件置位。所以當(dāng)你退出中斷服務(wù)程序時(shí)還會(huì)再次產(chǎn)生中斷。要不你在中斷返回時(shí)加入

SIGNAL(SIG_INTERRUPT1)
{
    cli();
    decode();
    //(在此處加上清除外部中斷1標(biāo)志的語(yǔ)句)
    sei();
}

在看一下還會(huì)不會(huì)有這種情況發(fā)生?

13樓: >>參與討論
ipman
最終被我摸索出來(lái)了,結(jié)論就是別看中文版的手冊(cè)
SIGNAL(SIG_INTERRUPT1) {
    decode();
    sbi(GIFR,INTF1);
}
再來(lái)看看雙龍的翻譯:
====================
Bit 7 – INTF1: 外部中斷標(biāo)志1
INT1引腳電平發(fā)生跳變時(shí)觸發(fā)中斷請(qǐng)求,并置位相應(yīng)的中斷標(biāo)志INTF1。如果SREG的位
I以及GICR寄存器相應(yīng)的中斷使能位INT1為”1”,MCU即跳轉(zhuǎn)到相應(yīng)的中斷向量。進(jìn)入中
斷服務(wù)程序之后該標(biāo)志自動(dòng)清零。此外,標(biāo)志位也可以通過(guò)寫(xiě)入”1” 來(lái)清零。
=======================
真是不怎么地

14樓: >>參與討論
ipman
ATMEL真是好心阿,把中斷期間還發(fā)生的io變化給保存住了
可不知道這個(gè)好心,浪費(fèi)我一下午時(shí)間摸索

15樓: >>參與討論
hotpower
暈~~~觸發(fā)2次閃爍2次應(yīng)該是對(duì)的,仔細(xì)想想吧
 
16樓: >>參與討論
ipman
呵呵,在前一次中斷函數(shù)沒(méi)有結(jié)束前,中斷應(yīng)該屏蔽啊
 
17樓: >>參與討論
hotpower
中斷中玩細(xì)活---暈~~~
 
18樓: >>參與討論
kanprin
中斷屏蔽只是暫時(shí)不執(zhí)行中斷服務(wù)而已。
當(dāng)再次開(kāi)啟中斷的時(shí)候,只要中斷標(biāo)志還在,中斷仍將產(chǎn)生。 

19樓: >>參與討論
zsmbj
當(dāng)然要保存了,保證每個(gè)中斷都被捕獲,否則中斷還有什么意義。
所以當(dāng)你按第一按鍵時(shí),中斷進(jìn)入,中斷標(biāo)志被自動(dòng)清除,執(zhí)行中斷程序。而第二次按鍵中斷標(biāo)志又被置位,當(dāng)退出中斷時(shí),由于標(biāo)志沒(méi)有被清除,就會(huì)再次進(jìn)入中斷一次。
還有SIGNAL中斷里不需要先cli后sei了,因?yàn)楸旧鞸IGNAL中斷就是有cli功能的,在退出中斷后自動(dòng)sei了,所以你那2句話是多余的。


20樓: >>參與討論
hotpower
zsmbj真是好老師
SIGNAL搞cli和sei很有暈意...


參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請(qǐng)不要?jiǎng)h這樣的帖子,謝謝
為什么這個(gè)指針會(huì)有警告呢?請(qǐng)各位幫忙看看
求助:關(guān)于串口通訊工具(謝謝各位了)
avrgcc
學(xué)習(xí)MEGage16
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)