冰檐教程系列之ATMEGA16入门篇 (2)
用ATmega16做8轴游戏控制器
Mjoy16就是这么简单用ATmega16做8轴游戏控制器ATmega16是ATmel公司的AVR单片机。
之所以用ATmega16,而没有用传统的89S51或89S52。
其原因在于本应用基于用AVR单片机的V-USB技术,使用单片机的软件虚拟USB口,对windows而言,是虚拟了一个HID的人体工学设备,因此不必再单独开发上位机程序和驱动(这都是windows默认自带的)不存在破解的问题。
MJ16用的是USB1.0协议,MJ16精度是3个10位加5个8位,都是1步进的,整个电路总电流要低于500mA,电位器用1K的到470K的都可以。
mega16型号:ATmega16L,工作电压2.7~5.5V,频率速度为0~8MHzATmega16,工作电压4.5~5.5V,频率速度为0~16MHz最新的型号是ATmega16A,工作电压2.7~5.5V,频率速度为0~16MHz,推荐(因为USB接口必须用12MHz速率)。
USB必须要3.3V电压,如果你的系统电压在3.3-3.6之间,就可以省掉这两个IN4728稳压二极管。
发现有部分朋友是系统提示这个问题“无法识别的设备”,确认没有其他硬件连接错误和熔丝错误,解决办法是在USB-5V电压输入那里加AMS 1117-3.3v稳压芯片,把输入电源降到3.3V。
也不需要那2个IN4728稳压二极管了。
(右图右下角就是AMS 1117-3.3v稳压芯片,82欧姆电阻换成68欧姆了)指导一下制作顺序:1、按照电路图搭建硬件(可以先用面包板测试)。
2、制作ISP下载线,(笔记本电脑没有并口,购买或制作USBASP下载线)。
3、下载ponyprog或progisp167烧录软件,下载固件程序Hex和eep文件。
4、用isp下载线连接计算机和MJoy16。
(MJoy16要上电)5、运行烧录软件,将Hex文件烧录到Mega16,小心编辑熔丝(准备一个有源晶振做恢复用)。
至此,MJoy16算制作完成,断开isp线缆,直接将MJoy16连接电脑usb口,系统提示找到人体工学设备MJoy16。
ATmega16 的EEPROM的使用
ATmega16 包含512 字节的EEPROM 数据存储器。
它是作为一个独立的数据空间而存在的,可以按字节读写。
EEPROM 的寿命至少为100,000 次擦除周期。
EEPROM 的访问由地址寄存器、数据寄存器和控制寄存器决定。
通过SPI和JTAG及并行电缆下载EEPROM数据的操作请分别参见P260、P265及P250。
EEPROM 读/ 写访问EEPROM 读/ 写访问EEPROM 的访问寄存器位于I/O 空间。
EEPROM的写访问时间由Table 1给出。
自定时功能可以让用户软件监测何时可以开始写下一字节。
用户操作EEPROM 需要注意如下问题:在电源滤波时间常数比较大的电路中,上电/ 下电时VCC 上升/ 下降速度会比较慢。
此时CPU 可能工作于低于晶振所要求的电源电压。
请参见P20“ 防止EEPROM 数据丢失” 以避免出现EEPROM 数据丢失的问题。
为了防止无意识的EEPROM 写操作,需要执行一个特定的写时序。
具体参看EEPROM控制寄存器的内容。
执行EEPROM 读操作时,CPU 会停止工作4 个周期,然后再执行后续指令;执行EEPROM 写操作时,CPU 会停止工作2 个周期,然后再执行后续指令。
EEPROM 地址寄存器-EEARH和EEARL· Bits 15..9 – Res: 保留保留位,读操作返回值为零。
· Bits 8..0 – EEAR8..0: EEPROM 地址EEPROM地址寄存器– EEARH和EEARL指定了512字节的EEPROM空间。
EEPROM地址是线性的,从0 到511。
EEAR 的初始值没有定义。
在访问EEPROM 之前必须为其赋予正确的数据。
EEPROM 数据寄存器-EEDR· Bits 7..0 – EEDR7.0: EEPROM 数据对于EEPROM 写操作,EEDR 是需要写到EEAR 单元的数据;对于读操作,EEDR 是从地址EEAR 读取的数据。
AVR单片机项目4 ATmega16单片机IO接口应用
二、I/O接口的寄存器
在GCCAVR C环境中,头文件“io.h”中定义了许多用于控 制I/O接口输入/出操作的宏,这些宏与I/O寄存器同名,通 过这些宏可以控制A、B、C、D接口的输入输出操作。 当A、B、C、D接口用于数据I/O口时,通过DDRx、 PORTx和PINx三个宏控制接口的输入与输出(其中x为A、B、 C或D)。例如: ①DDRA为A口数据方向寄存器,用来定义A口的通讯方 向(输入/输出); ②PORTA为A口数据寄存器,用来输出数据(输入时, PORTX为高,打开上拉电阻);当PORTx=1时,I/O引脚高 电平,可提供输出20mA电流;当PORTx=0时,I/O引脚低电 平,可吸纳20mA电流。因此,AVR的I/O在输出方式下提供 了比较大驱动能力,可以直接驱动LED等小功率外围器件。 ③PINA用来读取A口数据(只读)。
位
复位值
0
0
0
0
0
0
0
0
二、I/O接口的寄存器
端口输入寄存器:PINX(PINA)-----只读
PINA.7 PINA.6 PINA.5 PINA.4 PINA.3 PINA.2 PINA.1 PINA.0 N/A N/A N/A N/A N/A N/A N/A N/A
位 复位值
特殊功能寄存器:SFIOR
《单片机应用技术》
项目四 ATmega6单片机I/O口应用
任务一 项目知识点学习 任务二 LED闪烁灯控制 任务三 LED开关灯控制 任务四 汽车转向灯控制 任务五 霓虹灯控制 任务六 继电器控制照明设备
【知识目标】
1. 2.
3.
了解LED发光二极管的驱动控制方法 了解ATmega16单片机数字I/O口的结构 了解ATmega16单片机数字I/O口的相关寄 存器功能
atmega16
■ B口(PB7~PB0):8位双向I/O口,每一个引脚 都有独立可控的内部上拉电阻。B口的输出缓冲器具 有双向大电流的驱动能力。当作为输入时,且内部上 拉电阻有效时,如果外部引脚被拉低,B口管脚将输 出电流。在复位过程中,即使还未起振的情况下,B 口仍呈现三态。 B口有第二功能,第二功能的使用方法后续章节 再介绍。
■ 工作在16MHZ时具有16MIPS的性能
■ 片内集成硬件乘法器
片内集成了较大容量的非易失性程序 和数据存储器以及工作寄存器
■ 16K字节的在线可编程Flash ■ 支持在线编程 ■ 1K字节的片内SRAM ■ 512字节的在线可编程EEPROM ■ 可编程的程序加密位
外围资源
■ 2个带预分频器、具有比较、PWM功能的8位定时器/计数器 ■ 1个带预分频器、具有比较、捕获和PWM功能的16位定时器/ 计数器
ATmega16结构
AVR采用了啥佛结构,即程序和数据总线分离,且具有预 取指令功能,即CPU在执行一条指令的同时去取下一条指令, 这种模式使得指令可在一个时钟时期内完成。 ATmega16具有16K字节的程序存储器Flash。因为所有的 指令为16位或32位宽,故Flash的结构为8K×16。为了程序 的安全性,Flash存储器空间被分为两部分:引导程序段和 应用程序段,可以通过对相应熔丝位的编程设定,选择是否 需要使用引导程序段以及该段空间的大小。Flash存储器的使 用寿命至少为1000次的擦写循环。
知识回顾与新课引入
1、ROM和RAM的功能是?它们的相同与不同之处? 2、存储器的分类与特点? 3、计算机体系结构一般分为哪两种?
ATmega16芯片资源
ATmega16是AVR系列单片机的高档产品之一。
ATmega16结构 ATmega16资源及性能 ATmega16的I/O寄存器 ATmega16引脚 ATmega16系统配置
ATMEGA16定时器的使用
ATMEGA16定时器的使用[日期:2012-01-07 ] [来源:本站编辑作者:佚名] [字体:大中小] (投递新闻)/*本程序简单的示范了如何使用ATMEGA16的定时器AVR定时器的要点介绍T0工作于CTC模式,输出1KHz/2KHz 50%占空比的方波T1工作于快速PWM模式兼输入捕捉T2工作于相位修正PWM模式,输出490Hz的8bit PWM波出于简化程序考虑,各种数据没有对外输出,学习时建议使用JTAG ICE硬件仿真器对于定时器,AVRstudio的软件仿真是不准确的。
*/#include <AVR/io.h>#include <AVR/signal.h>#include <AVR/interrupt.h>//时钟定为8MHz,F_CPU=8000000//管脚定义#define ICPKEY 6 //ICP1 PD6 按键模拟ICP输入#define PWM0 3 //OC0 PB3#define PWM1A 5 //OC1A PD5#define PWM1B 4 //OC1B PD4#define PWM2 7 //OC2 PD7//宏定义#define PWM1A_ON() PORTD|= (1<<PWM1A) //输出高电平,灯亮#define PWM1A_OFF() PORTD&=~(1<<PWM1A) //输出低电平,灯灭//全局变量volatile unsigned int ICP_Time; //记录ICP输入捕捉事件的发生时刻volatile unsigned char T2PWM; //设置T2的PWM值volatile unsigned char T0OCR; //设置T0的时间值//仿真时在watch窗口,监控这些变量。
void timer0_init(void) //CTC模式输出1KHz/2KHz方波{OCR0 = T0OCR; //设定TOP值//TOP=8000000/(2*64*1000)-1=61.5 选61 1.008KHz(0.992mS)//TOP=8000000/(2*64*2000)-1=30.25 选30 2.016KHz(0.496ms)TCCR0 = (1<<WGM01)|(0<<WGM00)|(0<<COM01)|(1<<COM00)|(0<<CS02)|(1<<CS01)|(1<<CS00);//64分频,CTC模式,OC0取反输出方波}void timer1_init(void){OCR1A = 39062; //设定TOP值.时间5S(0.2Hz)//TOP=8000000/(1024*0.2)=39062.5OCR1B = 15624; //设定OC1B的PWM值约2秒钟40%TCCR1A = (1<<COM1B1)|(0<<COM1B0)|(1<<WGM11)|(1<<WGM10);TCCR1B = (0<<ICES1)|(1<<WGM13)|(1<<WGM12)|(1<<CS12)|(0<<CS11)|(1<<CS10);//1024分频,WGM1=15 快速PWM模式,TOP=OCRnA,ICP下降沿触发,OC1B正向PWM输出,OC1A为普通IO}SIGNAL(SIG_INPUT_CAPTURE1) //输入捕捉中断{ICP_Time=ICR1; //读取ICP输入捕捉事件的发生时刻}SIGNAL(SIG_OUTPUT_COMPARE1A)//T1输出比较A匹配中断{//在WGM1=15 快速PWM模式下,TOP=39062等同于5S左右的定时中断T2PWM+=10;OCR2=T2PWM; //修改T2的PWM值if (T0OCR==61)T0OCR=30; //改成1KHzelseT0OCR=61; //改成2KHzOCR0=T0OCR; //修改T0的时间值}void timer2_init(void)//相位修正PWM模式{OCR2 = T2PWM; //设定PWM值(最大值固定为255,8bit)TCCR2 = (0<<WGM21)|(1<<WGM20)|(1<<COM21)|(0<<COM20)|(0<<CS22)|(1<<CS21)|(1<<CS20);//32分频,相位修正PWM模式,PWM频率为490Hz,OC2正向PWM输出//fPWM=fclk_IO/(2*N*TOP)=8000000/(2*32*255)=490Hz}int main(void){//上电默认DDRx=0x00,PORTx=0x00 输入,无上拉电阻PORTA =0xFF; //不用的管脚使能内部上拉电阻。
Atmega16单片机开发教程
Atmega16寄存器Atmega16寄存器一.引脚说明表1 引脚说明引脚序号 引脚名称 引脚功能PB5 8 位双向I/O 口, 具有可编程的内部上拉电阻。
其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。
作为输入使用时, 若内部上拉电阻使能,端口被外部电路拉低时将输出电流。
在复位过程中,即使系统时钟还未起振,端口A 处于高阻状态。
1MOSI SPI 总线的主机输出/ 从机输入信号PB6 8 位双向I/O 口2MISO SPI 总线的主机输入/ 从机输出信号PB7 8 位双向I/O 口3SCK SPI 总线的串行时钟4 RESET 复位输入引脚。
持续时间超过最小门限时间的低电平将引起系统复位。
5 VCC 数字电路的电源6 GND 地7 XTAL2 反向振荡放大器的输出端8 XTAL1 反向振荡放大器与片内时钟操作电路的输入端PD0 8 位双向I/O 口9RXD USART 输入引脚PD1 8 位双向I/O 口10TXD USART 输出引脚PD2 8 位双向I/O 口11INT0 外部中断0 的输入PD3 8 位双向I/O 口12INT1 外部中断1 的输入Atmega16寄存器PD4 8 位双向I/O 口13OC1B T/C1 输出比较B 匹配输出PD5 8 位双向I/O 口14OC1A T/C1 输出比较A 匹配输出PD6 8 位双向I/O 口15ICP1 T/C1 输入捕捉引脚PD7 8 位双向I/O 口16OC2 T/C2 输出比较匹配输出17 VCC 数字电路的电源18 GND 地PC0 8 位双向I/O 口19SCL 两线串行总线时钟线PC1 8 位双向I/O 口20SDA 两线串行总线数据输入/ 输出线PC2 8 位双向I/O 口21TCK JTAG 测试时钟PC3 8 位双向I/O 口22TMS JTAG 测试模式选择PC4 8 位双向I/O 口23TDO JTAG 测试数据输出PC5 8 位双向I/O 口24TDI JTAG 测试数据输入PC6 8 位双向I/O 口25TOSC1 定时振荡器引脚1PC7 8 位双向I/O 口26TOSC2 定时振荡器引脚227 AVCC 端口A与A/D转换器的电源。
ATmega16_00硬件系统基本I0口使用
时钟源
ATmega16芯片有如下几种通过Flash熔丝位进行选 择的时钟源。时钟输入到AVR时钟发生器,再分配到相 应的模块。 •缺省时钟 器件出厂时缺省设置的时钟源是1 MHz 的内部RC振 荡器,启动时间为最长。这种设置保证用户可以通过 ISP 或并行编程器得到所需的时钟源。 •晶体振荡 XTAL1 与XTAL2 分别为用作片内振荡器的反向放大 器的输入和输出,这个振荡器可以使用石英晶体,也可 以使用陶瓷谐振器。
主要构成:
AVR CPU部分 程序存储器Flash 数据存储器SRAM和EEPROM 各种功能的外围接口,IO口,以及与他们 相关的数据、控制、状态寄存器等
8位数据总线
Flash程序 存储器
程序计数器
状态和控制
指令寄存器
32× 8 通用寄存器
中断单元 SPI单元 看门狗定时器
指令译码器
2个带预分频器、具有比较、PWM功能的8位定时器/ 计数器 1个带预分频器、具有比较、捕获和PWM功能 的16位定时器/计数器 1个具有独立振荡器的异步实时时钟(RTC) 4个PWM通道 8通道10位ADC 1个I2C的串行口 1个可编程的串行USART接口 1个主/从收/发的SPI同步串行接口 带片内RC振荡器的可编程看门狗定时器WDT 片内模拟比较器
//将端口A的第七位翻转 //将局部变量的第七位翻转 //将全局变量的第七位翻转
位操作
“按位与”用于检查某一位或某几位是否为1 #include<iom16v.h> #include<macros.h> unsigned char gtmpA void main() { unsigned char tmpB; while(tmpB&0x80) //查询局部变量第七位是否为“1” { //查询PA.7是否为“1” if(PINA&0x80) PORTA &=~0x80; //关闭A端口第七位 else …… } }
(精)atmega16寄存器笔记整理
一、中断寄存器中断是指微处理器在程序执行期间响应外部的事务请求,暂停当前的处理器工作转而处理外部事件,外部事件处理完成之后返回原来工作暂停的地方继续执行程序。
Atmega16具有21个中断源,每个中断源都有独立的中断向量作为中断服务程序的入口地址,而且所有的中断源都有自己独立的使能位。
如果中断位I和中断向量使能位都置位,则中断发生,中断标志位置位,并执行中断服务程序。
中断向量表见表2,处于越低地址的中断具有更高优先级。
<一> 全局中断控制位1、状态寄存器SREG在I置位后,单独的中断使能由不同的中断寄存器控制。
若I为0,则禁止中断。
<二>外部中断?SE:MCU休眠使能位INT1:使能外部中断请求1INT0:使能外部中断请求0INT2:使能外部中断请求2INTF1:外部中断标志INT1引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF1。
如果SREG的位I以及GICR寄存器相应的中断使能位INT1为”1”,MCU即跳转到相应的中断向量。
进入中断服务程序之后该标志自动清零。
此外,标志位也可以通过写入”1” 来清零。
INTF0:外部中断标志INT0引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF0。
如果SREG的位I以及GICR寄存器相应的中断使能位INT0为”1”,MCU即跳转到相应的中断向量。
进入中断服务程序之后该标志自动清零。
此外,标志位也可以通过写入”1” 来清零。
INTF2:外部中断标志INT2引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF1。
如果SREG的位I以及GICR寄存器相应的中断使能位INT2为”1”,MCU即跳转到相应的中断向量。
进入中断服务程序之后该标志自动清零。
此外,标志位也可以通过写入”1” 来清零。
<三>定时器/计数器A VR的三个定时/计数器。
他们分别是T/C0、T/C1、T/C2,其中T/C0和T/C2是8位定时/计数器,T/C1是16位定时/计数器。
AVR ATmega16中文说明书
ALU- 算术逻辑单元AVR ALU 与32 个通用工作寄存器(R0-R31)直接相连。
寄存器与寄存器之间、寄存器与立即数之间的ALU 运算只需要一个时钟周期。
ALU 操作分为3 类:算术、逻辑和位操作。
此外还提供了支持无/ 有符号数和分数乘法的乘法器。
具体请参见指令集。
状态寄存器状态寄存器包含了最近执行的算术指令的结果信息。
这些信息可以用来改变程序流程以实现条件操作。
如指令集所述,所有ALU 运算都将影响状态寄存器的内容。
这样,在许多情况下就不需要专门的比较指令了,从而使系统运行更快速,代码效率更高。
在进入中断服务程序时状态寄存器不会自动保存,中断返回时也不会自动恢复。
这些工作需要软件来处理。
AVR 中断寄存器SREG 定义如下:•Bit 7 –I: 全局中断使能I 置位时使能全局中断。
单独的中断使能由其他独立的控制寄存器控制。
如果I 清零,则不论单独中断标志置位与否,都不会产生中断。
任意一个中断发生后I 清零,而执行RETI指令后I 恢复置位以使能中断。
I 也可以通过SEI 和CLI 指令来置位和清零。
•Bit 6 –T: 位拷贝存储位拷贝指令BLD 和BST 利用T 作为目的或源地址。
BST 把寄存器的某一位拷贝到T,而BLD 把T 拷贝到寄存器的某一位。
•Bit 5 –H: 半进位标志半进位标志H 表示算术操作发生了半进位。
此标志对于BCD 运算非常有用。
详见指令集的说明。
•Bit 4 –S: 符号位, S = N ⊕VS 为负数标志N 与2 的补码溢出标志V 的异或。
详见指令集的说明。
•Bit 3 –V: 2 的补码溢出标志支持2 的补码运算。
详见指令集的说明。
•Bit 2 –N: 负数标志表明算术或逻辑操作结果为负。
详见指令集的说明。
• Bit 1 – Z: 零标志表明算术或逻辑操作结果为零。
详见指令集的说明。
• Bit 0 – C: 进位标志表明算术或逻辑操作发生了进位。
详见指令集的说明使用CLI 指令来禁止中断时,中断禁止立即生效。
Atmega16熔丝位定义
Atmega16熔丝位定义一、熔丝位概述ATmega16有高、低两个熔丝位字节,通过熔丝的设定,可以对系统时钟、启动时间、BOOT区设定、保密位设定以及某些特定功能的使能。
各熔丝位的具体定义以及出厂默认值如表1所示。
其中,1表示该位未被编程,0表示该位已经被编程。
位号定义描述默认值熔丝位高字节7 OCDEN OCD使能位1(未编程,OCD禁用)6 JTAGEN JTAG测试使能0(编程,JTAG使能)5 SPIEN 使能串行程序和数据下载0(被编程,SPI编程使能)4 CKOPT 振荡器选项1(未编程)3 EESAVE 执行芯片擦除时EEPROM的内容保留1(未被编程),EEPROM内容不保留2 BOOTSZ1 选择Boot区大小0(被编程)1 BOOTSZ0 选择Boot区大小0(被编程)0 BOOTRST 选择复位向量1(未被编程)熔丝位低字节7 BODLEVEL BOD触发电平1(未被编程)6 BODEN BOD使能1(未被编程,BOD禁用)5 SUT1 选择启动时间1(未被编程)4 SUT0 选择启动时间0(被编程)3 CKSEL3 选择时钟源0(被编程)2 CKSEL2 选择时钟源0(被编程)1 CKSEL1 选择时钟源0(被编程)0 CKSEL0 选择时钟源1(未被编程)表1 ATmega16熔丝位图1 AVR_fighter熔丝位默认值二、熔丝位详解1、JTAG和OCD使能位表2 JTAG和OCD使能OCDEN为OCD片上调试系统使能位,默认为1,必须对JTAGEN 熔丝位进行编程才能使能JTAG 测试访问端口。
此外还必须保持所有的锁定位处于非锁定状态,才能真正使片上调试系统工作。
作为片上调试系统的安全特性,在设置了LB1 或 LB2 任一个锁定位时片上调试系统被禁止。
否则,片上调试系统就会给安全器件留下后门。
在JTAG调试时,使能OCDEN、JTAGEN两位,并保持所有的锁定位处于非锁定状态;在实际使用时为降低功耗,不使能OCDEN JTAGEN,大约减少2-3mA的电流。
Atmega16复位电路RC振荡周期计算
Atmega16复位电路RC振荡周期计算通常AVR单片机采用产生2个机器周期的低电平进行复位,简单的复位电路可采用上电复位,复位脚接上拉电阻,复位脚引出电容接地(电阻电容串接,节点处接reset)。
其实这种接法将电容电阻对调就是51内核单片机的复位电路(参数完全满足要求)。
如果采用16M的晶振作为外部振荡时序脉冲信号,为了产生2个机器周期的低电平(AVR采用12分频),需要选取合适的R、C,这里采用上电复位电路进行分析计算。
解:假设上电(电容充电)时刻t板间电量为q,电压为u,根据回路电压方程:U-u=IR又有:q=cu,I=dq/dt所以(带入):U-q/c=R*dq/dt也就是:R*dq/(U-q/c)=dt不定积分得:Rc*dq/(cU-q)=Rc*[-d(cU-q)/(cU-q)]=-Rcln(cU-q)=t+C(不定常量)利用初始条件(t=0,q=0):C(不定常量)=Rcln(1/cU)于是(q、t关系):q=cU[1-et/(Rc)]从表达式可以看出,若要充电完毕,也就是u=q/c=U[1-et/(Rc)]=U,那么(1/e.5*106也就是(95%):3RC1.5*106即:RC0.5 -6通常R=10K,C=100nF,RC=10*107=103满足条件要求。
任意的电阻、电容基本上都会满足条件要求的,电阻选用K数量级,电容选用pF数量级,RC为106 数量级(满足需要)。
电容器容量的表示方法电容器的基本单位是“法拉”(F),1法拉的1/1000000(百万分之一)是1微法(μF),1微法的1/1000000是1pF(1微微法,或1皮法)。
它们之间的关系是百万(或称10的6次方)进位关系。
我们常用的电容有:。
AVRATmega16实验教程
A VR学习笔记(基于LT_Mini_M16)一、点亮发光二极管一、实验内容和目的本实验通过硬件电路和软件程序,利用ATMega16单片机来控制发光二极管的点亮和熄灭。
通过此实验初步掌握单片机的I/O口功能。
二、硬件电路1、电路分析(对照LT_Mini_M16原理图)1)电源电路:外接稳压直流电源(最好是DC9V)加到电路的U1处,经过电容C16稳压滤波后加到稳压模块AMS1117-5.0上,然后连接到电源开关按钮S1,从开关按钮出来后经过发光二极管D9和电阻R7,再经过电容C1、C2、C3、C4、C5、C7稳压滤波后加到单片机以及各个模块的电源端。
分析:a) 电容的作用是稳压滤波,其中C1、C2、C3、C4、C5这5电容为0.1PF (俗称104电容,一般为瓷片电容)。
主要作用为滤出电源电路中的高频成分;而C16、C7是电解电容,主要作用是稳压,即把电源电路中的尖峰电压拉低到正常电压水平;C16是稳定外接直流电源的电压(9V),C7是稳定AMS1117-5.0输出的5V电压。
b)稳压芯片采用ASM1117-5.0,该稳压芯片输入电压范围为6.5V-15V,输出电压稳定在5.0+0.1V,最大输出电流可达1A,可以满足一般电路需要。
c) 电源开关按钮S1的作用当然是接通和断开电源了。
在此电路中S1采用的是单刀双掷开关,一旦断开电源,则电源的正负极都断开了。
d)发光二极管D9的作用是指示电源是否连接成功,如果外部电源成功的连接上,则发光二极管发光指示电源连接成功;电阻R7的作用是对发光二极管进行限流,一般发光二极管只能通过10mA左右的电流,且发光二极管上面的压降只需要1.5V左右,加到发光二极管上面的电流如果超出额定值,则会烧毁。
而系统工作的电压是5V,如果全部加在发光二极管上,则发光二极管很容易就会被烧毁。
所以要在电源和发光二极管之间串接一个限流电阻。
该限流电阻阻值的计算:(VCC-发光二极管上的电压)/流过发光二极管的电流。
atmega16中文资料.0004
29
PC6.Pullup_Enable
28
PC7.Data
27
PC7.Control
26
PC7.Pullup_Enable
25
TOSC
32 kHz 定时振荡器
24
TOSCON
23
PA7.Data
端口 A
22
PA7.Control
21
PA7.Pullup_Enable
20
PA6.Data
19
PA6.Control
RWW 区
如果 Boot Loader 软件是对 RWW 区内的某一页进行编程,则可以从 Flash 中读取代码, 但只限于 NRWW 区内的代码。在 Flash 编程期间,用户软件必须保证没有对 RWW 区的 读访问。如果用户软件在编程过程中试图读取位于 RWW 区的代码 ( 如通过 call/jmp/lpm 指令或中断 ),软件可能会终止于一个未知状态。为了避免这种情况的发生,需要禁止中 断或将其转移到 Boot Loader 区。 Boot Loader 总是位于 NRWW 存储区。只要 RWW 区 处于不能读访问的状态,存储程序存储器控制和状态寄存器 (SPMCSR) 的 RWW 区忙标 志位 RWWSB 置位。编程结束后,要在读取 位于 RWW 区的代码之前通过软件清除 RWWSB。具体如何清除RWWSB请参见P238 “保存程序存储器控制寄存器 – SPMCR” 。
No Read-While-Write (NRWW) Section
Z-pointer Addresses NRWW Section
CPU is Halted during the Operation
234 ATmega16(L)
AVR教程系列一(12):ATmega16 简介(六)
A VR教程系列一(12):ATmega16 简介(六) ATmega16 操纵与状态寄存器MCUCSRAVR 操纵与状态寄存器提供了有关引起AVR复位的复位源的信息。
Bit 4 – JTRF: JTAG 复位标志通过JTAG 指令AVR_RESET 能够使JTAG 复位寄存器置位,并引发MCU 复位,并使JTRF 置位。
上电复位将使其清零,也能够通过写”0” 来清除。
Bit 3 – WDRF: 看门狗复位标志看门狗复位发生时置位。
上电复位将使其清零,也能够通过写”0” 来清除。
Bit 2 – BORF: 掉电检测复位标志掉电检测复位发生时置位。
上电复位将使其清零,也能够通过写”0” 来清除。
Bit 1 – EXTRF: 外部复位标志外部复位发生时置位。
上电复位将使其清零,也能够通过写”0” 来清除。
Bit 0 – PORF: 上电复位标志上电复位发生时置位。
只能通过写”0” 来清除。
为了使用这些复位标志来识别复位条件,用户应该尽早读取此寄存器的数据,然后将其复位。
假如在其他复位发生之前将此寄存器复位,则后续复位源能够通过检查复位标志来熟悉。
ATmega16 基准电压使能信号与启动时间ATmega16 具有片内能隙基准源,用于掉电检测,或者者是作为模拟比较器或者ADC的输入。
ADC 的2.56V 基准电压由此片内能隙基准源产生。
电压基准的启动时间可能影响其工作方式。
启动时间列于Table 16。
为了降低功耗,能够操纵基准源仅在如下情况打开:1. BOD 使能 ( 熔丝位BODEN 被编程)2. 能隙基准源连接到模拟比较器(ACSR 寄存器的ACBG 置位)3. ADC 使能因此,当BOD 被禁止时,置位ACBG 或者使能ADC 后要启动基准源。
为了降低掉电模式的功耗,用户能够禁止上述三种条件,并在进入掉电模式之前关闭基准源。
ATmega16 看门狗定时器看门狗定时器由独立的1 Mhz 片内振荡器驱动。
ATmega16中断
中 断 的 检 测 与 响 应 示 意 图 (2)
保护现场和 恢复现场的 过程中不允 许中断,以 免现场遭到 破坏。
关中断
保护现场
开中断 中断服务 关中断
保护和恢复现场之后 的开中断是为了允许 有更高级中断打断此 中断服务程序。
外部中断1、在0I中CC断AV请R求C开信发号系方统式中:,可 通过编程向导对位3~0进行设
ISCx1
置。
中断请求信号
ISCx0
有效方式
ISCx1 ISCx0
中断请求信号 有效方式
0
0
低电平
1
0
下降沿
0
1
上升沿或下降沿
1
1
位7~4:与外部中断的设置无关。
上升沿
MCU控制和状态寄存器 —— MCUCSR
3. 外部中断应用
应用课题:设计一段程序,用于统计 外部INT0的中断次数。
设计思想
接线原理图
外部中断0的输入引脚 为PD2,将PC口的第2 位设计成方波信号输出, 并连接到PD2引脚,作 为外部中断请求信号。
在中断程序中设计一个 计数器,每中断一次, 计数器加1,同时显示 所计的数。
为便于观察中断的信号 的请求,将PC口连接到 发光二极管的输入端。
PB2 INT2(外部中断2输入)
外部中断的控制
ATmega16的外部中断用户可以控制:
❖ SREG——状态寄存器 ❖ GICR——通用中断控制寄存器 ❖ MCUCR——MCU控制寄存器 ❖ MCUCSR——MCU控制和状态寄存器 ❖ GIFR——通用中断标志寄存器
Atmega16单片机介绍
Atmega16单片机介绍ATmega16是基于增强的AVR RISC结构的低功耗8 位CMOS微控制器。
由于其先进的指令集以及单时钟周期指令执行时间,ATmega16 的数据吞吐率高达1 MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。
ATmega16 AVR 内核具有丰富的指令集和32 个通用工作寄存器。
所有的寄存器都直接与算逻单元(ALU) 相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。
这种结构大大提高了代码效率,并且具有比普通的CISC 微控制器最高至10 倍的数据吞吐率。
ATmega16 有如下特点:16K字节的系统内可编程Flash(具有同时读写的能力,即RWW),512 字节EEPROM,1K 字节SRAM,32 个通用I/O 口线,32 个通用工作寄存器,用于边界扫描的JTAG 接口,支持片内调试与编程,三个具有比较模式的灵活的定时器/ 计数器(T/C),片内/外中断,可编程串行USART,有起始条件检测器的通用串行接口,8路10位具有可选差分输入级可编程增益(TQFP 封装) 的ADC ,具有片内振荡器的可编程看门狗定时器,一个SPI 串行端口,以及六个可以通过软件进行选择的省电模式。
工作于空闲模式时CPU 停止工作,而USART、两线接口、A/D 转换器、SRAM、T/C、SPI 端口以及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;在省电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态;ADC 噪声抑制模式时终止CPU 和除了异步定时器与ADC 以外所有I/O 模块的工作,以降低ADC 转换时的开关噪声; Standby 模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力;扩展Standby 模式下则允许振荡器和异步定时器继续工作。
ATmega16TC1寄存器控制说明
◆普通模式相当于定时器计数器。
可内部计数也可接受外部引脚计数。
(0xFFFF为TOP)●第一步设置工作模式T/C控制寄存器TCCR1B中CS02CS01 CS00位●第二步设置初值T/C寄存器TCNT1H TCNT1L共16位。
(先写高位后写低位)●第三步开定时器中断T/C中断屏蔽寄存器TIMSK中TOIE1置位●第四步开总中断SREG|=BIT(7)内部状态:当到达TOP值时,T/C中断标志寄存器TIFR中TOV1位自动变为1,由此进入中断,且此标志自动清零。
但是需要在中断中重新设置初值。
以下几种模式很少用到中断。
◆CTC模式比较输入模式,当TCNT1的值计数到的值与OCR1A 或ICR1 寄存器的值匹配时,引脚输出电位发生相应变化,且TCNT1从0开始重新计数。
常用来输出50%占空比的方波。
●第一步先设置PD5(OC1A)和PD4(OC1B)为输出●第二步设置工作模式T/C控制寄存器TCCR1A和TCCR1B中WGM13 WGM12 WGM11 WGM10选择CTC的相应模式。
COM1A1 COM1B1 COM1A0 COM1B0选择匹配后具体动作(常用01)CS02CS01 CS00设置预分频●第三步设置TOP值输出比较寄存器OCR1A/ICR1写入TOP值◆快速PWM模式相对于CTC模式,可以人为设置占空比。
具体方法是有两个寄存器,一个储存匹配值,一个储存TOP值。
匹配时清0,达到TOP值时置位。
此方式用于输出脉冲来控制电机。
●第一步先设置PD5(OC1A)和PD4(OC1B)为输出●第二步设置工作模式T/C控制寄存器TCCR1A和TCCR1B中WGM13 WGM12 WGM11 WGM10选择CTC的相应模式。
(以15模式为例子)COM1A1 COM1B1 COM1A0 COM1B0选择匹配后具体动作(常用10)CS02CS01 CS00设置预分频●第三步设置TOP值和匹配值输出比较寄存器OCR1A写入TOP值输出比较寄存器OCR1B写入匹配值注意:此时OC1B能够输出此PWM波形,而因为OCR1A存储了TOP值,所以OC1A 无法输出PWM。
ATmega16定时器中断
ATmega16定时器/计数器中断及编程Atmega16内部有三个定时器/计数器T/C0,T /C1.T/C2,其中T/C0,T/C2为8为定时器,T/C1为16定时器,这里从高级语言编程的使用出发,简要介绍T/C0的使用。
定时器中断的过程是:当中断发生时,程序控制立即从主程序转移到中断服务程序,执行完中断服务程序后再返回到主程序的中断处继续执行后续的程序。
利用中断可以节省CPU资源。
先了解几个寄存器。
MCUCR---MCU控制寄存器;MCUCSR-----MCU控制与状态寄存器;GICR-----通用控制寄存器;GIFR-----通用中断标志寄存器;TIFR---定时器中断标志寄存器,TIMSK----定时器中断屏蔽寄存器。
这几寄存器保留默认设置即可,需要编程时了解并设置的寄存器为TCCR0----T/C0控制寄存器,TCNT0----T/C0的计数初始值,OCR0----输出比较寄存器,OC0/PB3----输出比较引脚。
TCCR0为8位寄存器,从高位到低位的名称依次是:FOC0,WGM00,COM01,COM00,WGM01,CS02,CS01,CS00.TCCR0各个控制位的作用:(1) CS02,CS01,CS00控制时钟选择和预分频,如100表示预分频为256(2) WGM01,WGM00控制波形产生模式,分为普通模式(用于普通计时),CTC模式(用于频率发生),快速PWM模式(用于PWM调速,功率调节),相位修正PWM模式。
如10表示CTC模式。
(3) COM01,COM00控制比较匹配输出模式。
在不同的波形产生模式下其逻辑值功能表不同,如在普通模式或CTC模式下01表示比较匹配发生OC0取反。
(4)FOC0,中断标志位,设为零即可。
至于上述控制位的逻辑值功能表可查阅Atmega16的中文数据手册,在官方网上会有英文版。
完成TCCR0的设定,接下来是设置TCNT0,OCR0寄存器了。
ATMEGA16A中文资料
ATMEGA16A中文资料高性能,低功耗AVR 8-bit微控制器•高级RISC建筑– 131条指令–绝大多数为单时钟周期执行– 32 x 8通用工作寄存器–全静态工作–高达16吞吐量在MIPS 16 MHz–片2—cycle乘数高耐久性非易失性内存段– 16K字节的程序存储器,在系统内可编程Flash– 512字节的EEPROM– 1K字节内部SRAM–写/擦除周期:10,000闪光/ 100,000的EEPROM–数据保存:在20年85°C/100年在25°C(1)–可选引导具有独立锁定Bits代码段•在系统编程的片上引导程序•真Read-While-Write操作–锁编程软件安全JTAG (IEEE std。
1149.1兼容)接口–边界扫描功能根据JTAG标准–广泛的片上调试支持–编程闪存,EEPROM,熔丝位和锁定Bits通过JTAG接口外设特点–两个8—bit定时器/计数器具有独立预分频器和比较模式–一个16-bit定时器/计数器具有独立预分频器,比较功能和捕捉模式–实时计数器具有独立振荡器–四PWM频道– 8-channel, 10-bit ADC• 8单端通道• 7在TQFP 包装差分通道只有• 2在1x, 10x,差分通道具有可编程增益或200x–面向字节的两线串行接口可编程串行USART的––主/从串行接口SPI–可编程看门狗定时器具有独立片内振荡器–片内模拟比较器单片机的特殊功能–上电复位和可编程的掉电检测–内部振荡器校准RC–外部和内部中断源– 6种睡眠模式:空闲,ADC降噪,省电,省电,待机和扩展待机I / O和封装– 32可编程I / O线– 40—pin PDIP, 44—lead TQFP,和44—pad QFN/MLF 工作电压– 2。
7为- 5。
5V ATmega16A速度等级– 0 —为16 MHz ATmega16A功耗@ 1 MHz, 3V,和25°C为ATmega16A–活动:0。
AVR教程系列一(10):ATmega16 简介(9)
ATmega16简介〔四〕ATmega16时钟系统及其分布时钟系统及其分布Figure11为AVR的要紧时钟系统及其分布。
这些时钟并不需要同时工作。
为了落低功耗,能够通过使用不同的睡眠模式来禁止无需工作的模块的时钟。
时钟系统详见Figure11。
CPU时钟-clkCPUCPU时钟与操作AVR内核的子系统相连,如通用存放器文件、状态存放器及保持堆栈指针的数据存储器。
终止CPU时钟将使内核停止工作和计算。
I/O时钟-clkI/OI/O时钟用于要紧的I/O模块,如定时器/计数器、SPI和USART。
I/O时钟还用于外部中断模块。
要注重的是有些外部中断由异步逻辑检测,因此即使I/O时钟停止了这些中断仍然能够得到监控。
此外,USI模块的起始条件检测在没有clkI/O的情况下也是异步实现的,使得那个功能在任何睡眠模式下都能够正常工作。
Flash时钟-clkFLASHFlash时钟操纵Flash接口的操作。
现在钟通常与CPU时钟同时挂起或激活。
异步定时器时钟-clkASY异步定时器时钟准许异步定时器/计数器与LCD操纵器直截了当由外部32kHz时钟晶体驱动。
使得此定时器/计数器即使在睡眠模式下仍然能够为系统提供一个实时时钟。
ADC时钟-clkADCADC具有专门的时钟。
如此能够在ADC工作的时候停止CPU和I/O时钟以落低数字电路产生的噪声,从而提高ADC转换精度。
ATmega16时钟源ATmega16芯片有如下几种通过Flash熔丝位进行选择的时钟源。
时钟输进到AVR时钟发生器,再分配到相应的模块。
不同的时钟选项将在后续局部进行介绍。
当CPU自掉电模式或省电模式唤醒之后,被选择的时钟源用来为启动过程定时,保证振荡器在开始执行指令之前进进稳定状态。
当CPU从复位开始工作时,还有额外的延迟时刻以保证在MCU开始正常工作之前电源到达稳定电平。
那个启动时刻的定时由瞧门狗振荡器完成。
瞧门狗溢出时刻所对应的WDT振荡器周期数列于Table3。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
片内经过标定的 RC 振荡器 片内/片外中断源 6 种睡眠模式: 空闲模式、ADC 噪声抑制模式、省电模式、掉电模式、Standby 模式以及扩展的 Standby 模 式 u I/O 和封装 32 个可编程的 I/O 口 40 引脚 PDIP 封装, 44 引脚 TQFP 封装, 与 44 引脚 MLF 封装 大家有可能对上面特性和外设的某些概念不理解,不用着急,大家会在后面慢慢理解的,我会在后面详细介绍, 那现在正式踏入 ATMEGA16 的学习之旅!
然后我们按照需求和设计设置好熔丝表,将<只读>的勾去掉,点<写入>,此时熔丝就设置好了,为了防止以后 误操作,将<只读>打上勾。这样就可以烧录程序了。下面介绍熔丝的具体设置规则: BODLEVEL: BOD 电平选择 1:2.7V 电平; 0:4.0V 电平---------本开发板设置为 1 (未打勾) BODEN: BOD 功能控制 1:BOD 功能禁止;0:BOD 功能允许---------本开发板设置为 1 注:BOD(Brown-out Detection) 掉电检测电路,如果 BODEN 使能(打勾)启动掉电检测,检测电平由 BODLEVEL 决定,一旦 VCC 下降到触发电平(2.7v 或 4.0v)以下,MUC 复位。 JTAGEN: 1:JTAG 禁止; 0:JTAG 允许 ---------本开发板设置为 1 OCDEN: 1:OCD 功能禁止;0:OCD 允许---------本开发板设置为 1 注:OCDEN(On-chip Debug)片上调试使能位 JTAGEN:使能 JTAG 测试访问端口。 SPIEN: 1:SPI 下载禁止;0:SPI 下载使能---------本开发板设置为 0 CKOPT: CKOPT=0:高幅度振荡输出;CKOPT=1:低幅度振荡输出 ---------本开发板设置为 0 EEAVE: 烧录时 EEPROM 数据保留 1:不保留;0:保留---------本开发板设置为 0 BOOTRST: 复位入口选择 1:程序从 0x0000 地址开始 0:复位后从 BOOT 区执行(设置为 1) BOOTSZ1/0: 引导区程序大小及入口 00: 1024Word/0xc00; 01: 512Word/0xe00; 10: 256Word/0xf00; 11: 128Word/0xf80 本开发板设置为 00 SUT1/0: 和复位启动的一个延时有关,本开发板设置为 11 CKSEL3/0: 时钟源选择,本开发板使用的是外接 11.0592M 的晶体,所以设置为 1111 最后是锁定位,LB0 和 LB1,本开发板设置为 1,即未锁定,设置这两位需谨慎。 下面是时钟配置表:
冰檐教程系列-ATMEGA16 入门教程
作者:冰檐化雨 序言:
大家好,首先笔者感谢大家能利用自己宝贵的时间来阅读我这本书。这本书主要介绍了如何使用 ATMEGA16 这款芯片,在阅读这本书这前,我希望大家有一定的 C 语言基础和数字电路的基础。在进入正题之前,我 想简单介绍下几个概念,那么什么是单片机?单片机是一个微型计算机系统,它集成了 CPU、IO 口、RAM、 ROM、中断系统和一些功能部件,如定时器,AD 转换器等等。ATMEGA16 是一款 8 位的单片机,我们要 熟悉如何用 C 语言去操作这些部件。那么这些部件是如何工作起来的?这些部件受中央处理器的控制,我们 将程序用 PC 机烧录到单片机的 ROM 中(只读存储器),然后单片机工作的时候从 ROM 中读取指令执行,并 且将一些变量和数据放在随机存储器 RAM 中,CPU 只能识别 0 和 1 这两个数字,CPU 通过执行由 0 和 1 组成的命令让所有部件正常工作。那么什么是 C 语言?一门基础的计算机语言,它的用处很广泛了,被称 为高级汇编语言,效率仅次于汇编。由于它的高效率一般工作于硬件层,大家知道 C 语言程序由字母数字 组成,那么如何变成 0 和 1 呢,这个工作由编译器来完成,此书中用的是 ICCFORAVR,它是 PC 平台下一 款 AVR 单片机的开发软件。我们能在这款软件下编辑源程序并将它编译成二进制代码。下面简单介绍下 ATMEGA16 的特性和外设: ATmega16 产品特性 高性能、低功耗的 8 位 AVR 微处理器 先进的 RISC 结构 131 条指令 大多数指令执行时间为单个时钟周期 32 个 8 位通用工作寄存器 全静态工作 工作于 16MHz 时性能高达 16MIPS 只需两个时钟周期的硬件乘法器 非易失性程序和数据存储器 16K 字节的系统内可编程 Flash,擦写寿命: 10,000 次 具有独立锁定位的可选 Boot 代码区,通过片上 Boot 程序实现系统内编程,真正的同时读写操作 512 字节的 EEPROM,擦写寿命: 100,000 次 1K 字节的片内 SRAM 可以对锁定位进行编程以实现用户程序的加密 JTAG 接口( 与 IEEE 1149.1 标准兼容) 符合 JTAG 标准的边界扫描功能 支持扩展的片内调试功能 通过 JTAG 接口实现对 Flash、EEPROM、熔丝位和锁定位的编程 外设特点 两个具有独立预分频器和比较器功能的 8 位定时器/计数器 一个具有预分频器、比较功能和捕捉功能的 16 位定时器/计数器 具有独立振荡器的实时计数器 RTC 四通道 PWM 8 路 10 位 ADC,8 个单端通道,2 个具有可编程增益(1x, 10x, 或 200x)的差分通道 面向字节的两线接口 两个可编程的串行 USART 可工作于主机/ 从机模式的 SPI 串行接口 具有独立片内振荡器的可编程看门狗定时器 片内模拟比较器 特殊的处理器特点 上电复位以及可编程的掉电检测
板。
开发板的电源可以使用 5V 电源适配器,也可以直接连接电脑 USB 接口,笔者连接的电脑 USB 接口供电。 2.软件准备 大家需要下载一款 AVR 的开发软件,笔者用的 ICC7 for AVR。界面如下:
然后就是烧录程序的软件,这里我用的是 ISPLAY V1.5,界面如下:
关于这两款软件的详细使用方法,我会在后面慢慢讲解。
3.熔丝的烧录 在对一块 ATMEGA16 芯片进行编程之,首先要设置它的熔丝位,这个很重要,也是很多初学者比较苦恼的。A16
有多个熔丝位,将这些位配置为 0 或 1 可以设置单片机的振荡器选择、启动时间和一些功能的使能,和保密 位等,如果设置不当,可能锁死芯片,解决起来比较麻烦。大家可以看到 ISPLAY 的界面内有这么一个列表 栏:
时钟源 启动延时 熔丝 外部时钟 6 CK + 0 ms CKSEL=0000 SUT=00 外部时钟 6 CK + 4.1 ms CKSEL=0000 SUT=01 外部时钟 6 CK + 65 ms CKSEL=0000 SUT=10 内部 RC 振荡 1MHZ 6 CK + 0 ms CKSEL=0001 SUT=00 内部 RC 振荡 1MHZ 6 CK + 4.1 ms CKSEL=0001 SUT=01 内部 RC 振荡 1MHZ1 6 CK + 65 ms CKSEL=0001 SUT=10 内部 RC 振荡 2MHZ 6 CK + 0 ms CKSEL=0010 SUT=00 内部 RC 振荡 2MHZ 6 CK + 4.1 ms CKSEL=0010 SUT=01 内部 RC 振荡 2MHZ 6 CK + 65 ms CKSEL=0010 SUT=10 内部 RC 振荡 4MHZ 6 CK + 0 ms CKSEL=0011 SUT=00 内部 RC 振荡 4MHZ 6 CK + 4.1 ms CKSEL=0011 SUT=01 内部 RC 振荡 4MHZ 6 CK + 65 ms CKSEL=0011 SUT=10 内部 RC 振荡 8MHZ 6 CK + 0 ms CKSEL=0100 SUT=00 内部 RC 振荡 8MHZ 6 CK + 4.1 ms CKSEL=0100 SUT=01 内部 RC 振荡 8MHZ 6 CK + 65 ms CKSEL=0100 SUT=10 外部 RC 振荡≤0.9MHZ 18 CK + 0 ms CKSEL=0101 SUT=00 外部 RC 振荡≤0.9MHZ 18 CK + 4.1 ms CKSEL=0101 SUT=01 外部 RC 振荡≤0.9MHZ 18 CK + 65 ms CKSEL=0101 SUT=10 外部 RC 振荡≤0.9MHZ 6 CK + 4.1 ms CKSEL=0101 SUT=11 外部 RC 振荡 0.9-3.0MHZ 18 CK + 0 ms CKSEL=0110 SUT=00 外部 RC 振荡 0.9-3.0MHZ 18 CK + 4.1 ms CKSEL=0110 SUT=01 外部 RC 振荡 0.9-3.0MHZ 18 CK + 65 ms CKSEL=0110 SUT=10 外部 RC 振荡 0.9-3.0MHZ 6 CK + 4.1 ms CKSEL=0110 SUT=11 外部 RC 振荡 3.0-8.0MHZ 18 CK + 0 ms CKSEL=0111 SUT=00 外部 RC 振荡 3.0-8.0MHZ 18 CK + 4.1 ms CKSEL=0111 SUT=01 外部 RC 振荡 3.0-8.0MHZ 18 CK + 65 ms CKSEL=0111 SUT=10 外部 RC 振荡 3.0-8.0MHZ 6 CK + 4.1 ms CKSEL=0111 SUT=11 外部 RC 振荡 8.0-12.0MHZ 18 CK + 0 ms CKSEL=1000 SUT=00 外部 RC 振荡 8.0-12.0MHZ 18 CK + 4.1 ms CKSEL=1000 SUT=01 外部 RC 振荡 8.0-12.0MHZ 18 CK + 65 ms CKSEL=1000 SUT=10 外部 RC 振荡 8.0-12.0MHZ 6 CK + 4.1 ms CKSEL=1000 SUT=11 低频晶振(32.768KHZ) 1K CK + 4.1 ms CKSEL=1001 SUT=00 低频晶振(32.768KHZ) 1K CK + 65 ms CKSEL=1001 SUT=01 低频晶振(32.768KHZ) 32K CK + 65 ms CKSEL=1001 SUT=10 低频石英/陶瓷振荡器(0.4-0.9MHZ) 258 CK + 4.1 ms CKSEL=1010 SUT=00 低频石英/陶瓷振荡器(0.4-0.9MHZ) 258 CK + 65 ms CKSEL=1010 SUT=01 低频石英/陶瓷振荡器(0.4-0.9MHZ) 1K CK + 0 ms CKSEL=1010 SUT=10 低频石英/陶瓷振荡器(0.4-0.9MHZ) 1K CK + 4.1 ms CKSEL=1010 SUT=11 低频石英/陶瓷振荡器(0.4-0.9MHZ) 1K CK + 65 ms CKSEL=1011 SUT=00 低频石英/陶瓷振荡器(0.4-0.9MHZ) 16K CK + 0 ms CKSEL=1011 SUT=01 低频石英/陶瓷振荡器(0.4-0.9MHZ) 16K CK + 4.1ms CKSEL=1011 SUT=10 低频石英/陶瓷振荡器(0.4-0.9MHZ) 16K CK + 65ms CKSEL=1011 SUT=11 中频石英/陶瓷振荡器(0.9-3.0MHZ) 258 CK + 4.1 ms CKSEL=1100 SUT=00 中频石英/陶瓷振荡器(0.9-3.0MHZ) 258 CK + 65 ms CKSEL=1100 SUT=01 中频石英/陶瓷振荡器(0.9-3.0MHZ) 1K CK + 0 ms CKSEL=1100 SUT=10 中频石英/陶瓷振荡器(0.9-3.0MHZ) 1K CK + 4.1 ms CKSEL=1100 SUT=11 中频石英/陶瓷振荡器(0.9-3.0MHZ) 1K CK + 65 ms CKSEL=1101 SUT=00