完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
下载官网上adc中断程序到开发板,但dac并没有相应的输出。
程序如下: /********************************************************************* Author : ADI - Apps 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 // Include ADuC7026 Header File // 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 ; } |
|
相关推荐
2个回答
|
|
看了您的程序,是没有问题的,建议您不要使用J-LINK或者U-LINK调试,这些调试器的中断级很高,会占用部分中断。建议您通过UART或者I2C下载到片上测试一下。
|
|
|
|
开发板芯片上一般会有多个外设,如ADC(模数转换器)和DAC(数模转换器),通过程序控制这些外设可以实现对模拟信号的采集和输出。根据你提供的信息,有可能是以下几个原因导致DAC没有输出:
1. 硬件连接问题:请确保DAC输出引脚正确连接到外部电路,并且电路中的元件正确连接。 2. DAC配置问题:在程序中需要正确配置DAC的寄存器,包括设置参考电压、采样率等参数。请检查程序中对DAC寄存器的配置是否正确。 3. 中断优先级问题:如果程序中同时使用了ADC和DAC,并且使用了中断来处理ADC数据的采集,那么可能是由于中断优先级的设置问题导致无法正确采集或输出数据。请检查中断优先级的设置是否正确。 4. DAC输出电平问题:如果程序中没有对DAC输出电平进行设置,那么可能无法输出有效的模拟信号。请检查程序是否正确设置了DAC输出值。 请检查以上几个方面,如果仍然无法解决问题,可以提供更详细的程序代码和硬件连接图,以便进行更具体的分析和解答。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
938 浏览 0 评论
553 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-串口通讯编程示例之串口编写程序
1105 浏览 0 评论
STM32系列单片机可以让自己的GPIO去控制自己的RESET吗?有什么风险?可以规避吗?
1470 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-串口通讯编程示例之串口参数设置
895 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11587 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-1 14:04 , Processed in 0.653963 second(s), Total 78, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号