ATmega16 的EEPROM的使用

ATmega16 的EEPROM的使用
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 读取的数据。

EEPROM 控制寄存器-EECR

· Bits 7..4 – Res: 保留

保留位,读操作返回值为零。

· Bit 3 – EERIE: 使能EEPROM 准备好中断

若SREG 的I 为"1",则置位EERIE 将使能EEPROM 准备好中断。清零EERIE 则禁止此中断。当EEWE 清零时EEPROM 准备好中断即可发生。

· Bit 2 – EEMWE: EEPROM 主机写使能

EEMWE决定了EEWE置位是否可以启动EEPROM写操作。当EEMWE为"1"时,在4个时钟周期内置位EEWE 将把数据写入EEPROM 的指定地址;若EEMWE 为"0“,则操作EEWE 不起作用。EEMWE 置位后4 个周期,硬件对其清零。见EEPROM 写过程中对EEWE 位的描述。

· Bit 1 – EEWE: EEPROM 写使能

EEWE 为EEPROM 写操作的使能信号。当EEPROM 数据和地址设置好之后,需置位EEWE以便将数据写入EEPROM。此时EEMWE必须置位,否则EEPROM写操作将不会发生。写时序如下( 第3 步和第4 步的次序并不重要):

1. 等待EEWE 位变为零

2. 等待SPMCSR 中的SPMEN 位变为零

3. 将新的EEPROM 地址写入EEAR( 可选)

4. 将新的EEPROM 数据写入EEDR( 可选)

5. 对EECR 寄存器的EEMWE 写"1",同时清零EEWE

6. 在置位EEMWE 的4 个周期内,置位EEWE

在CPU 写Flash 存储器的时候不能对EEPROM 进行编程。在启动EEPROM 写操作之前软件必须检查Flash 写操作是否已经完成。步骤(2) 仅在软件包含引导程序并允许CPU对Flash 进行编程时才有用。如果CPU 永远都不会写Flash,步骤(2) 可省略。请参见P234“支持引导装入程序–在写的同时可以读(RWW, Read-While-Write)的自我编程能力”。

注意:如果在步骤5 和6 之间发生了中断,写操作将失败。因为此时EEPROM 写使能操作将超时。如

果一个操作EEPROM的中断打断了另一个EEPROM操作,EEAR 或EEDR寄存器可能被修改,引起EEPROM 操作失败。建议此时关闭全局中断标志I。经过写访问时间之后,EEWE 硬件清零。用户可以

凭借这一位判断写时序是否已经完成。EEWE 置位后,CPU 要停止两个时钟周期才会运行下一条指令。

· Bit 0 – EERE: EEPROM 读使能

EERE为EEPROM读操作的使能信号。当EEPROM地址设置好之后,需置位EERE以便将数据读入EEAR。EEPROM 数据的读取只需要一条指令,且无需等待。读取EEPROM后CPU 要停止4 个时钟周期才可

以执行下一条指令。

用户在读取EEPROM 时应该检测EEWE。如果一个写操作正在进行,就无法读取EEPROM,也无法改

变寄存器EEAR。经过校准的片内振荡器用于EEPROM定时。

Table 1 为CPU访问EEPROM的典型时间。

下面的代码分别用汇编和C 函数说明如何实现EEPROM 的写操作。在此假设中断不会在执行这些函数的过程当中发生。同时还假设软件没有Boot Loader。若Boot Loader 存在,则EEPROM 写函数还需要等

待正在运行的SPM 命令的结束。

汇编代码例程

EEPROM_write:

; 等待上一次写操作结束

sbic EECR,EEWE

rjmpEEPROM_write

; 设置地址寄存器(r18:r17)

out EEARH, r18

out EEARL, r17

; 将数据写入数据寄存器(r16)

out EEDR,r16

; 置位EEMWE

sbi EECR,EEMWE

; 置位EEWE 以启动写操作

sbi EECR,EEWE

ret

C 代码例程

void EEPROM_write(unsigned intuiAddress, unsigned char ucData)

