智能车制作
标题:
XS128 的 AD转换
[打印本页]
作者:
huosfox
时间:
2010-6-5 23:20
标题:
XS128 的 AD转换
#include <hidef.h> /* common defines and macros */
#include <MC9S12XS128.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
void setbusclock(void)
{
CLKSEL=0X00; //disengage PLL to system
PLLCTL_PLLON=1; //turn on PLL
SYNR=0xC5;
REFDV=0x81; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=32MHz;
_asm(nop); //BUS CLOCK=16M ?
_asm(nop);
while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;
CLKSEL_PLLSEL =1; //engage PLL to system;
}
void vADInit(void)
{
ATD0CTL1=0b00000000;//8位精度
ATD0CTL2=0b01000000;//禁止外部触发,标志位快速清零,中断禁止
ATD0CTL3=0b10001000;//右对齐无符号.转换序列长度为1,No FIFO模式,Freeze模式下继续转换?
ATD0CTL4=0b00000111;//4AD采样周期,ATDClock=[BusClock*0.5]/[PRS+1] ; PRS=15, divider=32 ?
ATD0CTL5=0b00100000;//特殊通道禁止,单通道采样,扫描模式连续采样,ch AN0
ATD0DIEN=0b00000000;//禁止数字输入
}
unsigned char ReadATD()
{
byte ad=0;
while(!ATD0STAT0_SCF);
ad= ATD0DR0L;
return ad;
}
void main(void) {
setbusclock();
DDRB=0xFF;
PORTB=0x00;
vADInit();
EnableInterrupts;
for(;;){
PORTB=ReadATD(); //在B口显示转换值
}
}
S12XS系列单片机是在S12XE系列的基础上去掉XGate协处理器的低成本系列单片机(让我说就是在蛋糕上留有牙齿印的阉割产品)。采用S12X V2 CPU内核,标称总线频率40MHz(可利用锁相环超频),载有ECC(片内纠错模块)功能,目前有64Pins,80Pins,112Pins三种封装,对应管脚与MC9S12XE系列相兼容,与MC9S12DG不完全兼容(变化不大,以前板子稍作修改就可使用)。片内(至少)自带一个CAN总线模块,两个SCI模块,支持LIN总线,一个SPI,八路定时器,八路16位计数器,四路外部中断,以及八路PWM输出,八路AD(可选精度为8位,10位或12位),转换时间标称3us(较MC9S12DG128超频到40MHz的转换时间7us有所提高)。
关于V2内核,在技术上的创新主要在一下几方面:
1) 在16位条件码寄存器的高8位增加U位,控制运行状态为系统运行和用户运行。
2) 增加了ECC模块,及Error Code Correction 错误代码纠正模块。
3) 对Flash存储器做了重新规划和管理,方便了用户擦写。
4) 与V2配合使用的XGate为争强型协处理器,支持中断嵌套。
关于S12XE系列单片机,则是基于S12XD系列的争强型,主要表现在V2内核和锁相环模块增加了内部滤波器和失效功能探测功能。
综上所述,S12XS系列单片机就S12系列单片机的主要可见进步就是增大了总线频率,提高了AD精度和转换速度,增加了ECC模块,应用中去掉了外部锁相环电路,和模式选择部分,寻址方式和寻址范围有所变化。就我认为,大家能用S12的还是不必非要升级到S12XS,技术有进步,但是成本也有提高,而且其技术进步的部分,相对于成本提高,基本没什么意义。
转自
http://phenix-9899.blogbus.com/logs/38979492.html
作者:
eminem
时间:
2010-11-14 15:27
十分感谢,正好在用AD
作者:
gao0708
时间:
2011-2-15 19:16
谢谢
作者:
DONT
时间:
2011-2-24 20:56
应该认真看的
作者:
lenglee
时间:
2011-3-6 15:06
XS128到底有没有协处理器?
作者:
han个个呆呆
时间:
2011-3-6 16:03
作者:
zyx89820
时间:
2011-3-11 08:44
XIEXIE
作者:
zhangyuan
时间:
2011-3-11 11:17
谢谢~
作者:
韬奇
时间:
2011-3-25 16:34
顶
作者:
wangangelayu
时间:
2011-3-26 19:34
顶!
作者:
nevergiveup.p
时间:
2011-4-10 09:11
谢了
作者:
liunan1019
时间:
2011-4-12 23:27
呵呵,感触很深..
作者:
天涯搁浅
时间:
2011-4-23 11:10
学习了 谢谢
作者:
瞬风
时间:
2011-4-23 12:21
真谢谢了,仙子啊正纠结着
作者:
瞬风
时间:
2011-4-23 12:21
真谢谢了,仙子啊正纠结着
作者:
等你转身123
时间:
2011-4-28 23:27
引用!
作者:
dbb935623040
时间:
2011-7-9 15:54
给力啊
作者:
taotao7636
时间:
2011-8-2 22:34
谢谢,我看的教程是错的,误人子弟啊!!
作者:
wscjun
时间:
2011-9-24 16:40
学习 值得思考
作者:
qq703242889
时间:
2011-11-3 17:15
楼主您好。这个我用AN0口输入模拟电压,为什么好像B口乱码了。
作者:
刘世林
时间:
2011-11-3 17:17
顶
作者:
meiying3028
时间:
2011-11-9 20:38
顶!
作者:
tongyonghua123
时间:
2011-11-12 15:02
学习来了
作者:
理工小别
时间:
2011-11-14 20:40
XX
作者:
骑单车的日子
时间:
2012-3-13 11:12
ad= ATD0DR0L; ATD0DR0L是什么意思,低位吗?
作者:
骑单车的日子
时间:
2012-3-13 11:23
刚才查了查手册,知道了!
作者:
夏天C的微笑
时间:
2012-3-22 19:14
这程序没问题吗??楼主试过么???
作者:
夏天C的微笑
时间:
2012-3-22 19:17
帮你算过PLL时钟,错了、、、
作者:
935631408
时间:
2012-6-6 19:25
顶!
再配合一点定时中断就更好啦!
作者:
asd928757643
时间:
2012-6-6 21:58
thanks!!!
作者:
happy★熊
时间:
2012-6-7 09:07
作者:
洧空颜
时间:
2013-1-1 21:09
ATDCTL0为一个8位寄存器,为何在赋值时用0b00000000。
作者:
Raphael
时间:
2013-1-22 20:12
谢谢~~
作者:
荷马111
时间:
2013-1-24 15:56
谢了
作者:
穆旦阿斗
时间:
2013-3-27 19:01
条件代码寄存器是什么?CCR?在CODE5.1里面没有啊
作者:
春日迟迟
时间:
2013-8-8 09:30
不明觉厉
作者:
179170821
时间:
2013-10-30 12:22
有个问题想问一下,上面这个程序的AD转换转的是什么,我在数码管显示了10001001
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2