[Atmel] 用ASF跑SAMD21程序(13)ADC basic

[复制链接]
 楼主| ddllxxrr 发表于 2015-1-5 19:01 | 显示全部楼层 |阅读模式
今天跑一下ADC。方法还是老一套,首先打开上次的工程,我主要想用里边的Printf。

然后,加入ADC模块,加完后点ASF EXPLORER 点开快速指导。



按里边的说明把程序考到自己的工程序里:
那么快速指导里说的是哪个管脚呢?大家可以查数据手册,我查到是PA02。那么为了方便我直接用一根导线短接地和PA02。


然后编译,通过后我本想用串口看一下,发现打断点也可以观察。

以下是我把导线接到GND时的情景:


以下是我的导线悬空时的情景


可见ACD转换成功。我就不用串口看了。

以下是程序清单,时钟配置没有什么特别的


  1. /**
  2. * \file
  3. *
  4. * \brief Empty user application template
  5. *
  6. */

  7. /**
  8. * \mainpage User Application template doxygen documentation
  9. *
  10. * \par Empty user application template
  11. *
  12. * This is a bare minimum user application template.
  13. *
  14. * For documentation of the board, go \ref group_common_boards "here" for a link
  15. * to the board-specific documentation.
  16. *
  17. * \par Content
  18. *
  19. * -# Include the ASF header files (through asf.h)
  20. * -# Minimal main function that starts with a call to system_init()
  21. * -# Basic usage of on-board LED and button
  22. * -# "Insert application code here" comment
  23. *
  24. */

  25. /*
  26. * Include header files for all drivers that have been imported from
  27. * Atmel Software Framework (ASF).
  28. */
  29. #include <asf.h>
  30. #include <stdio_serial.h>


  31. bool volatile callback_status = false;

  32. void configure_usart(void);
  33. void configure_adc(void);



  34. struct usart_module usart_instance;

  35. void configure_usart(void)
  36. {
  37.         struct usart_config config_usart;
  38.         usart_get_config_defaults(&config_usart);
  39.         config_usart.baudrate    = 9600;
  40.         config_usart.mux_setting = EXT3_UART_SERCOM_MUX_SETTING;
  41.         config_usart.pinmux_pad0 = EXT3_UART_SERCOM_PINMUX_PAD0;
  42.         config_usart.pinmux_pad1 = EXT3_UART_SERCOM_PINMUX_PAD1;
  43.         config_usart.pinmux_pad2 = EXT3_UART_SERCOM_PINMUX_PAD2;
  44.         config_usart.pinmux_pad3 = EXT3_UART_SERCOM_PINMUX_PAD3;
  45.        
  46.         while (usart_init(&usart_instance, EXT3_UART_MODULE, &config_usart) != STATUS_OK)
  47.         {    }
  48.         stdio_serial_init(&usart_instance, EXT3_UART_MODULE, &config_usart);
  49.         usart_enable(&usart_instance);
  50. }

  51. struct adc_module adc_instance;

  52. void configure_adc(void)
  53. {
  54.             struct adc_config config_adc;
  55.                 adc_get_config_defaults(&config_adc);
  56.                 adc_init(&adc_instance, ADC, &config_adc);
  57.                 adc_enable(&adc_instance);
  58. }


  59. int main (void)
  60. {
  61.        
  62.         system_init();
  63.         configure_usart();
  64.         configure_adc();
  65.        
  66.         adc_start_conversion(&adc_instance);
  67.         uint16_t result;
  68.         do {        /* Wait for conversion to be done and read out result */    }
  69.                  while (adc_read(&adc_instance, &result) == STATUS_BUSY);
  70.                 printf("the ADC result is %d",result);
  71.           while (true)
  72.           {
  73.                         ;
  74.      }
  75. }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
为何这般累 发表于 2019-11-28 11:00 | 显示全部楼层
使用串口如何看ADC的输出,谢谢了!!
为何这般累 发表于 2019-11-28 15:38 | 显示全部楼层
读出来的值如何转换成V  公式在什么地方啊
zwsam 发表于 2022-6-24 08:59 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2403

主题

6995

帖子

68

粉丝
快速回复 返回顶部 返回列表