{

/* 等待上一次写操作结束*/

while(EECR & (1<

;

/* 设置地址和数据寄存器*/

EEAR = uiAddress;

EEDR = ucData;

/* 置位EEMWE */

EECR |= (1<

/* 置位EEWE 以启动写操作*/

EECR |= (1<

}

下面的例子说明如何用汇编和C 函数来读取EEPROM,在此假设中断不会在执行这些函数的过程当中发生。

汇编代码例程

EEPROM_read:

; 等待上一次写操作结束

sbic EECR,EEWE

rjmpEEPROM_read

; 设置地址寄存器(r18:r17)

out EEARH, r18

out EEARL, r17

; 设置EERE 以启动读操作

sbi EECR,EERE

; 自数据寄存器读取数据

in r16,EEDR

ret

C 代码例程

unsigned char EEPROM_read(unsigned intuiAddress)

{

/* 等待上一次写操作结束*/

while(EECR & (1<

;

/* 设置地址寄存器*/

EEAR = uiAddress;

/* 设置EERE 以启动读操作*/

EECR |= (1<

/* 自数据寄存器返回数据*/

return EEDR;

}

在掉电休眠模式下的EEPROM写操作

若程序执行掉电指令时EEPROM 的写操作正在进行,EEPROM 的写操作将继续,并在指定的写访问时

间之前完成。但写操作结束后,振荡器还将继续运行,单片机并非处于完全的掉电模式。因此在执行掉电指令之前应结束EEPROM 的写操作。

防止EEPROM 数据丢失

若电源电压过低,CPU 和EEPROM 有可能工作不正常,造成EEPROM 数据的毁坏( 丢失)。这种情况在使用独立的EEPROM 器件时也会遇到。因而需要使用相同的保护方案。

由于电压过低造成EEPROM 数据损坏有两种可能:一是电压低于EEPROM 写操作所需要的最低电压;二是CPU 本身已经无法正常工作。

EEPROM 数据损坏的问题可以通过以下方法解决:

当电压过低时保持AVR RESET信号为低。这可以通过使能芯片的掉电检测电路BOD来实现。如果BOD 电平无法满足要求则可以使用外部复位电路。若写操作过程当中发生了复位,只要电压足够高,写操作仍将正常结束。

个人总结的AVR的ATMEGA16L单片机程序

ATMAGE 16 的C语言程序

ATMAGE 16 的C语言程序 (1) 一、PB0 口的PB0.1 LED 发光管闪烁的程序: (3) 二、PA0、PB0、PC0口的LED 发光管闪烁的程序: (5) 三、I/O口的输入与输出 (6) 四、跑马灯 (8) 五、数码管计数显示设计 (10) 六、控制直流电机正反转 (16) 七、单片机的定时器(T/C0)应用 (20) AVR原理图 (24)

一、PB0 口的PB0.1 LED 发光管闪烁的程序: #include int main( void ) { unsigned char i, j, k,led=0; DDRB=0xFF; /* all outputs */ while (1) { if(led) PORTB|=0X01; /* |使最后一位为1 */

else PORTB&=0XFE; /*&最后一位为0 */ led=!led; //延时 for (i=0; i<255; i++) for(j=0; j<255;j++) k++; } } /////////////////////////////////////////////////////////////// #include int main( void ) { unsigned char i, j, k,led=0; DDRB=0xFF; /* all outputs */ while (1) { if(led) PORTB=0Xfe; else PORTB=0Xff; led=!led; for (i=0; i<255; i++) //延时 for(j=0; j<255;j++) k++; } }

I2C总线应用下的EEPROM测试

I2C总线应用下的EEPROM测试 作者:盛帅能 作者单位:华越微电子有限公司,浙江,绍兴,312000 刊名: 半导体技术 英文刊名:SEMICONDUCTOR TECHNOLOGY 年,卷(期):2004,29(4) 被引用次数:2次 本文读者也读过(10条) 1.李文雄.陆俭国.刘明生.商书元.LI Wen-xiong.LU Jian-guo.LIU Ming-sheng.SHANG Shu-yuan基于I2C总线的EEPROM在智能电器中的应用[期刊论文]-低压电器2005(11) 2.庞媛媛.崔建明.PANG Yuan yuan.CUI Jian-ming一种I2C总线接口设计在EEPROM的应用[期刊论文]-电脑知识与技术2011,07(30) 3.苏琦.刘宇.田敬民EEPROM基于I2C总线的一种读写方法[期刊论文]-山西电子技术2001(1) 4.郭文华.GUO Wen-hua基于I2C总线的串行E2PROM及其应用[期刊论文]-常熟理工学院学报2008,22(10) 5.麦胤.柳沁.Mai Yin.Liu Qin基于Nios Ⅱ的EEPROM Controller Core的设计[期刊论文]-自动化仪表 2008,29(1) 6.杨正进.王玉霞基于I2C总线的EEPROM与单片机接口技术[期刊论文]-重庆工学院学报2001,15(2) 7.刘冰.杜道山.周士侃.李从心基于I2C总线协议的EEPROM与DSP的接口技术[期刊论文]-电子工程师2004,30(9) 8.李和太.蒋晶鑫.陆虹.LI He-tai.JANG Jing-xin.LU Hong嵌入式串行EEPROM研究[期刊论文]-微处理机2007,28(1) 9.徐飞.贺祥庆.张莉.XU Fei.HE Xiang-qing.ZHANG Li一种40ns 16kb EEPROM的设计与实现[期刊论文]-微电子学2005,35(2) 10.意法半导体推出超小型封装的增强型512 kbit I2C和SPI低压串行EEPROM存储器[期刊论文]-电子与电脑 2005(5) 引证文献(2条) 1.沈华.王俞心基于FPGA的I2C总线主控器的设计与实现[期刊论文]-航空计算技术 2007(6) 2.张必超存储器测试技术及其在质量检验中的应用研究[学位论文]硕士 2005 本文链接:https://www.360docs.net/doc/a63045656.html,/Periodical_bdtjs200404018.aspx

常用串行EEPROM芯片

1 Features ?Serial Peripheral Interface (SPI) Compatible ?Supports SPI Modes 0 (0,0) and 3 (1,1) ?Low-voltage and Standard-voltage Operation –2.7 (V CC = 2.7V to 5.5V)? 3.0 MHz Clock Rate (5V) ?8-byte Page Mode ?Block Write Protection –Protect 1/4, 1/2, or Entire Array ?Write Protect (WP) Pin and Write Disable Instructions for Both Hardware and Software Data Protection ?Self-timed Write Cycle (10 ms max)?High Reliability –Endurance: One Million Write Cycles –Data Retention: 100 Years ?Automotive Grade Devices Available ? 8-lead PDIP and 8-lead JEDEC SOIC Packages Description The AT25010/020/040 provides 1024/2048/4096 bits of serial electrically erasable programmable read only memory (EEPROM) organized as 128/256/512 words of 8bits each. The device is optimized for use in many industrial and commercial applica-tions where low-power and low voltage operation are essential. The AT25010/020/040is available in space saving 8-lead PDIP and 8-lead JEDEC SOIC packages. The AT25010/020/040 is enabled through the Chip Select pin (CS) and accessed via a 3-wire interface consisting of Serial Data Input (SI), Serial Data Output (SO), and Serial Clock (SCK). All programming cycles are completely self-timed, and no sepa-rate ERASE cycle is required before WRITE. BLOCK WRITE protection is enabled by programming the status register with one of four blocks of write protection. Separate program enable and program disable instruc-tions are provided for additional data protection. Hardware data protection is provided via the WP pin to protect against inadvertent write attempts. The HOLD pin may be used to suspend any serial communication without resetting the serial sequence. Pin Configurations 8-lead PDIP

ATMega16单片机外部中断的使用

ATMega16单片机外部中断的使用[日期:2010-09-24 ] [来源:本站原创作者:佚名] [字体:大中小] (投递新闻) // Crystal: 7.3728Mhz ,功能:学习外部中断0的程序 #include #include #define LED_COM PORTA ^= (1 << PA6) // void port_init(void) { PORTA = 0x40; DDRA = 0x40; PORTB = 0x00; DDRB = 0x00; PORTC = 0x00; //m103 output only DDRC = 0x00; PORTD = 0x04; DDRD = 0x00; } #pragma interrupt_handler int0_isr:2 void int0_isr(void)

LED_COM; } //call this routine to initialize all peripherals void init_devices(void) { //stop errant interrupts until set up CLI(); //disable all interrupts port_init(); MCUCR = 0x00; GICR = 0x40; TIMSK = 0x00; //timer interrupt sources SEI(); //re-enable interrupts //all peripherals are now initialized } void main() { init_devices(); while(1)

串行EEPROM AT24CXX芯片资料

串行EEPROM AT24CXX芯片资料 AT24CXX是美国ATMEL公司的低功耗CMOS串行EEPROM,典型的型号有 AT24C01A/02/04/08/16等5种,它们的存储容量分别是 1024/2048/4096/8192/16384位;也就是128/256/512/1024/2048字节;使用电压级别有5V,2.7V,2.5V,1.8V;本文主要介绍常用的AT24C02即256字节存储器的使用;它具有工作电压宽(2.5~5.5V)、擦写次数多(大于10000次)、写入速度快(小于10ms)等特点。 外行如图: AT24C02的1、2、3脚是三条地址线,用于确定芯片的硬件地址(实验板中直接接地只有一块器件);第8脚和第4脚分别为正、负电源。第5脚SDA 为串行数据输入/输出,数据通过这条双向I2C总线串行传送,SDA和SCL都需要和正电源间各接一个5.1K的电阻上拉。第7脚为WP写保护端,接地时允许芯片执行一般的读写操作。接电源端时不允许对器件写。 24C02中带有片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。 ;这是将0100H地址中以下的8个数据写到24C02的01H为首址单元中去的汇编程序可直接在实验板上实验。 ORG 0000H SCL BIT P3.7;定义24C02的串行时钟线 SDA BIT P3.6;定义24C02的串行数据线 LJMP START START:LCALL STAR;调用

MOV R2,#08H;一个数据有8位 MOV DPTR,#0100H;定义源数据的位置LOOP:MOV A,#00H MOVC A,@A+DPTR LCALL SDATA LCALL ACK JC LOOP INC DPTR DJNZ R2,LOOP LCALL STOP;调用停止子程序STAR:SETB SDA SETB SCL NOP NOP NOP NOP CLR SDA NOP NOP NOP NOP CLR SCL RET SDATA:MOV R0,#08H LOOP0:RLC A MOV SDA,C NOP NOP SETB SCL

ATMEGA16单片机实验

实验一软件和硬件的认识 一、实验目的: 1、掌握硬件原理。 2、初步掌握实验板的使用方法。 3、熟悉软件工作界面。 二、实验仪器:ATmage16实验板一块 PC机一台 三、实验内容及步骤: 1、插上电源,按下开关。观察批示灯是否点亮。 电源(可输入7~12V) ATmega16管脚图

2、由原理可知I/O口的批示灯为低电平亮,在实验板上取地与I/O口相接,观察是否点亮。 I/O口LED显示与接口 3、打开编程界面,点击各栏,认识各栏的用途。 A VRICC IDE 软件的工作界面 4、输入以下程序: #include int main(void) { DDRA = 0xff;/* all outputs */ DDRB = 0xff;/* all outputs */ DDRC = 0xff; /*all outputs */ DDRD = 0xff; /*all outputs */

PORTA = 0x00; /* 输出低电平*/ PORTB = 0x00; /* 输出低电平*/ PORTC = 0x00; /* 输出低电平*/ PORTD = 0x00; /* 输出低电平*/ while(1); } 观察I/O口的灯是否被点亮。 实验二I/O口的输入与输出 一、实验目的: 1、了解IO口的结构; 2、熟悉IO口的特性; 3、掌握IO口的控制。 二、实验仪器:ATmage16实验板一块 PC机一台 三、实验原理: 作为通用数字I/O 使用时,A VR 所有的I/O 端口都具有真正的读-修改-写功能。这意味着用SBI 或CBI 指令改变某些管脚的方向( 或者是端口电平、禁止/ 使能上拉电阻) 时不会改变其他管脚的方向( 或者是端口电平、禁止/ 使能上拉电阻)。输出缓冲器具有对称的驱动能力,可以输出或吸收大电流,直接驱动LED。所有的端口引脚都具有与电压无关的上拉电阻。并有保护二极管与VCC 和地相连,如Figure23 所示。在控制I/O时,分别由方向寄存器DDRX与数据寄存器PORTX控制I/O的状态,如下表。 Figure 23. I/O 引脚等效原理图

EEPROM.

常用串行EEPROM的编程应用 EEPROM是"Electrically Erasable Programmable Read-only"(电可擦写可编程只读存储器)的缩写,EEPROM在正常情况下和EPROM一样,可以在掉电的情况下保存数据,所不同的是它可以在特定引脚上施加特定电压或使用特定的总线擦写命令就可以在在线的情况下方便完成数据的擦除和写入,这使EEPROM被用于广阔的的消费者范围,如:汽车、电信、医疗、工业和个人计算机相关的市场,主要用于存储个人数据和配置/调整数据。EEPROM又分并行EEPROM和串行EEPROM,并行EEPROM器件虽然有很快的读写的速度,但要使用很多的电路引脚。串行EEPROM器件功能上和并行EEPROM基本相同,提供更少的引脚数、更小的封装、更低的电压和更低的功耗,是现在使用的非易失性存储器中灵活性最高的类型。串行EEPROM按总线分,常用的有I2C,SPI,Microwire总线。本文将介绍这三种总线连接单片机的编程方法。 I2C总线 I2C总线(Inter Integrated Circuit内部集成电路总线)是两线式串行总线,仅需要时钟和数据两根线就可以进行数据传输,仅需要占用微处理器的2 个IO引脚,使用时十分方便。I2C总线还可以在同一总线上挂多个器件,每个器件可以有自己的器件地址,读写操作时需要先发送器件地址,该地址的器件得到确认后便执行相应的操作,而在同一总线上的其它器件不做响应,称之为器件寻址,这个原理就像我们打电话的原理相当。I2C总线产生80年代,由PHLIPS 公司开发,早期多用于音频和视频设备,如今I2C总线的器件和设备已多不胜数。最常见的采用I2C总线的EEPROM也已被广泛使用于各种家电、工业及通信设备中,主要用于保存设备所需要的配置数据、采集数据及程序等。生产I2C总线EEPROM的厂商很多,如ATMEL、Microchip公司,它们都是以24来开头命名芯片型号,最常用就是24C系列。24C系列从24C01到24C512,C后面的数字代表该型号的芯片有多少K的存储位。如ATMEL的24C64,存储位是64K位,也就是说可以存储8K(8192)字节,它支持1.8V到5V电源,可以擦写1百万次,数据可以保持100年,使用5V电源时时钟可以达到400KHz,并且有多种封装可供选择。我们可以很容易的在身边的电器设备中发现它们的身影,如电视中用于保存频道信息,电脑内存条中保存内存大小等相关信息,汽车里用于保存里程信息等等。图一就是ATMEL24C64芯片的PID封装和用于内存条SPD(Serial Presence Detect)上的24芯片。

atmega16单片机C语言程序

#include //AVR单片机相关库 flash unsigned int t[9] = {0,956,865,759,716,638,568,506,470}; flash unsigned char d[9] = {0,105,116,132,140,157,176,198,209}; #define Max_note 32 flash unsigned char music[Max_note] = {5,2,8,2,5,2,4,2,3,2,2,2,1,4,1,2,1,2,2,2,3,2,3,2,1,2,3,2,4,2,5,8}; unsigned char note_n; unsigned int int_n; bit play_on; // External Interrupt 1 service routine interrupt [EXT_INT1] void ext_int1_isr(void) { if (!play_on) { TCCR1B = 0x09; } } // Timer 1 output compare A interrupt service routine interrupt [TIM1_COMPA] void timer1_compa_isr(void) { if (!play_on) { note_n = 0; int_n = 1; play_on = 1; } else { if (--int_n == 0) { TCCR1B = 0x08; if (note_n Max_note) { OCR1A = t[music[note_n]]; int_n = d[music[note_n]]; note_n++; int_n = int_n * music[note_n]; note_n++; TCCR1B = 0x09; } else play_on = 0; }

EEPROM的应用

导读: 1.EEPROM巧妙应用之单片机章程 2.基于I2C串行通信的EEPROM在电视中的设计应用 3.EEPROM的保护措施在MAXQ环境中 1.EEPROM巧妙应用之单片机章程 引言 全球各单片机生产厂商在MCS-51内核基础上,派生了大量的51内核系列单片机,极大地丰富了MCS-51的种群,致使MCS-51单片机是目前国内应用最广泛的一种单片机型.其中STC公司推出了STC89系列单片机,增加了大量新功能,提高了51的性能,是MCS-51家族中的佼佼者.早期的单片机控制系统,采用单片机加片外EEPROM配合,来存储一些需要预置的重要参数,并在数码管上显示出来.由于单片机控制的整流器要求实时性很强,而早期EEPROM的写周期在10 ms左右,因此运行参数的预置是在整流器待机的情况下进行的.而很多情况下需要在运行的同时记录数据,如用单片机控制的12脉波汽车电泳整流器要求在运行的同时实时记录重要数据,而且在掉电时不丢失.由于在12脉波整流器中运行的单片机程序,其周期必须小于1.67 ms(交流电网的1个周期是20 ms,除以12就是l_67 ms),这就要求实时记录的时间在1ms以下甚至更短(考虑到程序的执行时间).经查阅资料发现,目前很多EEPROM达不到这个要求[1],即使时间最短的AT89S8252单片机片内.EEP-ROM的写周期也是2.5 ms.本文通过对EEPROM的巧妙应用,实现了整流器在线记录数据的功能. 1 寻找符合要求的单片机 设备使用的是Atmel公司的AT89C52(40DIP封装)单片机和EEPROM芯片2817A.要想在不改变原设备电路板的情况下完成要求的功能,就只能在兼容的MCS-51系列单片机中想办法.AT89S8252片内含有2 KB的EEPROM,经编程测试发现,它虽然能实时记录数据并且断电不丢失,但是在向片内EEPROM中记录1个数据时,能引起输出电压和电流的波动,不能满足实际运行的需要.其原因是AT89S8252单片机片内EEPROM的写周期为2.5 ms,超过了1.67 ms的程序的执行周期,从而影响了程序的正常运行.所以执行周期是解决问题的关键. STC89C51RC/RD+系列单片机片内含有EEPROM(Data Flash),读1个字节/编程1个字节/擦除1个扇区(512字节)的时间分别为10/μs/60μs/10 ms.编程1个字节的时间为60μs,远小于AT89S8252片内EEPROM 2.5 ms的编程时间,这为解决问题提供了思路. 2问题的解决 单片机STC89C55RD+(40DIP封装),其引脚、功能完全与AT89C52兼容,与MCS-51程序也兼容,片内含有20KB的Flash程序存储器,16KB的EEPROM数据存储器.把原用于AT89C52中的程序写到STC89C255RD+中,放到原设备上运行,可长期稳定地运行.经修改的在整流器中运行的单片机程序,实时记录一些数据到 STC289C55RD+的EEPROM中,整流器可正常运行,但不能执行扇区擦除操作.执行扇区擦除操作将严重影响整流器的正常运行,引起输出电压和电流的很大波动.执行扇区擦除操作时,从示波器来看整流器的输出间断 了20 ms,电压电流显示很大的波动.用示波器捕捉到了EEPROM写时的波形,输出波形暂停了20 ms,1个周波电压,电压波形如图1所示,不执行扇区擦除操作时的波形如图2所示.从图中可以看出,问题得到了很好的解决.

EEPROM

嵌入式系统中EEPROM文件系统的设计与实现 彭晓锋 北京邮电大学电信工程学院,北京(100876) 摘要:AT24CXX系列EEPROM在嵌入式领域有着广泛的运用。本文参考微机文件系统的原理实现能兼容AT24C08-AT24C1024的简单文件系统,实验结果证明本系统高效可行。关键词:EEPROM, 文件系统,嵌入式 1.引言 随着大量嵌入式设备的出现,在嵌入式系统中用于存储数据的EEPROM因其简单、方便、可靠的性能和低廉的价格而被广为使用。当今社会嵌入式系统无所不在,各种嵌入式设备品种繁多,差别巨大。因此各公司也推出多种不同容量不同型号的EEPROM适应多样的市场应用。人们一方面希望能像管理大容量存储器(如硬盘,FLASH等)中数据一样简单便捷的操作EEPROM中的数据(包括打开、关闭、读写文件等),同时也希望这种文件系统能兼容不同容量、型号,具有较强的通用性。而对于采用两线IIC总线读写方式[1]的EEPROM来说,无法使用类似与FLASH所支持的TFFS之类的文件系统,本文参照上述思想,实现了一种能兼容AT24C08-AT24C1024类似于文件系统的用于管理EEPROM中数据的方法,并在实践项目中得到良好运用。 2.AT24CXX系列EEPROM简介 AT24CXX系列是ATMEL公司生产的串行电可擦的可编程存储器,它采用8引脚封装,具有可掉电记忆,结构紧凑、存储容量大等特点,可以在2线总线上并接多片芯片,适用于具有大容量数据存储要求的嵌入式系统[2]。 ⅰ)封装及管脚说明 AT24C08-AT24C1024的封装如图1所示(对不同型号 A0-A2相应改为NC,详见表1),各引脚的功能如下: ⑴ A0、A1、A2:器件地址(device address)。IIC串行总线 需连接多个EEPROM芯片时,可用A0、A1、A2来区分各芯 片,悬空时为0。 ⑵ SDA:I2C 串行数据。图1. A T24CXX系列EEPROM封装 ⑶ SCL:I2C 串行时钟。一般在其上升沿将SDA上的数据写入存储器,而在下降沿从存储器读出数据并送往SDA。 ⑷ WP:写保护。此引脚接地时,允许写操作;与VCC相连时,所有写操作被禁止。如果不连,该脚将在芯片内部下拉到地。 ⑸ VCC:电源;GND:地;NC:悬空。 ⅱ)与处理器通信 AT24C系列的接口特性:一般A0-A2、WP接VCC或GND,SCL、SDA接处理器的IIC接口相应管脚,即可实现处理器对EEPROM的操作。 ⅲ)设备地址(device address) 对EEPROM读写数据前,需先发一个字节的device address以选择芯片进行读写。其中首部四比特的“1010”为固定值;A0- A2用于对多个EEPROM进行区分,注意对AT24C不同型号,

基于AVR单片机--Atmega16的串口通信使用

基于AVR单片机--Atmega16的串口通信使用 //以下程序经验正可以用,MCU:M16,晶振:8M,直接用USB转串口线上的公头(针头), //第2针(RXD)接M16上的PD1口(15脚TXD),第3针(TXD)接M16上的PD0口(14脚RXD), //第5针接地,此时若板上有MAX232,则需把MAX232芯片去掉,这样才能正常工作 #include #include #define uchar unsigned char #define uint unsigned int #define fosc 8000000//晶振频率 #define BAUD 9600 //波特率 void USART_send(uchar date)//发送一个字节 { while(!(UCSRA&(1<

基于ATmega16单片机的直流电机控制

青岛科技大学 开放实验报告 院校: 专业:电气工程及其自动化 年级:13级1班 实验名称:基于Atmega16.单片机直流电机控制实 验 姓名: 学号: 同组者姓名: 同组者学号: 指导教师:

基于ATmega16单片机的直流电机控制 摘要:随着时代的进步和科技的发展,电机调速系统在工农业生产、交通运输以及日常生活中起着越来越重要的作用,因此,对电机调速的研究有着积极的意义.长期以来,直流电机被广泛应用于调速系统中,而且一直在调速领域占居主导地位,这主要是因为直流电机不仅调速方便,而且在磁场一定的条件下,转速和电枢电压成正比,转矩容易被控制;同时具有良好的起动性能,能较平滑和经济地调节速度。因此采用直流电机调速可以得到良好的动态特性。由于直流电动机具有优良的起、制动性能,宜与在广泛范围内平滑调速。在轧钢机、矿井卷机、挖掘机、金属切削机床、造纸机、高层电梯等领域中得到广泛应用。近年来交流调速系统发展很快,然而直流控制系统毕竟在理论上和在时间上都比较成熟,而且从反馈闭环控制的角度来看,它又是交流系统的基础,长期以来,由于直流调速系统的性能指标优于交流调速系统。因此,直流调速系统一直在调速系统领域内占重要位置。关键字:直流电机调速

Based on ATmega16 single chip microcomputer control of dc motor Abstract:with the progress of era and the development of science and technology, motor speed control system in industrial and agricultural production, transportation and daily life is playing a more and more important role, therefore, the study of motor speed regulation has a positive meaning. For a long time, the dc motor is widely applied to speed regulation system, and has been occupy dominant position in the field of speed adjustment, mainly because the dc motor speed regulation not only convenient, and in certain conditions, the magnetic field is proportional to the speed and the armature voltage, torque is easy to control;Has a good starting performance at the same time, can adjust the speed is relatively smooth and economically.So the dc motor speed control can get good dynamic characteristic.Due to the dc motor has excellent starting and braking performance, appropriate and smooth speed regulation in wide scope.In the rolling mill, mine winder, excavator, metal cutting machine, paper machine, is widely used in high-level elevator, etc.Ac speed regulating system develops very fast in recent years, however, dc control system in theory and in time, after all, are mature, and from the feedback closed-loop control point of view, it is the basis of communication system, for a long time, because of the performance index is better than that of ac speed regulation system of dc speed regulating system.Therefore, dc speed regulation system has been in the field of speed control system. Key words: dc motor speed control

ATMEGA16L

【用途】8位AVR微处理器 ATmega16L单片机是一款高性能、低功耗的8位AVR微处理器,具有先进的RISC结构,内部有大容量的ROM、RAM、Flash和EEPROM,集成4通道PWM,SPI串行外设接口,同时具有8路10位A/D转换器,对于数据采集系统而言,外部无需单独的A/D转换器,从而可节省成本.另外,该单片机提供JTAG调试接口,可采用自制的简易JTAG仿真器进行程序调试。 【产品特性】 类别:集成电路(IC) 家庭:嵌入式微控制器, 核心处理器:A VR 芯体尺寸:8位 速度:8MHz 连通性:I2C,SPI,UART/USART 外围设备:欠压检测/复位,POR,PWM,WDT 输入/输出数:32 程序存储器容量:16KB (16K x 8) 程序存储器类型:FLASH EEPROM 大小:512 x 8 RAM 容量:1K x 8 电压- 电源(Vcc/Vdd):2.7 V ~ 5.5 V 振荡器型:内部 工作温度:-40°C ~ 85°C 封装引脚图

【性能参数】 高性能、低功耗的8 位AVR??微处理器 ?先进的RISC 结构 – 131 条指令–大多数指令执行时间为单个时钟周期 – 32个8 位通用工作寄存器 –全静态工作 –工作于16 M Hz时性能高达16 MIPS –只需两个时钟周期的硬件乘法器 ?非易失性程序和数据存储器 – 16K 字节的系统内可编程Flash 擦写寿命: 10,000 次 –具有独立锁定位的可选Boot 代码区 通过片上Boot 程序实现系统内编程 真正的同时读写操作 – 512 字节的EEPROM 擦写寿命: 100,000 次 – 1K字节的片内SRAM –可以对锁定位进行编程以实现用户程序的加密 ? JTAG 接口( 与IEEE 1149.1 标准兼容) –符合JTAG 标准的边界扫描功能 –支持扩展的片内调试功能 –通过JTAG 接口实现对Flash、EEPROM、熔丝位和锁定位的编程 ?外设特点 –两个具有独立预分频器和比较器功能的8 位定时器/ 计数器 –一个具有预分频器、比较功能和捕捉功能的 16 位定时器/ 计数器 –具有独立振荡器的实时计数器 –四通道PWM – 8路10 位ADC 8 个单端通道 T QFP封装的7 个差分通道 2 个具有可编程增益(1x, 10x, 或200x)的差分通道 –面向字节的两线接口 –两个可编程的串行USART –可工作于主机/ 从机模式的SPI 串行接口 –具有独立片内振荡器的可编程看门狗定时器 –片内模拟比较器 ?特殊的处理器特点 –上电复位以及可编程的掉电检测 –片内经过标定的RC 振荡器 –片内/ 片外中断源 – 6种睡眠模式: 空闲模式、ADC 噪声抑制模式、省电模式、掉电模式、Standby 模式以及

E2PROM的原理以及应用

EEPROM的原理以及应用 一、常用串行EEPROM的简介 1) 引脚描述 SCL:串行时钟 SDA:串行数据 A2~0:设备地址、页地址 WP:写禁止 VCC:电源供电 GND:地 2) 内存管理 以Atmel公司的2线EEPROM为例,从A T24C01~A T24C16,其内存架构分别由16page*8byte、32page*8byte、32page*16byte、64page*16byte、128page*16byte组成。寻址字节需要7~11bit的数据字。AT24C32和A T24C64分别由128page*32byte、256page*32byte组成。系统提供了2个字节的寻址数据字。 3) 器件操作 时钟和数据传输:SDA引脚正常状态下由外部器件拉高。SDA上的数据只有在SCL 为低的时间段才能进行改变,在SCL为高时SDA数据的更改会表现为如下所述的一个开始条件或者一个结束条件。 开始条件:SCL为高,SDA由高变为低是一个开始条件,开始命令优先于其他所有的命令。 结束条件:SCL为高,SDA由低变为高是一个结束条件。在一个读序列之后的结束命令,会将EEPROM置于一个待机电源模式。 响应:所有的地址和数据字都是以8bit字,串行的传入或者传出EEPROM。在第九个时钟周期,EEPROM发出一个0来作为收到一个字的响应信号。 Twr:一个写序列的有效结束条件到一个内部的写周期结束。

