NY8B062E 例程之 ADC_Interrupt
转载请注明出处!
首先介绍下NY8B062E与NY8B062D最终区别:
其实NY8B062E就是NY8B062D升级款,NY8B062D基本停产了,成本也高于NY8B062E
NY8B062E 有ADC 偏移校准 NY8B062D没有
NY8B062E ADC耗电只需要500mV,NY8B062D则需要3mA
NY8B062E 内部LDO误差只有百分之正负0.5,而NY8B062D是正负百分之1
NY8B062E 输入施密特触发 是可以开启和关闭的,NY8B062D是没有的
NY8B062E PWM 通道有4组(非常适合RGBW应用),NY8B062只有3路,勉强做个RGB应用
NY8B062D 视频简介
*项目:NY8B062E ADC_Interrupt
*文件:NY8B062E main.c
*描述:NY8B062E ADC转换中断结束
*1.设置ADC时钟频率为1MHz,采样脉冲宽度为8 ADC时钟,
*NY8B062E ADC转换时间=(8+12+2)*1us=22us,ADC转换率=1/22us=45.5KHz
*2.NY8B062E 将AIN1(PA1)设置为ADC模拟输入
*3.NY8B062E 将ADC转换结果bit11~bit4存储到RAM“R_AIN1_DATA_HB”,bit3~bit0存储到RAM“R_ AIN1_ DATA_ LB[3:0]”(x=0~4)
#include <ny8.h>
#include "ny8_constant.h"unsigned char R_AIN1_DATA_HB;
unsigned char R_AIN1_DATA_LB;#define UPDATE_REG(x) __asm__("MOVR _" #x ",F")void F_wait_eoc(void);
void delay(int);//! interrupt service routine
void isr(void) __interrupt(0)
{ADRbits.ADIF = 0; // Clear adc interrupt flag bitR_AIN1_DATA_HB = ADD; // RAM "R_AIN1_DATA_HB" Store AIN1's ADC data bit 11~4R_AIN1_DATA_LB = 0x0F & ADR; // RAM "R_AIN1_DATA_LB" bit3~0 Store AIN1's ADC data bit 3~0ADMDbits.START =1; // Start a ADC conversion session }void main(void)
{R_AIN1_DATA_HB=R_AIN1_DATA_LB=0x00;//----- Initial GPIO-----IOSTA = C_PA_Input; // Set PortA as input portPORTA = 0xFF; // PortA Data Register = 0xFFINTE = 0x00; // INTE = 0x00//----- Initial ADC----- ADMD = C_ADC_En | C_ADC_CH_Dis | C_ADC_PA1 ; // Enable ADC power, Disable global ADC input channel. Select PA1 pad as ADC input (SFR "ADMD")//----- ADC high reference voltage source select-----ADVREFH = C_Vrefh_VDD; // ADC reference high voltage is supplied by internal VDD (Note: ADC clock freq. must be equal or less than 2MHz @ VDD=5.0V) //ADVREFH = C_Vrefh_4V; // ADC reference high voltage is supplied by internal 4V (Note: ADC clock freq. must be equal or less than 1MHz)//ADVREFH = C_Vrefh_3V; // ADC reference high voltage is supplied by internal 3V (Note: ADC clock freq. must be equal or less than 500KHz)//ADVREFH = C_Vrefh_2V; // ADC reference high voltage is supplied by internal 2V (Note: ADC clock freq. must be equal or less than 250KHz)//----- ADC clock frequency select---------------------------- ADR = C_Ckl_Div1; // ADC clock=Fcpu/1, Clear ADIF, disable ADC interrupt //ADR = C_Ckl_Div2; // ADC clock=Fcpu/2, Clear ADIF, disable ADC interrupt //ADR = C_Ckl_Div8; // ADC clock=Fcpu/8, Clear ADIF, disable ADC interrupt //ADR = C_Ckl_Div16; // ADC clock=Fcpu/16, Clear ADIF, disable ADC interrupt //----- ADC Sampling pulse width select------------- //ADCR = C_Sample_1clk | C_12BIT; // Sample pulse width=1 adc clock, ADC select 12-bit conversion ( Note: ADC clock freq. must be equal or less than 500KHz)//ADCR = C_Sample_2clk | C_12BIT; // Sample pulse width=2 adc clock, ADC select 12-bit conversion ( Note: ADC clock freq. must be equal or less than 1MHz)//ADCR = C_Sample_4clk | C_12BIT; // Sample pulse width=4 adc clock, ADC select 12-bit conversion ( Note: ADC clock freq. must be equal or less than 1.25MHz)ADCR = C_Sample_8clk | C_12BIT; // Sample pulse width=8 adc clock, ADC select 12-bit conversion ( Note: ADC clock freq. must be equal or less than 2MHz) //-------------------------------------------------- PACON = C_PA1_AIN1; // Set AIN1(PA1) as pure ADC input for reducing power consumption (SFR "PACON")ADMDbits.GCHS = 1; // Enable global ADC channel (SFR "ADMD")ADRbits.ADIF = 0; // Clear adc interrupt flag bitADRbits.ADIE = 1; // Enable adc interrupt bitdelay(50); // Delay 1.12ms(Instruction clock=4MHz/4T) for waiting ADC stableADMDbits.START =1; // Start a ADC conversion session ENI();while(1){CLRWDT(); // Clear WatchDog}
}void delay(int count)
{int i;for(i=1;i<=count;i++);
}
更多关于NY8B062E,请留言或者与我联系!
NY8B062E 例程之 ADC_Interrupt相关推荐
- 2.AT32F403A例程之-STemWin移植
2.AT32F403A例程之-STemWin移植 文章目录 前言 一.STemWin下载 二.STemWin的LCD接口介绍 三.雅特力AT32F403A工程准备 四.雅特力AT32F403A的LCD ...
- 21.国民技术N32G45X例程之-U盘模式IAP升级固件
21.国民技术N32G45X例程之-U盘模式IAP升级固件 文章目录 前言 一.准备工作 1.国民技术N32G45X提供的库 2.下载本作者原创BIN文件合成软件 3.为什么要合成BIN文件? 二.U ...
- c语言reentrant,Reentrant Non-reentrant Function
在学习C语言的时候,编写些函数的小例程时,我们大多数时候都没有去考虑该函数的可重入和不可重入性,但是在嵌入式编程中,因为涉及到中断服务或者多线程的调用,就需要考虑我们当前的定义的变量是否可以共享,如果 ...
- 一个小兔子的大数据见解2
Big Data 阿里的大数据解决方案 MAXCOMPUTE DATAWORKS QUICKBI 1.Vmware增强 2. 1.1.VMware 虚拟网络设备 1.1.1.虚拟网卡.虚拟交换机 虚拟 ...
- 《Java150道面试题全集》
本文转载他人,自留作笔记用,请尊重原创作者. 1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两 ...
- ChatGPT教程之 06 ChatGPT 和 DevOps 用例概述
什么是聊天 GPT? GPT(Generative Pretrained Transformer)是 OpenAI 开发的一种自然语言处理(NLP)模型.它是一个庞大而强大的模型,可以根据接收到的输入 ...
- (JAVA)线程之lock和死锁(例)
package thread; import java.util.concurrent.locks.*;/*** @author Alina* @date 2021年12月20日 11:07 下午* ...
- cyclicbarrier java_Java并发编程之CyclicBarrier和线程池的使用
原标题:Java并发编程之CyclicBarrier和线程池的使用 下面我们来讲述一下线程池和CyclicBarrier的使用和对比. 一.场景描述 有四个游戏玩爱好者玩游戏,游戏中有三个关卡,每一个 ...
- Wireshark数据抓包教程之Wireshark的基础知识
Wireshark数据抓包教程之Wireshark的基础知识 Wireshark的基础知识 在这个网络信息时代里,计算机安全始终是一个让人揪心的问题,网络安全则有过之而无不及.Wireshark作为国 ...
最新文章
- matlab2014a + win764bit + vs2013混合编程(.m转成dll供C++调用)
- goland 设置project gopath
- 关于使用ajax给全局变量赋值失败的问题
- win phone 获取并且处理回车键事件
- innosetup区分正常状态和静默安装状态(通过传递的参数)
- 使用aggregate在MongoDB中查找重复的数据记录
- 孤儿进程、僵尸进进程
- Asp.net 2.0 自定义控件开发专题讲解[为用户控件增加DataSource属性, 能够自动识别不同数据源](示例代码下载)...
- HEXO Nunjucks Error
- 深度学习中的优化算法之Adadelta
- JavaScript 学习手册二:JS 数据类型
- 关于ramp texture的使用
- PC屏幕颜色识别实现鼠标自动点击
- table 手机 滑动_【推荐下载】html5手机端手指滑动选项卡滚动切换效果(转)
- 电脑开机后显示屏只显示品牌Logo就黑屏
- PyPDF2--如何使用python操作你的PDF文档
- 亚商投资顾问早餐FM/0119阿兹夫定正式纳入医保
- 背单词app软件测试与评估
- 世界上最全的防醉酒+解酒法(为了关心的人,一定要看看哦)
- Jenkin权限控制——基于角色授权策略
热门文章
- 【ClickHouse系列】clickhouse-copier是如何进行数据迁移的
- 泰坦服务器装系统,深海泰坦X8Ti笔记本安装win10系统操作方法
- 微星B550M迫击炮WiFi板第二条M2固态(M2_2接口)不识别问题
- 2022年亚马逊AWS认证考试及学习路径
- 互联网的精神是什么?
- 四合天地软件测试系统,GZ-2017025软件测试赛题.-全国职业院校技能大赛.doc
- @Valid 和@Validated 总结
- Java三层结构,附源码
- 理解 Hexdump
- ushort mysql,Mysql的CodeFirst:不支持ushort、uint、ulong的字段提示不足