۰۳-بهمن-۱۳۸۳, ۲۲:۰۴:۴۶
من ديگه GPM شدم به داد برسيد
يه Atmega128 دارم با يه AT24c64 كه EEPROM سريال و از پروتكل 2Wire Serial استفاده مي كنه اولا اين همون I2C يانه؟(اخه Code Vision مي گه نيگا)
Example how to access an Atmel 24C02 256 byte I2C EEPROM:
و در ثاني من همون كد هاي Example خودشو نوشتم يه بار صفر مي خونه يه بار 255 بازم كدها رو نيگا
آقا بهزاد چي كار كنم ؟ و بقيه هر كي كار كرده.(ديوونه مي شم ميرم پي كارما .منو فكر كردم هنوز عقلم سر جاشه)
يه Atmega128 دارم با يه AT24c64 كه EEPROM سريال و از پروتكل 2Wire Serial استفاده مي كنه اولا اين همون I2C يانه؟(اخه Code Vision مي گه نيگا)
Example how to access an Atmel 24C02 256 byte I2C EEPROM:
و در ثاني من همون كد هاي Example خودشو نوشتم يه بار صفر مي خونه يه بار 255 بازم كدها رو نيگا
کد:
/* the I2C bus is connected to PORTB */
/* the SDA signal is bit 3 */
/* the SCL signal is bit 4 */
#asm
.equ __i2c_port=0x18
.equ __sda_bit=3
.equ __scl_bit=4
#endasm
/* now you can include the I2C Functions */
#include <i2c.h>
/* function declaration for delay_ms */
#include <delay.h>
#define EEPROM_BUS_ADDRESS 0xa0
/* read a byte from the EEPROM */
unsigned char eeprom_read(unsigned char address) {
unsigned char data;
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(0);
i2c_write(address);
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS | 1);
data=i2c_read(0);
i2c_stop();
return data;
}
/* write a byte to the EEPROM */
void eeprom_write(unsigned char address, unsigned char data) {
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(0);
i2c_write(address);
i2c_write(data);
i2c_stop();
/* 10ms delay to complete the write operation */
delay_ms(10);
}
void main(void) {
unsigned char i;
/* initialize the I2C bus */
i2c_init();
/* write the byte 55h at address AAh */
eeprom_write(0xaa,0x55);
/* read the byte from address AAh */
i=eeprom_read(0xaa);
while (1); /* loop forever */
}