注:页写的自加计数是低5位自加,高位不变,以保证在当前页。页写到当前页的最后边界时,会计数到最开始到位置。如果MCU发给EEPROM的数据超过了32个时,会发生卷边,覆盖掉前面的数据。 注:上次读、写操作的地址加1。只要芯片不掉电,就会暂存在芯片中。

ATmega16单片机芯片资料

ATmega16单片机芯片资料 产品特性 ? 高性能、低功耗的8 位AVR? 微处理器? 先进的RISC 结构 – 131 条指令–大多数指令执行时间为单个时钟周期 – 32个8 位通用工作寄存器 –全静态工作 –工作于16 MHz 时性能高达16 MIPS –只需两个时钟周期的硬件乘法器 ? 非易失性程序和数据存储器 – 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 个单端通道 TQFP 封装的7 个差分通道 2 个具有可编程增益(1x, 10x, 或200x)的差分通道 –面向字节的两线接口 –两个可编程的串行USART –可工作于主机/ 从机模式的SPI 串行接口

–具有独立片内振荡器的可编程看门狗定时器 –片内模拟比较器 ? 特殊的处理器特点 –上电复位以及可编程的掉电检测 –片内经过标定的RC 振荡器 –片内/ 片外中断源 – 6种睡眠模式: 空闲模式、ADC 噪声抑制模式、省电模式、掉电模式、Standby 模式以及 扩展的Standby 模式 ? I/O 和封装 – 32 个可编程的I/O 口 – 40引脚PDIP 封装, 44 引脚TQFP 封装, 与44 引脚MLF 封装 ? 工作电压: – ATmega16L:2.7 - 5.5V – ATmega16:4.5 - 5.5V ? 速度等级 – 0 - 8 MHz ATmega16L – 0 - 16 MHz ATmega16 ? ATmega16L 在1 MHz, 3V, 25°C 时的功耗

