Freescale HCS12 微控制器.

Slides:



Advertisements
Similar presentations
财务管理 利 润 分 配 利 润 分 配 嘉善中专 杨晓燕. 二、利润分配的项目及顺序 第三节 利润分配 一、利润分配的原则 财务管理 >> 第六章 >> 第三节 三、利润分配政策及影响因素.
Advertisements

现代电子技术实验 ——综合实验之单片机部分
這是來自中南海的健康長壽讀本 不管你有多忙,這個讀本都應該讀一下,因為這是一位科學 家給國家領導人的忠言。日理萬機的領導人曾放下手頭工
                                                 伊朗 的今生 与前世 (2)
客家文化的內涵與傳播 潘朝陽 臺灣師大國際與僑教學院院長 臺灣師大東亞系、地理系教授 臺灣師大全球客家文化研究中心主任
第一节 两者之间的差异分析 第二节 总体内部的差异分析 第三节 计算器的使用
─視覺藝術的元素.
上海交通大学附属中学 李由 晏敏宽 刘华典 指导老师:朱乔荣 徐忠惠 制作:李由
第四章 從分裂到統一 第一節 漢唐之際的大變動
第四章 從分裂到統一 第一節 漢唐之際的大變動
為什麼要讀書?.
建筑业2007年年报 2008年定报培训会 及 工交城建科 蔡婉妮
超声医学 第六章 脾脏疾病的诊断.
湖北省,简称“鄂”,为中华人民共和国省级行政区。湖北在中国中部、长江中游、洞庭湖以北,介于北纬29°05′至33°20′,东经108°21′至116°07′;北接河南省,东连安徽省,东南和南邻江西、湖南两省,西靠重庆市,西北与陕西省为邻。东西长约740公里,南北宽约470公里,面积18.59万平方公里,占全国总面积的1.95%,居全国第13位。省会是中部地区唯一的副省级城市--武汉市。
现代社会生活中的压力症,是人们身心疾患 发生的根源。在学习企业管理培训课程的时候, 明白了当人们遇上"压力"时,最初的反应便是"
「但圣灵降临在你们身上,你们就必得着能力,
拟动力试验 伪动力试验,计算机加载器联机试验 地震发生和传播的随机性 周期性加载的加载历程是假定的,与实际地震的非周期反应有很大差别
新时代的劳动者 杜蒙绮.
重整的概述 重整计划 重整程序的终止.
指導老師:藍日昌 組長: 謝佳君 組員: 陳昱翔 林保任 王俊元 孫韻恩 陳宣伶
新約概論 台中生命之道靈糧堂 2007年3月4日.
社会调查辅导 适用于电大开放教育行政管理本科专业.
寫 作 教 學 6 電腦與我 時代改變,科技進步,電腦成為日常生活不可或缺的設備。我是二十一世紀的E世代少年,一隻滑鼠在手,樂趣無窮。
早期的阿拉伯半島 地理環境: 生活情形 (一)三面環海,大多為荒涼貧瘠的沙漠,不利農耕
單晶片原理與應用 魏兆煌 整理 南台科技大學 電機系 Sep
Freescale HCS12 微控制器 MC9S12DP256
Timer & KEYPAD 11/24.
第09章 PWM脉宽调制 PULSE WIDTH MODULATION---数字脉冲输出
课程:《单片机原理及应用》 教材:《单片机原理及应用》 学时:理论32+实验32=64 教学内容与要求:见教学大纲
第26节 STM32之AD转换.
第5章 智能汽车设计基础—微控制器.
Roy Wan PCI MS/s 14-bit 高速数字化仪 Roy Wan
Freescale HCS12 微控制器.
第六章 定时器 6.1 定时器模块概述 S12X定时器模块在标准定时器(TIM)基础上增加了一些新功能,称为增强型定时器模块(Enhanced Capture Timer Module, ECT) 有以下特点: 1个16位自由运行计数器; 8个具有16位缓冲寄存器的输入捕捉通道; 4个8位脉冲累加器可以通过级联形成2个16位的脉冲累加器(A/B)
本节内容 模拟线程切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
CPU结构和功能.
高雄醫學大學個人申請不分系招生(薪火A~D組) 助學措施說明
Freescale HCS12 微控制器.
移相正弦信号发生器设计 采用直接数字综合器DDS发生器的设计 原理:图1是此电路模型图
Pulse Width Modulation
桃李春风结子完,到头谁似一盆兰?如冰水好空相妒,枉与他人作笑谈。
亞伯拉罕 摩西 猶太教徒 割禮 + 律法 成為神子民 的記號 神子民的 行為規範 結婚戒指 婚姻守則.
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
8.4 ADC0809接口电路及程序设计.
保羅在腓立比的宣教 使徒行傳16:9-34.
第四章 MCS-51定时器/计数器 一、定时器结构 1.定时器结构框图
四川工商学院 单片机原理及应用 刘 强
单片机原理及应用 实践部分 主讲人:刘 强 四川工商学院单片机教学团队 单片机原理及应用 实践部分 主讲人:刘 强
本节内容 内存复制指令 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
新约拱门 1 提前 提后 多 门 教牧书信 帖后 帖前 西 腓 弗 加 林后 林前 罗 启 犹 约叁 约贰 约壹 彼后 彼前 雅 来 希伯来
第九节 赋值运算符和赋值表达式.
第六章 記憶體.
新約拱門 1 提前 提後 多 門 教牧書信 帖後 帖前 西 腓 弗 加 林後 林前 羅 啟 猶 約叁 約貳 約壹 彼後 彼前 雅 來 希伯來
LOGIX500软件入门 西安华光信息技术有限公司 2008年7月11日.
春雨 (晚雨) 秋雨 (早雨) 雨季 旱季 雨季 陽曆 逾 越 節 五 旬 節 住 棚
第7章 智能汽车设计实践—— 摄像头型设计.
HSC高速输出例程 HORNER APG.
第二节 海水的运动.
「但圣灵降临在你们身上,你们就必得着能力,
定时中断与LED MCU起航 QQ:
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
「但聖靈降臨在你們身上,你們就必得著能力,
上节复习(11.14) 1、方式2、方式0的特点? 2、定时/计数器的编程要点? 3、实验5方案优化问题.
全方位起動通識 戴偉森 沙田循道衛理中學 4/7/2009.
ADC0809并行A/D转换 (实验十) DAC0832并行D/A转换实验 (实验十一) RS232串口通信实验 (实验九)
上节复习(11.7) 1、定时/计数器的基本原理? 2、定时/计数器的结构组成? 3、定时/计数器的控制关系?
保羅的臨別贈言 使徒行傳20:16 – 21:14.
DSP技术与应用 电子与信息技术系.
第六章 直接成本法.
Presentation transcript:

