九齐单片机NY8B062E的ADC零点校准程序记录
最消费类的方案开发,一直用到九齐的片子,带AD的基本都是062D,但是后面推出了062E代替了D版,看资料,使用AD需要一个零点校准的初始化程序,刚开始也一脸懵逼,经过一番摸索有,在这里做一个记录,
//ADC初始化校准 ---------------------------------------------------------------------------------
//void F_ADJMD(void)
//void F_GND_Convert(char count)
//void ADC_Calibration_Pro(void)
void F_GND_Convert(char count)
{
char i;
ADMD = 0x90 | C_VSS; // Select (GND) pad as ADC input
CLRWDT(); //clear WDT, which is defined in NY8Common.h
delay(100); // Delay 0.56ms(Instruction clock=4MHz/2T) for waiting ADC stable
for(i=1;i<=count;i++)
{
ADMDbits.START = 1; // Start a ADC conversion session
while(ADMDbits.EOC == 0)
; // Waiting for ADC conversion complet
R_AIN_DATA_LB += ( 0x0F & ADR);
}
}
void F_ADJMD(void)
{
DISI();
ADMDbits.GCHS = 1; // Enable global ADC channel (SFR "ADMD")
F_GND_Convert(8); // executing GND ADC converting 8 times
R_AIN_DATA_LB >>= 3; // Only get Bit7~4
if(R_AIN_DATA_LB >= 2)
{
ADJMD = 0x00;
while(1)
{
CLRWDT();
R_AIN_DATA_LB = 0;
F_GND_Convert(8); // executing GND ADC converting 8 times
R_AIN_DATA_LB >>= 3; // Only get Bit7~4
if((ADJMD<0x1F) & (R_AIN_DATA_LB >= 2)){ADJMD++;}
else if(ADJMD == 0x1F){ADJMD = 0x00;break;}
else {R_AIN_DATA_LB = 1;break;}
}
}
if(R_AIN_DATA_LB == 0)
{
ADJMD = 0x20;
while(1)
{
CLRWDT();
R_AIN_DATA_LB = 0;
F_GND_Convert(8); // executing GND ADC converting 8 times
R_AIN_DATA_LB >>= 3; // Only get Bit7~4
if((ADJMD<0x3F)&(R_AIN_DATA_LB == 0)){ADJMD++;}
else if(ADJMD == 0x3F){ADJMD = 0x20;break;}
else {break;}
}
}
}
void ADC_Calibration_Pro(void)
{
//----- Initial ADC-----
ADMD = C_ADC_En | C_ADC_CH_Dis | C_VSS ; // 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)
delay(100); // 4M/2T , 0.56mS
//----- 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)
//--------------------------------------------------
ADJMD = 0x00;
F_ADJMD();
}
九齐单片机NY8B062E的ADC零点校准程序记录相关推荐
- 九齐单片机NY8B062D开发笔记(一)准备
九齐单片机开发笔记 前言 过程 1.芯片介绍 2.开发环境: 3.例程template 4.源文件: 参考资料 前言 各位朋友们,由于九齐的仿真器买不到,这个系列暂时停止更新 由于价格和性能的追求,近 ...
- 密脚九齐单片机 SSOP20 NY8BM72A 2K ROM 九齐
NY8BM72A 是以MTP作为记忆的8bit低单价九齐单片机,有18个IO口,12+1AD通道,2K ROM,4组计时器,3组PWM,3组蜂鸣器, 系統主頻提供 20.8M/19.2M/16M/14 ...
- NY8B062D 九齐单片机之ADC(采样值不准的解决办法)
其实ADC的程序 官方已经给出了 如下 ( 写这篇文章的目的是 就是本人在使用的时候 发现采样的数值 每次在接收采样值 必须要清零 要不然到处漂 ) 下面一段时间官方的程序 我就在上面加了个pwm的测 ...
- 九齐单片机应用-小家电开发(1)
** 锂电类便携式小家电应用开发-打蛋器 1:应用需求:PWM输出,复位电压2.7V,重启电机电压3.0V 2:结合需求,选用九齐系列单片机中的051F作为主控芯片,配合9017给锂电进行充电. 3: ...
- 九齐单片机 NY8A051D点亮LED
写在前面 这段时间接触九齐的051D,记录一下怎么快速入门这款单片机 定时器 跟普通的8051单片机使用方法类似,直接上代码: #include <ny8.h> #include &quo ...
- 九齐单片机NY8A051D程序之 PWM Output
这个例程原本就是九齐的IDE自带的,我这里傻瓜式的操作给大家看看,另外附带他的源码,没有用的给删了,需要注意的是,这芯片C指令51单片机有那么一点点区别,PWM输出或者做那种进入低功耗的案子,都一定要 ...
- 九齐单片机---官方Example_Code
看到似乎很多人在下载九齐IDE的时候没有把Example_Code也一起下载,也有的人下载了不知道在哪找,我这里把官方的example code分享出来,需要的可以自取,链接失效的话评论区提醒一下. ...
- NY8A051F 6 I/O 8-bit EPROM-Based MCU 台湾九齐单片机
NY8A051F 功能简介 NY8A051F 可以说是台湾九齐的人气王,有硬件PWM,有LVD,有38K红外载波,有各种模式 NY8A051F 宽广的工作电压: NY8A051F 2.0V ~ 5.5 ...
- NY8B062D 九齐单片机之ADC芯片
概述 NY8B062E 是以EPROM作為記憶體的 8 位元微控制器,專為家電或量測等等的I/O應用設計.採用CMOS製程並同 時提供客戶低成本.高性能.及高性價比等顯著優勢.NY8B062E 核心建 ...
最新文章
- linux redis 设置日志,linux上redis怎么动态看日志
- win7与ubuntu 13.04 64位双系统安装介绍
- 数学在机器学习中的作用
- explain ref_你必须要掌握的MySQL命令:explain
- CodeForces - 617E XOR and Favorite Number (莫队+前缀和)
- 老司机做VR视频,需要什么样的全景相机?
- 使用证书登陆Linux服务器
- Nginx 反向代理配置
- 目标检测之SSD数据处理、训练与预测流程记录
- php百度地图api的geocoder,百度地图API提供Geocoder类
- 软件产品售后服务的内容方案
- python程序输入两个整数、实现加减乘除_加减乘除
- Axure 教程 |中级电子商务网站设计
- 逆向app - 简单apk工具的安装
- 支持十亿级密态数据、低代码,蚂蚁集团发布隐语开放平台
- android平板2018,2018 Android平板电脑推荐三星或华为更好
- java没有舞台_不会偷懒的程序员不是好程序员!
- 游戏辅助原理与制作01.扫雷-01基址
- 什么是VPS有什么用处?
- 潜龙号开启水下机器人_潜龙二号水下机器人:我的老家在沈阳
热门文章
- Android 图片模糊、高斯模糊、毛玻璃的三种实现方法
- 基于QT实现的联网国际跳棋游戏
- mysql中返回上级_MySql 获取当前节点及递归所有上级节点
- mysql安装connector选项_MySQL 安装 Connector/J_编程学问网
- CCF-CSP 202112-2 序列查询新解
- BetaFlight模块设计之二十九:滤波模块分析
- 快递鸟物流查询接口调用
- Java一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
- java中expectations_JMockit 之 Expectations
- 对智博教育的midia-class(奥义多媒体教室)(0ss-midia-class)的破解①(共两部分)