基于AVR单片机--Atmega16的1602液晶使用

基于AVR单片机--Atmega16的1602液晶使用 本程序使用AVR单片机Atmega16控制1602液晶,并在液晶上显示字符 #include #include #include"1602.h" uchar L[]="qq I Miss You"; void display()//显示函数 { write_com(0x80); show_string(L);//显示字符串 } void init()//初始化函数 { DDRC=0xff;//全部设置为输出 DDRA|=(1<<7)|(1<<6);//设置PA口的第6位(1602的rs控制脚)和第7位(1602的en控制脚)为输出 init_1602();//1602液晶初始化 } int main() { init(); display(); while(1); } //1602液晶显示头文件 #define uint unsigned int #define uchar unsigned char //PA口的第6位(1602的rs控制脚)和第7位(1602的en控制脚) #define lcdrs0 PORTA &= ~(1 << 6)//第6位输出低电平 #define lcdrs1 PORTA |= (1 << 6)//第6位输出高电平 #define lcden0 PORTA &= ~(1 << 7)//第7位输出低电平 #define lcden1 PORTA |= (1 << 7)//第7位输出高电平 void write_com(uchar com)//写命令函数 { lcdrs0; PORTC=com; _delay_ms(5); lcden1; _delay_ms(5); lcden0; }

