Witam.
Mam problem z ta pamiecia. Mecze sie juz dwa dni i nic. Podlaczylem ja na jednej magistrali z PCF8583 (RTC) i ADS1100 (ADC) do uP Atmega 8. Zegar i przetwornik chodza bez problemu. Narazie uzywam programowej obslugi I2C w AVRGCC z biblioteki RKlibAVR...
Pin A0 pamieci mam podlaczony do masy wiec adres pamieci na magistrali to 101000px, x=1(odczyt), x=0(zapis), p to wybor strony(??).
Zrobilem wg. pdf'a Atmela dwie procedurki testowe - do odczytu i zapisu w pamieci...
u08 w_eeprom_dane(void) //ZAPIS
{
I2C_start();
ack=I2C_write(0b10100000); //adres pamieci na magistrali P0=0!!! WRITE
ack=I2C_write(0b00000000); //H adres
ack=I2C_write(0b00000000); //L adres
ack=I2C_write(13); //przykladowy bajt danych
delayms(10);
I2C_stop();
return ack;
void r_eeprom(void) //ODCZYT
{
I2C_start();
ack=I2C_write(0b10100000); //adres pamieci na magistrali P0=0!!! WRITE
ack=I2C_write(0b00000000); //H adres
ack=I2C_write(0b00000000); //L adres
I2C_start();
ack=I2C_write(0b10100001); //adres pamieci na magistrali P0=0!!! READ
zmienna=I2C_read(1); //czyta
I2C_stop();
}
Kto mi powie gdzie robie blad i jak to jest z tym adresowaniem pamieci? Pamiec ta ma 512 stron po 256B kazda - jakie sa adresy kolejnych stron?
Mam problem z ta pamiecia. Mecze sie juz dwa dni i nic. Podlaczylem ja na jednej magistrali z PCF8583 (RTC) i ADS1100 (ADC) do uP Atmega 8. Zegar i przetwornik chodza bez problemu. Narazie uzywam programowej obslugi I2C w AVRGCC z biblioteki RKlibAVR...
Pin A0 pamieci mam podlaczony do masy wiec adres pamieci na magistrali to 101000px, x=1(odczyt), x=0(zapis), p to wybor strony(??).
Zrobilem wg. pdf'a Atmela dwie procedurki testowe - do odczytu i zapisu w pamieci...
u08 w_eeprom_dane(void) //ZAPIS
{
I2C_start();
ack=I2C_write(0b10100000); //adres pamieci na magistrali P0=0!!! WRITE
ack=I2C_write(0b00000000); //H adres
ack=I2C_write(0b00000000); //L adres
ack=I2C_write(13); //przykladowy bajt danych
delayms(10);
I2C_stop();
return ack;
void r_eeprom(void) //ODCZYT
{
I2C_start();
ack=I2C_write(0b10100000); //adres pamieci na magistrali P0=0!!! WRITE
ack=I2C_write(0b00000000); //H adres
ack=I2C_write(0b00000000); //L adres
I2C_start();
ack=I2C_write(0b10100001); //adres pamieci na magistrali P0=0!!! READ
zmienna=I2C_read(1); //czyta
I2C_stop();
}
Kto mi powie gdzie robie blad i jak to jest z tym adresowaniem pamieci? Pamiec ta ma 512 stron po 256B kazda - jakie sa adresy kolejnych stron?