完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
下载官网上adc中断程序到开发板,但dac并没有相应的输出。
程序如下: /********************************************************************* Author : ADI - Apps www.analog.com/MicroConverter Date : Sept. 2005 File : Multint.c Hardware : Applicable to ADuC702x rev H or I silicon Currently targetting ADuC7026. Description : Example program using two IRQs and 1 FIQ. Timer1 causes an IRQ which compliments P4.2. XIRQ0 causes an IRQ which compliments P4.2. ADC causes an FIQ which outputs the value on ADC0 to DAC1. *********************************************************************/ #include // Function Prototypes void My_IRQ_Function(void); // IRQ Function Prototype void My_FIQ_Function(void); // FIQ Function Prototype void ADCpoweron(int); void delay(int); void DemoConfig(void); long ADCconvert(void); void My_IRQ_Function(void); int main (void) { DemoConfig(); // set up ADC, DAC, & reference IRQ = My_IRQ_Function; // Specify Interrupt Service Rountine FIQ = My_FIQ_Function; // Specify Interrupt Service Rountine GP0CON = 0x00100000; // Enable ADCbusy on Pin 0.5 GP4DAT = 0x04000000; // Configure P4.2 as output GP3DAT = 0xff000000; // Configure port 3 as output // Timer 1 configuration T1LD = 0x20000; // Counter Value T1CON = 0xC4; // Enabled,Periodic,Binary and CLK/16 IRQEN = XIRQ0_BIT+GP_TIMER_BIT; // Enable XIRQ0 and Timer1 IRQ FIQEN = ADC_BIT; // Enable ADC FIQ while(1) { GP3DAT ^= 0x00ff0000; // Compliment P3 ADCCON = 0x6E3; // single conversion delay(0x2000); // Delay Blinking of P3 } return 0 ; } void delay (int length) { while (length >=0) length--; } void DemoConfig(void) { // ADC, DAC and Reference configuration ADCpoweron(20000); // power on ADC ADCCP = 0x00; // conversion on ADC0 DAC1CON = 0x13; // AGND-AVDD range REFCON = 0x01; // internal 2.5V reference return; } void ADCpoweron(int time) { ADCCON = 0x20; // power-on the ADC while (time >=0) // wait for ADC to be fully powered on time--; } /********************************************************************/ /* */ /* Interrupt Service Rountine */ /* */ /********************************************************************/ void My_IRQ_Function() { // example with two IRQ if ((IRQSTA & GP_TIMER_BIT) != 0) { // Timer1 IRQ? T1CLRI = 0; // Clear Timer IRQ GP4DAT ^= 0x00040000; // Complement P4.2 } if ((IRQSTA & XIRQ0_BIT) != 0) { // external IRQ? GP4DAT ^= 0x00040000; // Complement P4.2 while(GP0DAT & 0x00010){} // wait for XIRQ to be low again } return ; } void My_FIQ_Function() { // example with one FIQ if ((FIQSTA & ADC_BIT) != 0) // ADC FIQ ? DAC1DAT = ADCDAT; // Output ADC0 Value onto DAC1 return ; } |
|
相关推荐
6个回答
|
|
以及经过测试发现没有进入快速中断,而在外部中断接通时候,DAC输出了adc的结果,但这些语句应该在快速中断中实现
|
|
|
|
看了您的程序,是没有问题的,建议您不要使用J-LINK或者U-LINK调试,这些调试器的中断级很高,会占用部分中断。建议您通过UART或者I2C下载到片上测试一下。 |
|
|
|
qwe045 发表于 2018-9-13 08:50 一直都是下载到片上测试的。。。 |
|
|
|
[size=12.727272033691406px]你的问题已经翻译发到了如下链接, 会有产品线工程师回复
[size=12.727272033691406px]https://ez.analog.com/message/236373#236373 |
|
|
|
楼主我遇到和你类似的问题,我是用在I2C slave中断,经常不进中断,或者跳转到异常中断,我是这样的解决的,你可以参考一下
FIQ = My_FIQ_Function; 上面一行一定不要写 直接填充下面这个函数 void FIQ_Handler(void) __irq { } 然后我的中断函数正常了,世界清静了! 至于为什么,i cannot get it !!就是这么怪!也请ADI的工程解惑,最近我被你们的ADUC7026的片子快搞崩溃了,年终奖啊! |
|
|
|
Mryan1996 发表于 2018-9-13 09:25 现在调试过后定时器中断ok了,但用ad触发的中断又出问题了。。。 |
|
|
|
只有小组成员才能发言,加入小组>>
给ADUM4223 增加信号驱动15V电压就不正常, 波动很大会被烧是什么情况?
1292 浏览 2 评论
ADP5092 SYS端口为2.09V,但是REG_OUT为0是什么原因?
1893 浏览 1 评论
ad7193差分输入ain1与ain2差是正值时,读到电压与实际值误差小,但为负值值,误差就变的很大
4235 浏览 2 评论
8991 浏览 1 评论
3137 浏览 1 评论
ADC3442采集,分析数据出现有规则毛刺,请问是哪方面的问题啊?
1414浏览 3评论
AD7190状态寄存器一直是0x80,连续转换模式下RDY不拉低
1640浏览 2评论
1608浏览 2评论
给ADUM4223 增加信号驱动15V电压就不正常, 波动很大会被烧是什么情况?
1292浏览 2评论
207浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 05:36 , Processed in 1.079017 second(s), Total 89, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号