Freescale HCS12 微控制器

A/D转换模块 Star12 CPU Internal Bus SCI 1 SCI 1 ATD 1 ATD 12K SRAM 12K SRAM 256K FLASEEPROM Internal Bus SPI 2 or PWM CH 4-7 SPI 1 or PWM CH 0-3 SPI 0 BKP INT MMI PWM 8 CHAN Star12 CPU SIM CM BDM MEBI PIM PLL PIT msCAN 4 or IIC msCAN 3 msCAN 2 msCAN 1 BDLC or msCAN ECT 8 CHAN 4K BYTES EEPROM

Freescale Corporate Template User Guide AD转换模块 March 2005 特点: 8/10 位精度 • 7 us, 10-位单次转换时间. • 采样缓冲放大器 • 可编程采样时间 • 左/右 对齐, 有符号/无符号结果数据 • 外部触发控制 • 转换完成中断 • 模拟输入8通道复用 • 模拟/数字输入引脚复用 • 1到8转换序列长度 • 连续转换模式 • 多通道扫描方式 © Freescale Semiconductor, Inc. 2005

A/D 寄存器 控制寄存器 状态寄存器 转换结果寄存器

A/D 控制寄存器2 ETRIGLE ETRIGP ETRIGE SCAN 描述 x 忽略外部触发,执行一次转换后停止 1 ADPU - A/D 电源使能/禁止 1 = A/D模块上电 0 = 禁止A/D,以减少功耗 AWAI - A/D 等待模式 1 = 等待模式下,转换 0 = 等待模式下,禁止转换 ASCIE - A/D 顺序完成中断使能 ASCIF - A/D 顺序完成标志位 ATDCTRL2 Address offset $0002 AFFC - A/D 快速转换完成标志位清零 1 = 快速标志位清零顺序 每次读取结果寄存器自动清零 0 = 正常标志位清零顺序 需要手动对状态标志位清零 ETRIGLE ETRIGP ETRIGE SCAN 描述 x 忽略外部触发,执行一次转换后停止 1 忽略外部触发,执行连续转换后 X 下降沿触发,每次触发,执行一次转换 上升沿触发,每次触发,执行一次转换 低电平触发,每次触发,执行连续转换 高电平触发,每次触发,执行连续转换

