atmega_atmega16 - CSDN
精华内容
参与话题
  • Atmega128串口详解

    千次阅读 2012-11-07 22:24:00
    Atmega128串口详解 Atmega128有两个串口:USART0与USART1 以USART0为例 串口的初始化包括: 传输模式的选择:同步还是异步,默认为异步模式,可通过选择USART控制和状态寄存器UCSR0C中的UMSEL位来选择,UMSEL为0,是...
    Atmega128串口详解
    Atmega128有两个串口:USART0与USART1
    以USART0为例
    串口的初始化包括:
    传输模式的选择:同步还是异步,默认为异步模式,可通过选择USART控制和状态寄存器UCSR0C中的UMSEL位来选择,UMSEL为0,是异步模式.
    波特率的设置:通信的双方都必须有相同的波特率,波特率可以通过设置波特率发生寄存器UBRR0来确定,UBRR0为两字节16位的寄存器,可分为 UBRR0H和UBRR0L.同时起作用的还有UCSR0A中的波特率加倍位UX2,当UX2为1时设置的波特率加倍.
    传输帧格式的设置:默认是8位数据位,一位停止位
    发送接受的使能与中断:通过设置UCSR0B来根据需要选择接收或发送的使能和是否使用中断,对使用中断的USART操作,初始化前要关闭中断
    USART0的控制和状态寄存器有:UCSR0A,UCSR0B,UCSR0C,波特率寄存器UBRR0,即UBRR0H和UBRR0L,
    数据寄存器为UDR0
    1、初始化:
    设置波特率前,要关闭USART0的所有使用,包括使能和中断:
    UCSR0B=0B00000000; //关闭USART0
    2、设置UCSR0A:
    UCSR0A能写的有Bit0,Bit1,Bit6,其他5位为状态位.我们一般使用的有Bit1-U2X0,当这一位为1时,波特率的分频因子从16降到8,能够有效的将异步通信模式的传输速率加倍,但是这一位仅对异步操作有影响,使用同步操作时应将此位清零.
    UCSR0A=0B00000000; //不使用倍速发送
    3、设置UCSR0C:
    Bit6-UMSEL0:USART0的模式选择,0为异步模式,1为同步模式
    Bit5:4-UPM01:0:奇偶校验模式,00禁止,01,保留,10偶校验,11,奇校验
    Bit3-USBS0:停止位的选择,0停止位为1bit,1停止位为2-bits
    Bit2:1-UCSZ01:0:字符长度,当UCSZ02为0时,00表示5位,01表示6位,10表示7位,11表示8位.当UCSZ02为1时,11表示9位.(UCSZ02为UCSR0B里的一位寄存器)
    eg:
    UCSR0C=0B00000110 //异步模式,禁止奇偶校验,停止位为1位,数据位为8位
    4、设置UBRR:
    UBRR的设置和这些参数有关:U2X0,CPU频率,波特率
    U2X0为0时,即异步正常模式下,UBRR的计算公式:
    1、U2X=0时的公式计算
    UBRR0L= (F_CPU/BAUDRATE/16-1)%256;
    UBRR0H= (F_CPU/BAUDRATE/16-1)/256;

    2、U2X=1时的公式计算
    UBRRL= (F_CPU/BAUDRATE/8-1)%256;
    UBRRH= (F_CPU/BAUDRATE/8-1)/256;
    //也可根据数据手册的[波特率设置的例子]查得
    //UBRRL = 0x2F; //set baud rate lo
    //UBRRH = 0x00; //set baud rate hi
    设置一般会有误差,误差计算方法为:Error[%]=(BaudRate_ture/BaudRate-1)*100%;
    5、然后就是设置UCSR0B:
    Bit7-RXCIE0为接收结束中断使能,Bit6-TXCIE0为发送结束中断使能,Bit4-RXEN0为接收使能,Bit3-TXEN0为发送使能
    .一般情况下,接收使用中断方式,所以使用接收结束中断使能.
    UCSR0B=0B10011000 //发送接收使能,接收结束使能
    还一种写法是UCSR0B|=(1<< RXEN0)|(1<< TXEN0)|(RXCIE0);
    如果更熟练,可以直接以10进制活16进制来设置这些寄存器:
    UCSR0B=0x98;或者UCSR0B=152;

    串口的初始化函数:
    void uart_init(void) //串口0初始化
    {
    UCSR0B=0x00; //disable while setting baud rate
    UCSR0A=0B00000000; //Bit1为1则倍速发送 U2X=0
    UCSR0C=0x06; //B00000110 //奇偶模式无,八位数据位,一位停止位
    UBRR0L=103; //B00011001波特率:9600 Bps
    UBRR0H=0x00; //误差率:0.156%
    UCSR0B=0x98;
    }
    初始化之后就是对USART0进行读写了.
    UCSR0A的Bit5-UDRE0标志指出发送缓冲器UDR0是否准备好接收新数据,UDRE0为1说明缓冲器为,可以接收新数据,UDRE0标志也可用来产生寄存器空中断.复位后的UDRE0置位,表明发送器已经就绪:
    当UDRE0为1时!(UCSR0A&(1<< UDRE0))为0
    void putchar(uchar c) //串口0发送字符
    {
    while(!(UCSR0A&(1<< UDRE0))); //while(!(UCSR0A&32)); 表明发送器已经就绪。
    UDR0=c;
    }
    串口0发送字符串:
    void putstr(uchar *s) //串口0发送字符串
    {
    while(*s)
    {
    putchar(*s);
    s++;
    }
    }
    RXC0为UCSR0A里的Bit7位,为USART0接收结束的状态位,接收缓冲器中有未读出的数据时RXC0置位,否则清零.
    串口0接收字符:
    uchar getchar(void) //串口0接收字符
    {
    while(!(UCSR0A&(1<< RXC0)));
    return UDR0;
    }
    在使用串口的程序中一般包含这些文件:
    #include 
    #include 
    #include 
    #include 
    avr/io.h里有各种寄存器的定义,avr/signal.h,avr/interrupt.h里有中断的定义,avr/delay.h包含延时函数.

    例程:
    串口通信(USART0)
     
    /***************************************************************************/
    /*串口0测试程序                                          */
    /*目标器件:ATmega128                                  */
    /*晶振:RC 8MHZ                                       */
    /*编译环境:ICCAVR 7.13A                                 */
    /*时间:2010年3月14日*/
    /*E-Mail:number007cool@163.com                                             */
    /***************************************************************************/
    /*********************************包含头文件********************************/
    #include<iom128v.h>
    #include<macros.h>
    /***********************************宏定义**********************************/
    #define fosc 8000000  //晶振8MHZ
    #define baud 2400  //波特率
    /****************************************************************************
    函数功能:uart0初始化程序
    入口参数:
    出口参数:
    ****************************************************************************/
    void uart0_init(void)
    {
     UCSR0B = 0x00;                     //关闭UART00
     UCSR0A = 0x00;                      //不使用倍速发送(异步)
     UCSR0C =(1<<UCSZ01)|(1<<UCSZ00);    //数据位为8位
     UBRR0L=(fosc/16/(baud+1))%256;      //异步正常情况下的计算公式
     UBRR0H=(fosc/16/(baud+1))/256;
     UCSR0B =(1<<RXEN0)|(1<<TXEN0);      //接收使能和发送使能
    }
    /****************************************************************************
    函数功能:uart0发送单字节数据
    入口参数:c
    出口参数:
    ****************************************************************************/
    void putchar0(unsigned char c)
     {  
           while (!(UCSR0A&(1<<UDRE0)));//表明发送器已经准备就绪
        UDR0=c;    //将要发送的数据装入UDR0寄存器
     } 
     
    /****************************************************************************
    函数功能:uart0接收单字节数据
    入口参数:
    出口参数:
    ****************************************************************************/
    unsigned char getchar0(void)
       {
        while(!(UCSR0A& (1<<RXC0)));//表明已经接收完毕
           return UDR0;
     }
     
    /****************************************************************************
    函数功能:uart0发送字符串数据
    入口参数:*s
    出口参数:
    ****************************************************************************/   
    void puts0(char *s)
     {
     while (*s)
      {
      putchar0(*s);
      s++;
      } 
        putchar0(0x0a);//回车换行
     //putchar0(0x0d);
     } 
     
    /****************************************************************************
    函数功能:主程序
    入口参数:
    出口参数:
    ****************************************************************************/
    void main(void)
    {
     unsigned char i;
      uart0_init();//UART0初始化
      puts0("HELLO!");
     while(1)
        {    
            puts0("test ok!");        
     }
     
     

    串口通信(USART1)
    /***************************************************************************/
    /*串口1测试程序                                          */
    /*目标器件:ATmega128                                  */
    /*晶振:RC 8MHZ                                       */
    /*选用的波特率:9600(也可以另外设定),改了波特率后需要将电源拔了再插上方可使用*/
    /*编译环境:ICCAVR 7.13                                        */
    /*E-Mail:number007cool@163.com                                             */
    /*时间:2010年1月14日                                                      */
    /***************************************************************************/
    /*********************************包含头文件********************************/
    #include<iom128v.h>
    #include<macros.h>
    /***********************************宏定义**********************************/
    #define fosc 8000000  //晶振8MHZ
    #define baud 9600  //波特率
    /****************************************************************************
    函数功能:uart1初始化程序
    入口参数:
    出口参数:
    ****************************************************************************/
    void uart1_init(void) //USART1初始化
    {
     UCSR1B = 0x00;   //关闭USART1
     UCSR1A = 0x00;   //不适使用倍速发送
     UCSR1C = (1<<UCSZ11)|(1<<UCSZ10);//数据位为八位
     UBRR1L=(fosc/16/(baud+1))%256;//异步正常模式下,UBRR的计算公式
     UBRR1H=(fosc/16/(baud+1))/256;
     UCSR1B =(1<<RXEN1)|(1<<TXEN1); //接收使能,传送使能
    }
    /****************************************************************************
    函数功能:uart1发送单字节数据
    入口参数:c
    出口参数:
    ****************************************************************************/
    void putchar1(unsigned char c)//串口1发送字符
     {  
         while (!(UCSR1A&(1<<UDRE1)));//表明发送器一准备就绪
      UDR1=c;    
     } 
     
    /****************************************************************************
    函数功能:uart1接收单字节数据
    入口参数:
    出口参数:
    ****************************************************************************/
    unsigned char getchar1(void) //串口1接回收数据
       {
      while(!(UCSR1A& (1<<RXC1)));
         return UDR1;   //将接收到的字符返回
     } 
     
    /****************************************************************************
    函数功能:uart1发送字符串数据
    入口参数:*s
    出口参数:
    ****************************************************************************/    
    void puts1(char *s)
     {
     while (*s)
      {
      putchar1(*s);
      s++;
      } 
            putchar1(0x0a);//回车换行
         putchar1(0x0d);
     } 
     
    /****************************************************************************
    函数功能:主程序
    入口参数:
    出口参数:
    ****************************************************************************/
    void main(void)
    {
     unsigned char i;
      uart1_init();
      puts1("HELLO!");
     while(1)
        {    
            puts1("test ok!");        
     }
    展开全文
  • ATmega8 AVR单片机支援 Boot Load 功能,什么是 Boot Load 功能呢?Boot Load 功能可以让单片机自己烧录自己,不需要其它烧录器,就能做学习,真是太棒的功能。http://www.fischl.de/avrusbboot/ 网站开发出 USB介面...

    ATmega8 AVR单片机支援 Boot Load 功能,什么是 Boot Load 功能呢?Boot Load 功能可以让单片机自己烧录自己,不需要其它烧录器,就能做学习,真是太棒的功能。

    http://www.fischl.de/avrusbboot/ 网站开发出 USB介面的 Boot Load程序,很好用喔!(简单又方便),经过作者稍微修改,使它可以跟 AVR-CDC程序兼容(自制USB-RS232)。

    电路如下图 (文件点击这里下载)
    avrusbboot.png
    没有设定Boot Load ATmega8 程序内存
    bootload1.jpg
    设定 Boot Load ATmega8 程序内存
    bootload2.jpg
    下载文件后,解压缩,假设解压在 D:/avrusbboot20061113/目录下,将"D:/avrusbboot20061113/firmware/main.hex"文件烧到 ATmega8 单片机里面,熔丝设置为高fuse = C8 低fuse = 9F,按照电路图接线,接完线后,将PC2引脚接地,再将USB接头插入电脑USB孔。
    插上 USB 会出現如下画面,选择"不,现在不要",按 "下一步"
    driver1.jpg
    选择 "从清单或特定位置安装",再按 "下一步"
    driver2.jpg
    勾選 "搜尋時包括這個位置",按"瀏覽",選擇 D:/avrusbboot20061113/bin/win-driver/ 目錄,安裝驅動程式,按 "下一步"
    driver3.jpg

    如果出現警告訊息(不用緊張),按"繼續安裝"
    安裝後,按"完成"
    driver4.jpg

    "裝置管理員"內會出現剛剛安裝的裝置
    driver5.jpg


    到目前為止,已經製做完成,但如何燒錄我們的程式呢?燒完程式如何執行我們的程式呢?
    PC2接腳接地,表示要燒錄程式,將PC2接腳沒有接地(高電位),表示要執行程式
    首先開啟文字視窗

    program1.jpg

    進入 "D:/avrusbboot20061113/software" 目錄,假設你的應用程式 在 "D:/avr/cdcmega8p.hex
    輸入文字命令 avrusbboot d:/avr/cdcmega8p.hex,單晶片就會開始燒錄,如下圖

    展开全文
  • ATmega8自烧录方法

    2020-07-30 23:32:55
    ATmega8自烧录方法 ATmega8使用USB自己烧录自己,PDF文档
  • ATMEGA128——初探

    千次阅读 2017-05-16 00:30:22
    ATMEGA128——初探

    内部

    • 基于AVR1RISC2结构的高性能、低功耗8位的微处理器
    • 时钟频率为16MHz时运算速度为16MIPS3
    • 133条指令(大多数可以在一个时钟周期内完成)
    • 128KB的Flash4
    • 4KB的EEPROM5
    • 4KB的内部SRAM6
    • 64KB的外部存储器空间
    • 可通过JTAG7接口实现对Flash,EEPROM,熔丝位8和锁定位9的编程

    外设

    • 两个具有独立的预分频器比较器8位定时器
    • 两个具有预分频器比较功能捕捉功能16位定时器
    • 具有独立预分频器的实时时钟计数器
    • 2路8位 PWM
    • 6路分辨率10可编程(2到16位)的PWM
    • 8路10位 ADC
      • 8个单端通道11
      • 7个差分通道12
      • 2个具有可编程增益13(1x,10x或200x)的差分通道
    • 两个串口
    • 独立片内振荡器看门狗定时器
    • 6种睡眠模式:空闲模式ADC噪声抑制模式省电模式掉电模式Standby模式以及可扩展的Standby模式
    • 可通过软件进行选择时钟频率
    • 全局上拉禁止功能
    • 53个可编程I/O口14

      • 除PORTG是5位双向I/O口外,其他端口均为8位[7:0]。
      • 除PORTF外,其他8位端口作为输入使用时,若内部上拉电路使能,则端口被外部电路啦的士输出电流。
      • PORTF可以作为ADC的模拟输入引脚,如果不作ADC的模拟输入,则和其他端口用法一致。
        • 如果使能了JTAG接口,则复位时引脚PF7(TDI)、PF5(TMS)和PF4(TCK)的上拉电阻使能,也就是说,使能JTAG后,PF7、PF5以及PF4一直为高电平,无法编程控制。
      • 所有I/O口复位时均为三态(高阻态)。

    • 64引脚与64引脚MLF封装15

      • 64个引脚除了53个可编程I/O口外,特别介绍一下及个引脚
        • RESET 复位输入引脚。给此引脚输入一个低于最小门限时间的低电平则引起系统复位。
        • XTAL1 反向振荡器放大器及片内时钟操作电路的输入
        • XTAL2 反向振荡器放大器的输出
        • AVCC 与VCC相连,虽然为PORTF和ADC供电,但是无论有没有用到ADC也应该和VCC相连,当使用时通过一个低通滤波器16和VCC相连。
        • AREF为ADC的模拟基准输入引脚
        • PEN是SPI串行下载的使能引脚,上电复位时若PEN保持低电平,则进入SPI串行下载模式,正常工作过程中无作用。

    • 工作电压:ATMEGA128 4.5~5.5v17
           ATMEGA128L 2.7~5.5v
    • 速度:ATMEGA128 0~16MHz18
         ATMEGA128L 0~8MHz

    AVR CPU内核(core)

    概述

    • AVR采用Harvard结构19具有独立的数据和程序总线,程序储存器的指令通过一级流水线运行,CPU的预取20实现了指令的单周期运行,程序存储器为可在线编程的FLASH
    • 快速访问寄存器文件包括32个8位通用寄存器,均可在一个时钟周期内访问,从而实现单时钟周期的ALU操作21
      • 其中有6个寄存器可以用作3个16位的间接地址寄存器指针以寻址数据空间,实现高效的地址运算。22
      • ALU支持寄存器之间以及寄存器和常熟之间的算术和逻辑运算,也可执行但寄存器操作。运算过后状态寄存器的内容将更新以反映操作结果。
    • 程序流程通过条件的二值判断即跳转指令调用指令来控制,从而直接寻址整个地址空间。大多数指令长度为16位,即每个程序存储器地址都包含一条16位/32位的指令。
    • 程序储存空间分为引导程序区和应用程序区,均有专门的锁定位实现读/写保护,引导程序区的SPM指令特别用于写应用程序区。
    • 在中断和调用子程序时返回地址程序计数器(PC)保存与堆栈23之中。
    • AVR存储器空间为显性的平面结构24
    • AVR具有一个灵活的中断模块,其控制寄存器位于I/O空间2526

    ALU-逻辑单元

    • AVR ALU与32个通用寄存器直接相连,寄存器之间以及寄存器与立即数27之间的ALU运算只需要一个时钟周期。
    • ALU操作为三类:算术、逻辑和位操作28
    • ALU还提供了支持有/无符号数和分数乘法的乘法器29

    状态寄存器(SREG->Status Register)

    • 状态寄存器包含最近执行的算术指令的结果信息,可用来改变程序流程以实现条件操作
    • 状态寄存器只有在ALU运算结束后才会更新。
    • 进入或进入和返回时状态寄存器不会自动保存或恢复,需要软件处理
    SREG位定义
    Bit 7 6 5 4 3 2 1 0
    I T H S V N Z C
    读/写 R/W R/W R/W R/W R/W R/W R/W R/W
    初始值 0 0 0 0 0 0 0 0
    意义 全局中断使能 位拷贝储存 半进位标志 符号位 2的补码溢出标志 负数标志 零标志 进位标志

    * Bit7(I)置位时使能全局中断。若I清零,则无论单独终端标志如何都不会产生中断。任意中断发生->I=0->RETI->I=1。I也可以通过SEI和CLI指令来置位和清零。
    * Bit6(T)可以作为目的或源地址。BST指令拷贝寄存器的某一位到T,而BLD把T拷贝到寄存器的某一位。
    * Bit5(H)表示算术操作发生了半进位,主要用于BCD运算。30
    * [4:0]为运算(逻辑或算术)位,Bit4(S):S=N⊕V。(⊕为异或运算符,和c语言中的^一致)



    1. 1997年由ATMEl公司挪威设计中心的MR.A和MR.V共同研发出精简指令集(RISC)的高速8位单片机,所以起名AVR单片机。
    2. RISC(Reduced Instruction Set Computer)即精简指令系统计算机,与之相对的是CISC(Complex Instruction Set Computing)即复杂指令系统计算机。这里的计算机指令系统是指计算机的最底层的机器指令。起初CISC被应用于计算机系统优化,通过设置一些功能复杂的指令来替代一些常见的软件功能,80年代RISC兴起,尽量简化计算机指令功能,只保留能在一个节拍内完成的指令。RISC的精华在于减少指令的平均执行周期,从而提高计算机的工作主频,同时大量使用通用寄存器来提高子程序执行的速度。
    3. MIPS(Million Instructions Per Second)即每秒处理的百万级的机器语言指令数。
    4. Flash(Flash EEPROM memory)即闪存,结合了ROM和RAM的长处,不仅具备EEPROM的性能,还可以快速读取数据(NVRAM的优势),使数据不会因为断电而丢失,用于U盘、MP3等里面作为外部储存。
    5. EEPROM(Electrically Erasable Programmable Read-Only Memory)即电可擦可编程只读存储器——一种掉电后数据不丢失的存储芯片,是可更改的只读存储器(ROM),其可通过高于普通电压的作用来擦除和重编程。发展:ROM->PROM->EPROM->EEPROM。
    6. SRAM(Static Random Access Memory)即静态随机存取存储器,不需要刷新电路即能保存它内部存储的数据,而DRAM(Dynamic Random Access Memory)每隔一段时间,要刷新充电一次,否则内部的数据即会消失。SRAM有高性能、低功耗,但集成度较低,体积较大。SRAM有两种规格:固定在主板上的高速缓存(Cache Memory)和插在卡槽上的COAST(Cache On A Stick)扩充用的高速缓存,L1 Cache(一级高速缓存)在CPU内部,而L2 Cache(二级高速缓存)一般在CPU外部。
    7. JTAG(Joint Test Action Group)即联合测试组织行为,也是一种国际标准测试协议(IEEE 1149.1兼容),用于芯片内部测试。JTAG标准4线接口:TMS(模式选择)、TCK(时钟)、TDI(数据输入)、TDO(数据输出),TRST(测试复位)为输入引脚,低电平有效。
    8. 熔丝位是一个保护知识产权的设计,在特定的引脚上加电压,足够的电流,就可以烧断里边的这根熔丝,烧断以后,片里的程序就不可以被读出来也不能改写了,只能用来运行。熔丝位是在一个特定的地址上可以读到熔丝状态的一个位。0表示已熔断,1表示未熔断。
    9. 锁定位即在特定地址上可以读到加密锁状态的一个位。
    10. PWM的分辨率即输出PWM波形时,调整频率和占空比时的精细程度,类比于误差精度。
    11. 在单端方式工作时;ADC转换的是单输入引脚对地的电压值;在增益为1时,测量的值就是输入的电压值;范围是0V到VREF(内部基准电压);当增益增加时,输入的范围要相应的减小。
    12. 在差分方式工作时;ADC转换的是AIN+与AIN-两个引脚的差值;在增益为1时,测量的值等于(AIN+)-(AIN-),范围是-VREF到+VREF;当增益增加时,输入的范围要相应的减小。
    13. 增益即电信号的传输增益,通俗讲也就是信号放大倍数。
    14. 53个I/O口即为:PORTA[7:0],PORTB[7:0],PORTC[7:0],PORTD[7:0],PORTE[7:0],PORTF[7:0]以及PORTG[4:0]。
    15. MLF(MicroLeadFrame),MLF接近于芯片级封装(Chip Scale Package,CSP),用封装的底部引线端提供到PCB板的电气接触,而不是到海鸥翅膀形状引线的soic和qual封装,因此,这种封装有利于保证散热和电气性能。
    16. 低通滤波器(Low-Pass filter)允许从直流到某个截止频率(fCUTOFF)的信号通过,简述为:通低频,阻高频。
      [^FN’2]:
    17. 按一般MCU供电条件来看,ATMEGA128芯片可以以5v电压供电,而ATMEGA128L则可以在3.3v或5v之间任选一个。
    18. ATMEGA128默认使用1M的内部振荡器,可以通过修改熔丝位改为1、2、4、8、16MHz,而ATMEGA128L则最高可达8MHz的频率。
    19. RISC(Reduced Instruction Set Computer)即精简指令系统计算机,与之相对的是CISC(Complex Instruction Set Computing)即复杂指令系统计算机。这里的计算机指令系统是指计算机的最底层的机器指令。起初CISC被应用于计算机系统优化,通过设置一些功能复杂的指令来替代一些常见的软件功能,80年代RISC兴起,尽量简化计算机指令功能,只保留能在一个节拍内完成的指令。RISC的精华在于减少指令的平均执行周期,从而提高计算机的工作主频,同时大量使用通用寄存器来提高子程序执行的速度。
    20. MIPS(Million Instructions Per Second)即每秒处理的百万级的机器语言指令数。
    21. Flash(Flash EEPROM memory)即闪存,结合了ROM和RAM的长处,不仅具备EEPROM的性能,还可以快速读取数据(NVRAM的优势),使数据不会因为断电而丢失,用于U盘、MP3等里面作为外部储存。
    22. EEPROM(Electrically Erasable Programmable Read-Only Memory)即电可擦可编程只读存储器——一种掉电后数据不丢失的存储芯片,是可更改的只读存储器(ROM),其可通过高于普通电压的作用来擦除和重编程。发展:ROM->PROM->EPROM->EEPROM。
    23. SRAM(Static Random Access Memory)即静态随机存取存储器,不需要刷新电路即能保存它内部存储的数据,而DRAM(Dynamic Random Access Memory)每隔一段时间,要刷新充电一次,否则内部的数据即会消失。SRAM有高性能、低功耗,但集成度较低,体积较大。SRAM有两种规格:固定在主板上的高速缓存(Cache Memory)和插在卡槽上的COAST(Cache On A Stick)扩充用的高速缓存,L1 Cache(一级高速缓存)在CPU内部,而L2 Cache(二级高速缓存)一般在CPU外部。
    24. JTAG(Joint Test Action Group)即联合测试组织行为,也是一种国际标准测试协议(IEEE 1149.1兼容),用于芯片内部测试。JTAG标准4线接口:TMS(模式选择)、TCK(时钟)、TDI(数据输入)、TDO(数据输出),TRST(测试复位)为输入引脚,低电平有效。
    25. 熔丝位是一个保护知识产权的设计,在特定的引脚上加电压,足够的电流,就可以烧断里边的这根熔丝,烧断以后,片里的程序就不可以被读出来也不能改写了,只能用来运行。熔丝位是在一个特定的地址上可以读到熔丝状态的一个位。0表示已熔断,1表示未熔断。
    26. 锁定位即在特定地址上可以读到加密锁状态的一个位。
    27. PWM的分辨率即输出PWM波形时,调整频率和占空比时的精细程度,类比于误差精度。
    28. 在单端方式工作时;ADC转换的是单输入引脚对地的电压值;在增益为1时,测量的值就是输入的电压值;范围是0V到VREF(内部基准电压);当增益增加时,输入的范围要相应的减小。
    29. 在差分方式工作时;ADC转换的是AIN+与AIN-两个引脚的差值;在增益为1时,测量的值等于(AIN+)-(AIN-),范围是-VREF到+VREF;当增益增加时,输入的范围要相应的减小。
    30. 增益即电信号的传输增益,通俗讲也就是信号放大倍数。
    展开全文
  • ATmega8中文资料

    2020-05-31 23:31:26
    ATmega8中文资料,主要包括ATmega8的技术支持以及如何使用ATmega8
  • Atmega8型号细分区别

    2019-06-28 03:27:15
    TMEGA8L- 8PU、ATMEGA8L-8PI、ATMEGA8L-8PC、ATMEGA8-16PU、ATMEGA8-16PI、ATMEGA8-16PC、 ATMEGA8L-8AU、ATMEGA8L-8AI、ATMEGA8L-8AC、ATMEGA8-16AU、ATMEGA8-16AI、 ATMEGA8-16AC、ATMEGA8L-8MU、ATMEGA8L-8MI、...

    TMEGA8L- 8PU、ATMEGA8L-8PI、ATMEGA8L-8PC、ATMEGA8-16PU、ATMEGA8-16PI、ATMEGA8-16PC、 ATMEGA8L-8AU、ATMEGA8L-8AI、ATMEGA8L-8AC、ATMEGA8-16AU、ATMEGA8-16AI、 ATMEGA8-16AC、ATMEGA8L-8MU、ATMEGA8L-8MI、ATMEGA8L-8MC、ATMEGA8-16MU、 ATMEGA8-16MI、ATMEGA8-16MC的区别如下:

    1.型号紧跟的字母,表示电压工作范围。带“L”:2.7-5.5V;若缺省,不带“L”:4.5-5.5V。

    例:ATmega8-16PU,不带“L”表示工作电压为4.5-5.5V。

    2.后缀的数字部分,表示支持的最高系统时钟。

    例:ATmega8-16PU,“16”表示可支持最高为16MHZ的系统时钟。

    3.后缀第一(第二)个字母,表示封装。“P”:DIP封装,“A”:TQFP封装,“M”:MLF封装。

    例:ATmega8-16PU,“P”表示DIP封装。<BR>4.后缀最后一个字母,表示应用级别。

    4.“C”:商业级,“I”:工业级(有铅)、“U”工业级(无铅)。

    例:ATmega8-16PU,“U”表示无铅工业级。ATmega8-16PI,“I”表示有铅工业级。

    5.“C”(0°C 至 70°C),“I”(-40°C 至 85°C),“U”(-40°C 至 85°C)

    例:ATMEGA8L-8PI的正常工作温度是在 -40°C 至 85°C 之间,ATMEGA8L-8PC的正常工作温度是在 0°C 至 70°C 之间。

    转载于:https://www.cnblogs.com/wanglinsheng/p/5984255.html

    展开全文
  • ...ATmega8U2和ATmega16U2是USB接口芯片,其特征包括: 1)8K/16K字节的Flash,支持自擦写功能。512字节EEPROM和512字节SRAM (8U和16U的不同处是Flash容量) 2)内置Boot-Loader功能。
  • 自制atmega328p-pu为主控的Arduino核心板

    万次阅读 2017-07-05 20:27:55
    利用一片atmega328p-pu,自制Arduino核心板。给出了核心板原理图,烧写Arduino的bootloader步骤以及上传程序步骤。
  • 1、参考 http://blog.sina.com.cn/s/blog_6f72ff900102xktj.html ...2、材料准备 Arduino UNO控制板1块 100欧姆电阻1个 22p电容2个 16M Hz晶振1个 ATMEGA328P封装芯片1个 面包板1个,连接线若干
  • 使用高速的微处理控制器(ATMEGA328),开发操作界面和环境都非常简单、易理解,非常适合初学者学习。性能描述 I/O 数字输入/输出端共 0~13。 I/O 模拟输入/输出端共 0~5。支持ISP下载功能。输入电压:接上电脑USB时...
  • Atmega48-88-168熔丝位设置方法

    千次阅读 2015-07-08 21:57:37
    Atmega48-88-168熔丝位设置方法  本文以Atmega168PA+PROGISP为例说明Atmega48-88-168熔丝位的设置方法,参考设计电路图如下图所示,外接7.3728M无源晶振。      1、启动PROGISP软件,正确连接下载器和目标...
  • ATMega328P-PU芯片Arduino最小系统实验

    万次阅读 2017-09-19 19:38:56
    业余折腾了一段时间的Arduino,一时兴起想尝试下在面包板上实现一个最小系统,所以从某宝上买了ATMega328P-PU芯片和USBtinyISP编程器。
  • atmega8×1 16MHZ晶振×1 22pf陶瓷电容×2 arduino uno ×1 杜邦线若干 atmega8引脚图 最小系统电路连接 实物连接如图 arduino uno连接电脑 打开arduino IDE 文件-示例-ArduinoISP-...
  • 第一步:硬件准备 1.ATMEGA8L-8PU avr单片机(图1) 2.USBasp(用于烧写bootloader的工具)(图2上) 3.USB转TTL串口线(我用的是FT232芯片的,稳定性比较好,用于在arduino下装载程序)
  • AVR单片机(ATMEGA16)控制蜂鸣器

    千次阅读 2012-07-05 17:27:27
    #include #include #define uchar unsigned char #define uint unsigned int #define DELAY 500 void delay(uint z) //1ms { uint x,y; for(x=z;x>0;x--) for(y=157;...void main(void)
  • Atmega328p-pu与Atmega16A-PU区别

    千次阅读 2019-09-15 10:13:38
    Atmega328p-pu(Arduino-URO主控芯片)和Atmega16A-PU有什么区别 Atmega328p-pu和Atmega16最大的区别是它们的FLSAH容量不同,前者为32KB,后者为16KB,外部中断数也不一样,其余的基本上相同,ATMEGA系列的单片机...
  • Atmega328P熔丝设置错误修复

    千次阅读 2017-07-03 11:47:39
    本例:下载线USBASP、编程:PROISP 新的Atmega328P,DIP28封装,因为熔丝位...本例中,用正常工作的STC12C2052的XTAL2引脚,接入Atmega328的XTAL1引脚,重新对Atmega328P上电,就可以重新读入熔丝位了。重新写入默认熔
  • 16U2固件推荐选用Arduino\avr\firmwares\atmegaxxu2\arduino-usbserial\Arduino-usbserial-atmega16u2-Uno-Rev3.hex 否则用Arduino\hardware\arduino\avr\firmwares\atmegaxxu2\Genuino-COMBINED-dfu-usbserial-...
  • ATmega32U4 芯片介绍 相关开源应用

    千次阅读 2018-07-08 17:45:45
    https://www.microchip.com/wwwproducts/en/atmega32u4 Summary The low-power Microchip 8-bit AVR RISC-based microcontroller featuring 32KB self-programming flash program memory, 2.5KB SRAM, 1KB EE...
  • Arduino - 最小系统(基于ATMEGA8-16PU)

    千次阅读 2017-03-22 08:56:34
    ATMEGA8-16PU 单片机。 直接通过ISP编程器进行程序下载,所以不需要烧录Bootloader。 (可选)USB ISP 编程器(如果没有编程器,则用Nano制作下载器,并用芯片出厂默认熔丝参数进行编译下载即可)。 (可选)16M...
1 2 3 4 5 ... 20
收藏数 4,486
精华内容 1,794
关键字:

atmega