常用串行eeprom应用

SPI总线 SPI总线(Serial Peripheral Interface串行外围设备接口总线)是三线式的串行总线,是由摩托罗拉公司所研发,使用三线进行数据传输,分别是SCK时钟引脚,SI数据输入引脚和SO数据输出引脚,另外还有CS片选引脚可以对同一总线上的芯片进行选通使用,SPI总线已被广泛使用在EEPROM、单片机和各种设备中。常用串行EEPROM中的25XX系列芯片就是使用兼容SPI总线结构,采用先进COMS技术,体积小,是一种理想的低功耗非易失性存储器,广泛使用在各种家电、通讯、交通或工业设备中,通常是用于保存设备或个人的相关设置数据。ATMEL公司生产的25系列的EEPROM存储容量从1K位到256K位。其它一些芯片也会用到SPI总线,如常用的CPU监控芯片X5043、X5045就带有512字节的SPI界面EEPROM,常用于单片机系统的看门狗电路,同时也可以提供小数据量的存储,给电路设计带来很多的方便。此文将用X5045为例讲述SPI的编程应用和X5045的一些其它功能。X5045由Xicor公司出品,电压范围有2.7V到5.5V和4.5V到5.5V二个版本,擦写次数可达一百万次,最高时钟频率可达3.3MHz。图一是X5045的PID封装实物图。