A/D 控制寄存器3 FIFO – 结果寄存器 FIFO 1 = 结果寄存器没有映射到转换序列 0 = 结果寄存器没有映射到转换序列 Address offset $0003 ATDCTRL3 FIFO – 结果寄存器 FIFO 1 = 结果寄存器没有映射到转换序列 0 = 结果寄存器没有映射到转换序列 转换序列长度 转换序列长度就是需要转换的通道数 比如: 通道0,1,2作为AD采集通道 则转换序列为3,即S2C=1,S1C=1 在控制寄存器5 ATD0CTL5中: 设CC CB CA = 0 0 0,转换序列从通道0开始;ATD0DR0,ATD0DR1,ATD0DR2存放转换结果 设CC CB CA = 0 1 0,转换序列从通道2开始。 仍然是ATD0DR0,ATD0DR1,ATD0DR2存放转换结果

A/D 时钟选择/ 预分频 采样时间选择 • 最大 A/D 时钟 = 2.0 MHz (最小 A/D CLOCK = 0.5 MHz) ATDCTL4(HI) - A/D 控制寄存器 Address offset $0004 采样时间选择 SRES8 - A/D 精度选择 1 = 8 位 0 = 10位 SMP [1:0] 采样时间 00 2 A/D时钟周期 01 4 A/D时钟周期 10 8 A/D时钟周期 11 16 A/D时钟周期 5位 模数计数器预分频器 - 由A/D控制寄存器中的PRS[4:0]控制 - 分频系数从2到64 - 如果 PRS[4:0] = 0, 预分频不起作用 注: 设置PRS[4:0]时, A/D Clock 不能大于 2 MHz. PRS0-PRS4 除2 5位 模数计数器 预分频器 系统时钟 A/D 时钟

转换时间 A/D 时钟 转换时间计算举例: (假设 2MHZ A/D 时钟频率) 例 1: 总是2 个时钟周期 CCF标志位置位,如果在8通道模式下,序列结束 2, 4, 8, 16 时钟周期 转换时间计算举例: (假设 2MHZ A/D 时钟频率) 例 1: 转换时间 = Initial Sample Time + Programmed Sample Time + Resolution Period = 2 + 2 + 10 = 14 A/D Clocks = 7uSec 例 2: 转换时间= Initial Sample Time + Programmed Sample Time + Resolution Period = 2 + 16 + 10 = 28 A/D Clocks = 14uSec

A/D控制寄存器5 注意:对这个寄存器写操作时,将会中断当前的转换,然后重新启动新的转换序列 DJM – 对齐方式 Address offset $0005 ATDCTRL5 通道选择 0 0 0 = Chan 0 - 1 1 1 = Chan 7 SCAN – 连续转换模式 1 = 连续转换模式 0 = 单次转换 DJM – 对齐方式 1 = 右对齐 0 = 左对齐 DSGN – 符号选择 1 = 有符号 0 = 无符号 MULT – 多通道采样模式 1 = 多通道转换 0 = 单通道转换 注意:对这个寄存器写操作时,将会中断当前的转换,然后重新启动新的转换序列

Freescale Corporate Template User Guide A/D 状态寄存器 March 2005 ATDSTAT0 Address Offset $0006 ATDSTAT1 $0007 SCF – 转换序列完成标志 - 在单次转换模式时,当转换完成后置位 (SCAN = 0) 在连续转换模式时,当第一次转换完成后置位 (SCAN = 1). 当 (AFFC = 0) ,写1清零. ETORF - 外部触发覆盖标志 - 如果在转换过程中高/低电平出现,置位 FIFOR – 当结果寄存器在读出之前已经被写入时,置位 ( CCF没有清零) CC[2:0] – 转换计数器 3-位计数器指向下一个将要转换的通道 CCF7 -CCF0 – 独立通道转换完成标志位 每个相应的通道转换结束后置位, 当相应的A/D结果寄存器被读出时,清零 © Freescale Semiconductor, Inc. 2005

转换结果寄存器 左对齐数据存放格式 右对齐数据存放格式 Address Offset $0010 - $0011 - $001E - $001F //假设左对齐10位精度 Word AD_wValue; AD_wValue = ATD0DR0>>6; 右对齐数据存放格式 Address Offset $0010 - $0011 - $001E - $001F

A/D口寄存器 A T D P 注意:任何一个引脚可以用作A/D或数字输入 ATDDIEN - ATD 数字输入使能 PORTAD1 Address Offset $000F ADA7 ADA6 ADA5 ADA4 ADA3 ADA2 ADA1 ADA0 A T D P ATDDIEN - ATD 数字输入使能 注意:任何一个引脚可以用作A/D或数字输入

