/*************************************************** AVR TWI 读写读写范例 ******* ******* 作者: HJJourAVR ******* 编译器:WINAVR20050214 ******* ******* www.OurAVR.com 2005.10.18 **************************************************//*本程序简单的示范了如何使用 ATMEGA16 的 TWI 读写 AT24C02 IIC EEPROM TWI 协议 (即 IIC 协议,请认真参考 IIC 协议的内容,否则根本就不能掌握) 一主多从的应用,M16 作主机 (M16 做从机和多主多从的应用不多,请自行参考相关文档)中断模式 (因为 AVR 的速度很高,而 IIC 的速度相对较低, 采用查询模式会长时间独占 CPU,令 CPU 的利用率明显下降。 特别是 IIC 速度受环境影响只能低速通讯时,对系统的实时性产生严重的影响。 查询模式可以参考其它文档和软件模拟 IIC 的文档) AT24C02/04/08 的操作特点 出于简化程序考虑,各种数据没有对外输出,学习时建议使用 JTAG ICE 硬件仿真器*//**********************ATEEPROM 读写过程*********************************字节写:Start→器件地址&W→应答→选 ROM 地址→应答→写数据→应答→Stop中断过程START→MT_SLA_ACK→MT_DATA_ACK(地址)→MT_DATA_ACK(数据)(STOP 中止)页面写:Start→器件地址&W→应答→选 ROM 地址→应答→写数据→应答→写 NEXT 地址数据→应答→。。。写 NEXT 地址数据→应答→Stop中断过程START→MT_SLA_ACK→MT_DATA_ACK ( 地 址 ) → MT_DATA_ACK ( 数 据 )→MT_DATA_ACK(数据)→。。。MT_DATA_ACK(数据)(STOP 中止) 字节读:Start→器件地址&W→应答→选 ROM 地址→应答→Restart→器件地址&R→应答→读数据→无应答→Stop中断过程START→MT_SLA_ACK→MT_DATA_ACK(地址)→RE_START→MR_SLA_ACK→MR_DATA_NOACK(STOP 中止)页面读:Start→器件地址&W→应答→选 ROM 地址→应答→Restart→器件地址&R→应答→读数据→应答→读 NEXT 地址数据→应答→。。。读 NEXT 地址数据→无应答→Stop中断过程START→MT_SLA_ACK→MT_DATA_ACK(地址)→ RE_START→MR_SLA_ACK→MR_DATA_ACK→MR_DATA_ACK→ 。 。 。 MR_DATA_NOACK ( STOP 中止)*************************************************************************/#include
#include #include #include