图二是X5045的引脚定义图。CS/WDI是片选和看门狗复位输入,当CS为高时SO引脚变为高阻态,这时可以允许其它器件共用SPI总线,同时芯片也处于休眠状态,当CS为低时芯片被选中,并从休眠状态中唤醒,可以进行读写操作。SO是串行数据输出,在读芯片时数据从此脚输出。WP是写保护引脚,当WP为低时芯片写保护,不能对芯片写操作,但其它功能不受影响。Vss是电源地。SI是串行数据输入,接收来自控制器的数据和地址。SCK是串行时钟输入,RESET是复位输出,Vcc是电源。在25芯片中还有一个HOLD引脚,此引脚的功能是保持输入脚,ATMEL公司生产25芯片的HOLD引脚是低电平有效。不用此功能时,HOLD引脚要保持高电平。在芯片正在串行传输时,将HOLD拉为低电平,可以暂停进一步的传送,具体方法是SCK变低后,将HOLD也拉低,不然在下一个SCK 变低前不能暂停传送,要恢复串行传送,必须在SCK为低电平时将HOLD拉高。芯片处于暂停时,SI,SO,SCK脚为高阻状态,任何时刻只要HOLD被拉低时,SO都会处于高阻状态。 限于文章的篇幅,下面内容只着重介绍X5045芯片的SPI总线对EEPROM单元的编程应用。在X5040芯片中有6个指令,它和25系列芯片的指令是兼容的,也就是说在25系列芯片中使用时基本上是不需要改变的,具体见表一。

相关文档
最新文档