MC9S12dg128B的AD转换中断问题,请各位帮忙看看.
- UID
- 85558
- 性别
- 男
|
MC9S12dg128B的AD转换中断问题,请各位帮忙看看.
初学Freescale单片机,根据数据手册写了个中断方式的AD转换程序,但是不能进中断,请各位帮忙看看。谢谢! 用的是清华的邵贝贝老师提供的监控程序,他把中断向量区向前移动了0x1000,在Simulater_link.prm文件中,我设置的AD转换中断向量为VECTOR ADDRESS 0xEFD2 ADC_ISR。程序如下: #include <hidef.h>/* common defines and macros */ #include <mc9s12dg128.h>/* derivative information */ #pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
void Port_Init(void) { PORTB = 0x00; DDRB = 0xFF; }
void AD_Init(void) { //中断使能 ATD0CTL2 = (ATD0CTL2_ADPU_MASK|ATD0CTL2_AFFC_MASK|ATD0CTL2_ASCIE); //转换通道数为1 ATD0CTL3 = (ATD0CTL3_S1C_MASK); //8位精度,2MHz时钟
ATD0CTL4 = (ATD0CTL4_SRES8|0x05); //右对齐,连续转换模式 ATD0CTL5 = (ATD0CTL5_DJM_MASK|ATD0CTL5_SCAN_MASK); //禁止数字输入缓冲 ATD0DIEN = 0x00; }
#pragma CODE_SEG NON_BANKED __interrupt void ADC_ISR(void) { PORTB = ATD0DR0; //用PORTB表示AD转换结果 } #pragma CODE_SEG DEFAULT
void main() { Port_Init(); AD_Init(); EnableInterrupts;//开总中断 for(;;); }
请大家帮忙看看这个程序在哪里出的问题,谢谢。 [此贴子已经被作者于2007-1-9 10:10:15编辑过]
[此贴子已经被作者于2007-1-9 10:12:14编辑过] |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
|
|
|
|
|
- UID
- 85558
- 性别
- 男
|
BDM还没有使用,觉得用bootloader挺方便的,就没用BDM。
我用查询的方式做ADC是没问题的,用中断就不行了。
|
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
|
|
|
|
|
- UID
- 85558
- 性别
- 男
|
可以通过监控程序bootloader,把.s19文件写入单片机 |
|
|
|
|
|
- UID
- 85558
- 性别
- 男
|
|
|
|
|
|
- UID
- 120713
- 性别
- 男
|
你这几句话是不是有问题啊。这样的写法能达到你想要的设置要求吗?
疑惑中……
ATD0CTL2 = (ATD0CTL2_ADPU_MASK|ATD0CTL2_AFFC_MASK|ATD0CTL2_ASCIE);
ATD0CTL3 = (ATD0CTL3_S1C_MASK);
ATD0CTL4 = (ATD0CTL4_SRES8|0x05);
ATD0CTL5 = (ATD0CTL5_DJM_MASK|ATD0CTL5_SCAN_MASK); |
|
|
|
|
|
- UID
- 85558
- 性别
- 男
|
|
|
|
|
|
- UID
- 85558
- 性别
- 男
|
|
|
|
|
|
- UID
- 341585
- 性别
- 男
|
|
|
|
|
|
- UID
- 342305
- 性别
- 男
|
|
|
|
|
|
- UID
- 350278
- 性别
- 男
|
|
|
|
|
|