📄 ad.c
字号:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//Shin, On Pil
#include "def.h"
#include "option.h"
#include "2410addr.h"
#include "2410lib.h"
#include "2410slib.h"
#include "2410etc.h"
#include "2410IIC.h"
#include "2410iis.h"
#include "2410int.h"
#include "2410RTC.h"
#include "2410swi.h"
//#include "cpuspeed.h"
//#include "lcdpwr.h"
#include "timer.h"
//Kang, Weon Tark
#include "adc.h"
#include "dma.h"
#include "dma2.h"
#include "eint.h"
#include "extdma.h"
#include "k9s1208.h"
#include "mmu.h"
#include "nwait.h"
#include "sdi.h"
#include "stone.h"
#include "ts_auto.h"
#include "ts_sep.h"
#include "usbfifo.h"
//Shin, Jeong Seuk
#include "IrDA.h"
#include "lcd.h"
#include "lcdlib.h"
#include "glib.h"
#include "palette.h"
#include "spi.h"
#include "uart0.h"
#include "uart1.h"
#include "uart2.h"
//Kong, In Wook
#include "etc.h"
#include "flash.h"
#include "idle.h"
#include "pd6710.h"
#include "pll.h"
#include "power.h"
#include "pwr_c.h"
#include "stop.h"
Timer_TOUT1()
{
int save_B,save_G,save_H,save_PB,save_PG,save_PH,save_MI;
char key;
save_B = rGPBCON;
save_G = rGPGCON;
save_H = rGPHCON;
save_PB = rGPBUP;
save_PG = rGPGUP;
save_PH = rGPHUP;
save_MI = rMISCCR;
rGPBUP = rGPBUP & ~(0x1f) | 0x1f; //GPB4 ~ 0
rGPBCON = rGPBCON & ~(0x3ff) | 0x2aa; //Function Setting TCLK0, TOUT3 ~ 0
rGPGUP = rGPGUP & ~(0x800) | 0x800; //GPG11
rGPGCON = rGPGCON & ~(0xc00000) | 0xc00000; //TCLK1
rGPHUP = rGPHUP & ~(0x200) | 0x200; //GPH9
rGPHCON = rGPHCON & ~(0x3<<18) | (0x2<<18); //CLKOUT0
rMISCCR = rMISCCR & ~(0xf0) | 0x40; //Select PCLK with CLKOUT0
rTCFG0 = rTCFG0 & ~(0xffffff) | 0x10000; //Dead zone=1,Prescaler1=0,Prescaler0=0
rTCFG0 = rTCFG0 & ~(0xffffff) | 0x44401; //Dead zone=4,Prescaler1=68(0x44),Prescaler0=68(0x44)
// Uart_Printf("rTCFG0 = 0x%6x <= Timer configuration register0.\n",rTCFG0);
Uart_Printf("External TOUT[0,1,2,3] Check Selected\n");
// Uart_Printf("Probing TCLK 0 : U16 - 14\n");
// Uart_Printf("Probing TCLK 1 : S4 - 1\n");
// rTCFG1 = rTCFG1 & ~(0xffffff) | 0x44444; //Dead zone=4,Prescaler1=68(0x44),Prescaler0=68(0x44)
rTCNTB0 = rTCNTB0 & ~(0xffff) | 2000; //(1/(50MHz/69/2)) * 2000 = 5.5200 msec (181.159 Hz)
//(1/(50.7MHz/69/2))* 2000 = 5.4437 msec (183.698 Hz)
//(1/(50MHz/1/2)) * 2000 = 0.0800 msec ( 12.500 KHz)
//(1/(50.7MHz/1/2)) * 2000 = 0.0788 msec ( 12.690 KHz)
// rTCNTB1 = rTCNTB1 & ~(0xffff) | 4000; //(0.0000027600003) * 4000 = 11.0400 msec ( 90.579 Hz)
//(0.0000027218935) * 4000 = 10.8875 msec ( 91.848 Hz)
//(0.00000004) * 4000 = 0.1600 msec ( 6.250 KHz)
//(0.0000000394477) * 4000 = 0.1577 msec ( 6.337 KHz)
rTCNTB1 = rTCNTB1 & ~(0xffff) | 2;
rTCNTB2 = rTCNTB2 & ~(0xffff) | 5000; //(0.0000027600003) * 5000 = 13.8000 msec ( 72.463 Hz)
//(0.0000027218935) * 5000 = 13.6094 msec ( 73.478 Hz)
//(0.00000004) * 5000 = 0.2000 msec ( 5.000 KHz)
//(0.0000000394477) * 5000 = 0.1972 msec ( 5.070 KHz)
rTCNTB3 = rTCNTB2 & ~(0xffff) | 10000; //(0.0000027600003) * 10000 = 27.6000 msec ( 36.231 Hz)
//(0.0000027218935) * 10000 = 27.2189 msec ( 36.739 Hz)
//(0.00000004) * 10000 = 0.4000 msec ( 2.500 KHz)
//(0.0000000394477) * 10000 = 0.3944 msec ( 2.535 KHz)
rTCMPB0 = 2000 - 1000; //(H/L)duty 50%
// rTCMPB1 = 4000 - 2000;
rTCMPB1 = 1;
rTCMPB2 = 5000 - 2500;
rTCMPB3 = 10000 - 5000;
// Uart_Printf("rTCMPB0 = %d <= Timer 0 compare buffer register.\n",rTCMPB0);
// Uart_Printf("rTCON = 0x%6x (Before) <= Timer control register.\n",rTCON);
// [22:20] [19:16] [15:12] [11:8] [7:4] [3:0]
// 110 1010 1010 1010 0000 1010
rTCON = rTCON & ~(0xffffff) | 0x6aaa0a; //Auto reload, Inverter off, Manual update, Stop, Dead zone disable
rTCON = rTCON & ~(0xffffff) | 0x599909; //Auto reload, Inverter off, No operation, Start, Dead zone disable
// Uart_Printf("rTCON = 0x%6x (After) <= Timer control register.(0x599909)\n\n",rTCON);
}
void Test_Ad()
{
int isBusy,pData,ADdata;
volatile int * nWR;
float r;
Timer_TOUT1();
rGPFCON = rGPFCON&0xfffff3ff; //10-11 bit = 'b00
rGPFUP = 0xffff;
nWR=(volatile int*)(0x28500000); //AD片选地址
while(1)
{
*nWR=0x00000000;
ADdata=*nWR;
//读BUSY信号,从Eint5获得
do{
// Uart_Printf("GPFDAT =0x%x\n",rGPFDAT);
pData=rGPFDAT; //busy信号所在io口
isBusy=(pData>>5)&0x1;
}while(isBusy==1);
do{
// Uart_Printf("GPFDAT =0x%x\n",rGPFDAT);
pData=rGPFDAT; //busy信号所在io口
isBusy=(pData>>5)&0x1;
}while(isBusy==0);
ADdata=*nWR;
ADdata=ADdata&(0x0fff);
r = ((float)(ADdata))/((float)(0xfff))*5.0*100000;
Uart_Printf("%6d/100000\n",(int)(r));
// r = ((float)ADdata/(float)(0xfff))*5.0;
// Uart_Printf("%f\n",r);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -