|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
lpc2132的RTC報(bào)警設(shè)置問題。 |
| 作者:zhaojiude 欄目:ARM技術(shù) |
LPC2132的RTC報(bào)警設(shè)置可否時(shí)、分、秒、周多項(xiàng)設(shè)置?我試過,仿佛只能單獨(dú)設(shè)置一項(xiàng),才能產(chǎn)生中斷,但我需要多項(xiàng)匹配才產(chǎn)生中斷報(bào)警呀,象8563時(shí)鐘芯片都可以的,是否有特別的設(shè)置呀?請速告之,急!。。。。。。。! |
| 2樓: | >>參與討論 |
| 作者: zlgARM 于 2005/9/16 13:22:00 發(fā)布:
可以,通過設(shè)置報(bào)警屏蔽寄存器即可實(shí)現(xiàn)您的要求 |
|
| 3樓: | >>參與討論 |
| 作者: zhaojiude 于 2005/9/16 13:41:00 發(fā)布:
LPC2132的RTC報(bào)警設(shè)置問題 我就是在報(bào)警屏蔽寄存器里設(shè)置的呀,如下: void RTCAlarmSet(void) { AMR = 0xf9; //周、時(shí)、分、秒報(bào)警允許。 ALDOW = RtcAlarm.Weekday; ALHOUR = RtcAlarm.Hour; ALMIN = RtcAlarm.Minute; ALSEC = RtcAlarm.Second; } 當(dāng)AMR = 0XF8或AMR = 0XF9;允許時(shí)、分、秒等兩個(gè)及以上報(bào)警時(shí),到了設(shè)定的時(shí)間,不會產(chǎn)生中斷;而當(dāng)AMR = 0XF7,只有一個(gè)周報(bào)警時(shí),到了設(shè)定的周數(shù),會產(chǎn)生報(bào)警呀? void __irq RTC_int (void) { counter++; if(counter>16) counter=0; if ((IO0SET & BEEP) == 0) IO0SET = BEEP; else IO0CLR = BEEP; // MSPI_SendData(DISP_TAB[counter]); // 數(shù)碼管顯示 IO1CLR = LEDS8 & (1 << (18+2)); // 點(diǎn)亮LED4 ILR = 0x03; // 清除中斷標(biāo)志 VICVectAddr = 0x00; // VIC結(jié)束 } RTC相關(guān)的初始化設(shè)置: VICVectCntl3 = 0x20 | 13; // 分配RTC中斷到向量中斷3 VICVectAddr3 = (uint32)RTC_int; // 設(shè)置中斷服務(wù)程序地址 ILR = 0x03; // 清除RTC中斷標(biāo)志 VICIntEnable = 1 << 13; // 使能RTC中斷 //========================測試RTC============================================== if ((IO0PIN & KEY6) == 0) // 如果KEY6按下 { key = 6; IO1CLR = LEDS8 & (1 << (18+4)); // 點(diǎn)亮LED5 DelayNS(30); IO1SET = LEDS8 & (0xFF << (18));// 熄滅所有LED //=================== RtcTime.Year = 05; RtcTime.Month = 9; RtcTime.Day = 16; RtcTime.Weekday = 6; RtcTime.Hour = 23; RtcTime.Minute = 59; RtcTime.Second = 00; RtcAlarm.Weekday = 0; RtcAlarm.Hour =24 ; RtcAlarm.Minute = 00; RtcAlarm.Second = 00; RTCInit (); RTCAlarmSet(); //=================== } |
|
| 4樓: | >>參與討論 |
| 作者: eleven11 于 2005/9/16 14:06:00 發(fā)布:
摟住你想的實(shí)在太簡單了 組合報(bào)警同時(shí)不沖突還需要進(jìn)行軟件編程進(jìn)行篩選,不過實(shí)現(xiàn)不難的,我現(xiàn)在就是可同時(shí)進(jìn)行時(shí)、分、秒、周多項(xiàng)設(shè)置但不沖突 |
|
| 5樓: | >>參與討論 |
| 作者: zhaojiude 于 2005/9/16 14:19:00 發(fā)布:
樓上兄弟,確定不可組合報(bào)警嗎?! 樓上兄弟,確定LPC2132不可組合報(bào)警嗎?! 很多RTC時(shí)鐘芯片是可以的。軟件編程是可以,但麻煩呀,是先設(shè)置周,到了周報(bào)警,再設(shè)置日報(bào)警,日報(bào)警到了,再設(shè)置時(shí)報(bào)警嗎? 請指點(diǎn)呀! |
|
| 6樓: | >>參與討論 |
| 作者: zlgARM 于 2005/9/17 11:22:00 發(fā)布:
re: 設(shè)置多個(gè)匹配條件中斷沒有問題: #include "config.h" #define BEEP 1 << 7 // P0.7控制蜂鳴器 /* ******************************************************************************************************** ** 函數(shù)名稱 : RTC_Int() ** 功能描述 : RTC中斷服務(wù)函數(shù)。 ** 入口參數(shù) :無 ** 出口參數(shù) :無 ******************************************************************************************************* */ void __irq RTC_Int(void) { /* 取反BEEP控制口 */ if((IO0SET & BEEP) == 0) IO0SET = BEEP; else IO0CLR = BEEP; ILR = 0x03; // 清除RTC報(bào)警中斷標(biāo)志 VICVectAddr = 0; // 向量中斷結(jié)束 } /* ******************************************************************************************************** ** 函數(shù)名稱: main() ** 功能描述: RTC秒定時(shí)中斷實(shí)驗(yàn)。 ******************************************************************************************************* */ int main (void) { IO0DIR = BEEP; IO0SET = BEEP; IRQEnable(); // IRQ中斷使能 /* RTC初始化 */ PREINT = Fpclk / 32768 - 1; // 設(shè)置基準(zhǔn)時(shí)鐘分頻器 PREFRAC = Fpclk - (Fpclk / 32768) * 32768; YEAR = 2003; // 初化年 MONTH = 6; // 初化月 DOM = 20; // 初化日 /* 初始化時(shí)間 */ HOUR = 8; MIN = 30; SEC = 00; /* 設(shè)置報(bào)警時(shí)間 */ ALHOUR = 8; ALMIN = 31; ALSEC = 10; CCR = 0x03; AMR = 0xF8; // 允許時(shí)分秒報(bào)警 ILR = 0x03; // 清除RTC增量和報(bào)警中斷標(biāo)志 CCR = 0x01; // 啟動RTC /* VIC初始化 */ VICIntSelect = 0x00; // 設(shè)置所有中斷連接IRQ中斷 VICVectCntl0 = 0x20 | 13; // 分配通道0 VICVectAddr0 = (int)RTC_Int; // 設(shè)置中斷服務(wù)程序地址 VICIntEnable = (1 << 13); // 使能RTC中斷 while(1); // 等待中斷 return 0; } |
|
| 7樓: | >>參與討論 |
| 作者: eleven11 于 2005/9/17 11:47:00 發(fā)布:
zlgARM沒有理解樓主的意思 他的意思是報(bào)警復(fù)用,比如我要某個(gè)時(shí)間產(chǎn)生報(bào)警中斷,然后每個(gè)增量中斷也要復(fù)用,這需要軟件編程進(jìn)行判斷的 * - 本貼最后修改時(shí)間:2005-9-17 12:04:26 修改者:eleven11 |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |