|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
緊急求助!!!!! |
| 作者:開心啤酒 欄目:DSP技術(shù) |
各位高手,本人遇到一難題,在程序中,AD采樣已經(jīng)屏蔽,只有SCI功能.問題是:通過SCI輸出的數(shù)據(jù)不是我所期望的.怎么調(diào)也不對.程序源代碼如下,肯請各位高手給予指點(diǎn).謝謝. /* AD采樣基本程序,并帶有排隊濾波函數(shù) */ #include "global.c" void SystemInit(); void Timer1Init(); void KickDog(); void AD_Sample(); void Que(); void SCI_Init(); void SCI_Send(); int numled0=200; unsigned int t0=0,t1=0,i=0,j=0; unsigned int RESULT_0=0,RESULT_8=0; unsigned int AD0[18],AD8[18],AD_0,AD_8,AD_FLAG=0; float AD_SIG0=0.0,AD_SIG8=0.0; unsigned int SCI_RXDATA; main() { SystemInit(); //系統(tǒng)初始化 MCRA=MCRA & 0xC0FF; //IOPB0-6設(shè)為IO口模式 PBDATDIR=0xFFC2; //所有LED=0 PBDATDIR=PBDATDIR |0x003D; //所有LED=1 SCI_Init(); Timer1Init(); //定時器初始化 asm(" CLRC INTM "); while(1) { if(AD_FLAG==1) { AD_FLAG=0; for(i=0;i<18;i++) { // AD_Sample(); AD0[i]=RESULT_0; AD8[i]=RESULT_8; } //Que(); //排隊濾波 } } } void SystemInit() { asm(" SETC INTM "); /* 關(guān)閉總中斷 */ asm(" CLRC SXM "); /* 禁止符號位擴(kuò)展 */ asm(" CLRC CNF "); /* B0塊映射為 on-chip DARAM*/ asm(" CLRC OVM "); /* 累加器結(jié)果正常溢出*/ SCSR1=0x87FE; //**83FE** /* 系統(tǒng)時鐘CLKOUT=20*2=40M */ /* 打開ADC,EVA,EVB,CAN和SCI的時鐘*/ WDCR=0x006F; /* 禁止看門狗,看門狗時鐘64分頻 */ KickDog(); /* 初始化看門狗 */ IFR=0xFFFF; /* 清除中斷標(biāo)志 */ IMR=0x0002; /* 打開中斷2*/ } void Timer1Init() { EVAIMRA=0x0080; // 定時器1周期中斷使能 EVAIFRA=0xFFFF; // 清除中斷標(biāo)志 GPTCONA=0x0000; T1PR=2500; // 定時器1初值,定時0.4us*2500=1ms T1CNT=0; T1CON=0x144E; //增模式, TPS系數(shù)40M/16=2.5M,T1使能 } void AD_Sample() { ADCTRL1=0x4000; /* ADC模塊復(fù)位 */ asm(" NOP "); ADCTRL1=0x0020; /* 自由運(yùn)行,啟動/停止模式,雙排序器工作模式 */ MAXCONV=0x0000; CHSELSEQ1=0x0000; //第0通道 ADCTRL2=0x4000; //復(fù)位使排序器指針指向CONV00 ADCTRL2=0x2000; /* 啟動ADC轉(zhuǎn)換 */ while( (ADCTRL2&0x1000)==0x1000); /*等待轉(zhuǎn)換完成 */ asm(" NOP "); asm(" NOP "); RESULT_0=RESULT0>>6; MAXCONV=0x0000; //第8通道 CHSELSEQ3=0x0008; ADCTRL2=0x0040; ADCTRL2=0x0020; while( (ADCTRL2&0x0010)==0x0010); asm(" NOP "); asm(" NOP "); RESULT_8=RESULT8>>6; } void Que() { unsigned int MaxAD0=0; unsigned int MinAD0=AD0[0]; unsigned int MaxAD8=0; unsigned int MinAD8=AD8[0]; unsigned int tempAD0=0; &n |
| 2樓: | >>參與討論 |
| 作者: 開心啤酒 于 2007/3/16 10:15:00 發(fā)布:
另:本人使用的是TMS320LF2407A |
|
| 3樓: | >>參與討論 |
| 作者: 開心啤酒 于 2007/3/16 12:22:00 發(fā)布:
請高手指點(diǎn)迷津! 問題找到了. SCSR1=0x87FE; //**83FE** 如果是83FE就對了。是87FE就錯了。也就是說倍頻是2就對了。如果是1就錯了.我想知道這是為什么,請高手給予指點(diǎn).謝謝了。 |
|
| 4樓: | >>參與討論 |
| 作者: nxy825715 于 2007/3/16 15:21:00 發(fā)布:
個人見解: 老兄,不要上來就一大把代碼,過客沒有那么多的時間呀. 提問題的時候抓關(guān)鍵. |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |