打印
[PIC®/AVR®/dsPIC®产品]

ATMEGA4809的ADC在MCC下的使用方法

[复制链接]
47|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本节内容需要使用uart打印信息,关于uart的使用参考下面链接的帖子
https://bbs.21ic.com/icview-3427358-1-1.html
新建工程项目

关于IO的使用为板载LED和按钮,IO配置如下

上述配置好随时可以用于测试和指示灯。也可以巩固之前几个帖子中的内容
接下面启用ADC

时钟选择
系统时钟默认是内部高速时钟,可通过配置位设置为16MHz或20MHz,设置为16MHz可以方便分频出整数主频时钟

当时钟配置到16MHz时候,串口的波特率设置在9600就没有误差了。

开发板的引脚图上给的有ADC使用的引脚,实际可选的更多

我们先用默认的这个AIN0

配置上采用默认的配置,先进行测试

ADC的结构如下图所示

具备可选的3个参考电压
内部参考电压貌似可以配置

不过在MCC暂时没看到配置位置
#include "mcc_generated_files/system/system.h"
#include"mcc_generated_files/timer/delay.h"
/*
    Main application
*/
unsigned char i=0;
unsigned char sw_flag=0;

void sw_int_handler(void)
{
    sw_flag++;
}
int main(void)
{
    SYSTEM_Initialize();
    SW_SetInterruptHandler(sw_int_handler);
    printf("%02d Hello:%02d\n",i,sw_flag);
    Enable_global_interrupt();
    while(1)
    {
        i++;
        if(i>=100) i=0;
        DELAY_milliseconds(1000);
        ADC0_ConversionStart();
        YELLOW_LED_Toggle();
        if(sw_flag>0)
        {
            printf("%02d Hello:%02d\r\n",i,sw_flag);
            sw_flag=0;
        }
        else
        {
           // if(ADC0_IsConversionDone())
            {
                printf("ADC AIN0:%d----%x\r\n",ADC0_ConversionResultGet(),ADC0_ConversionResultGet());
            }
        }
    }   
}
编译测试,效果良好,修改为VDD作为参考电压

测试效果

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

1993

主题

16056

帖子

211

粉丝