AD使用示例-查询方式 void AD_Init(void) //初始化 { ATD0CTL2=0xC0; //AD模块上电, 快速清零, 无等待模式, 禁止外部触发, 中断禁止 ATD0CTL3=0x20; // 每个序列4次转换, No FIFO, Freeze模式下继续转换 ATD0CTL4=0x83; // 8位精度, 2个时钟, ATDClock=[BusClock*0.5]/[PRS+1] ; PRS=3, divider=8 ATD0CTL5=0xA0; //右对齐无符号,单通道采样,通道0 ATD0DIEN=0x00; // 禁止数字输入 } void AD_GetValue(word *AD_wValue) //读取AD转换结果 *AD_wValue = ATD0DR0; //Read out the Result Register word AD_wValue; void main(void) { word i; AD_Init(); //AD初始化 DDRB = 0xFF; PORTB = 0x00; EnableInterrupts; for(;;) { while(!ATD0STAT1_CCF0); //等待转换结束 AD_GetValue(&AD_wValue); //读取转换结果 PORTB = (byte)AD_wValue; //在B口显示转换值 }

AD使用示例-中断方式 word AD_wData = 0; void main(void) { word i; AD_Init(); DDRB = 0xFF; PORTB = 0x00; EnableInterrupts; for(;;) { PORTB = (byte)AD_wData; } void AD_Init(void) { ATD0CTL2=0xC2; //AD模块上电, 快速清零, 无等待模式, 禁止外部触发, 中断开放 ATD0CTL3=0x20; ATD0CTL4=0x83; ATD0CTL5=0xA0; ATD0DIEN=0x00; } #pragma CODE_SEG NON_BANKED void interrupt 22 Int_AD0(void) AD_wData = ATD0DR0; //Read out the Result Register

AD使用例程 void AD_Init(void) //AD初始化 { //控制寄存器2: 上电,标志位快速清零,开中断 //控制寄存器2: 上电,标志位快速清零,开中断 ATD0CTL2 = (ATD0CTL2_ADPU_MASK|ATD0CTL2_AFFC_MASK|ATD0CTL2_ASCIE_MASK); //控制寄存器3:转换序列长度为3,FIFO模式 ATD0CTL3 = (ATD0CTL3_S2C_MASK|ATD0CTL3_S1C_MASK|ATD0CTL3_FIFO_MASK); //控制寄存器4: ATD0CTL4 = (ATD0CTL4_SRES8_MASK|ATD0CTL4_PRS1_MASK|ATD0CTL4_PRS0_MASK); //控制寄存器5: ATD0CTL5 = (ATD0CTL5_DJM_MASK|ATD0CTL5_SCAN_MASK|ATD0CTL5_MULT_MASK); ATD0DIEN=0x00; // 禁止数字输入缓冲 } #pragma CODE_SEG NON_BANKED //中断服务程序 void interrupt 22 Int_AD0(void) AD_wData[0] = ATD0DR0; //将结果寄存器中的值存放到数组中 AD_wData[1] = ATD0DR1; //将结果寄存器中的值存放到数组中 AD_wData[2] = ATD0DR2; //将结果寄存器中的值存放到数组中 #pragma CODE_SEG DEFAULT_ROM

word AD_wData[3]; //全局变量存放 AD0,AD1,AD2的结果 void main(void) { dword i; AD_Init(); //AD 初始化 DDRB = 0xFF; PORTB = 0x00; AD_wData[0] = 0; //全局变量初始化 AD_wData[1] = 0; AD_wData[2] = 0; EnableInterrupts; for(;;) { if(ATD0CTL2_ASCIE == 0) //采用查询方式 while(!ATD0STAT1_CCF0); //等待通道0转换结束 AD_wData[0] = ATD0DR0; //读通道0的转换结果 while(!ATD0STAT1_CCF1); //等待通道1转换结束 AD_wData[1] = ATD0DR1; //读通道1的转换结果 while(!ATD0STAT1_CCF2); //等待通道2转换结束 AD_wData[2] = ATD0DR2; //读通道2的转换结果 } PORTB = (byte)AD_wData[0]; //用PORT B来显示AD0的值 for(i=0;i<0xFFFFF;i++); //delay PORTB = (byte)AD_wData[1]; //用PORT B来显示AD1的值 PORTB = (byte)AD_wData[2]; //用PORT B来显示AD1的值