реклама на сайте
подробности

 
 
> Есть потребность в использование 24с256, Порылся по форуму нашол следующее
TamTam
сообщение Jun 4 2006, 22:39
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 293
Регистрация: 14-03-06
Пользователь №: 15 254



Код
void write_byte_eeprom (unsigned int address, unsigned char data)
{
unsigned char sSREG;

sSREG = SREG; // регистр Статуса МК
#asm ("cli")
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write((unsigned char)address>>7);
i2c_write((unsigned char)address);
i2c_write(data);
i2c_stop();
SREG = sSREG;
delay_ms(11);

}



unsigned char read_byte_eeprom (unsigned int address)
{
unsigned char data;
unsigned char sSREG;

sSREG = SREG;
#asm ("cli")
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write((unsigned char)address>>7);
i2c_write((unsigned char)address);
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS | 1);
data = i2c_read(0);
i2c_stop();
SREG = sSREG;
return data;
}


но твориться какаято ерунда, то пише то непишет, траблы с клдом этих процедур, или я что то не так делаю.

для пробы делаю так

[code]
while (1)
{
int i;
for (i=0;i<1000;i++)
{
write_byte_eeprom (i,0x88) ;
delay_ms(80);
};
};
[code]
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
TamTam
сообщение Jun 5 2006, 01:03
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 293
Регистрация: 14-03-06
Пользователь №: 15 254



Цитата(kertis @ Jun 5 2006, 03:22) *
Если вы не побрезгуете - пример для CVAVR at24c256 из запрещенного курса по AVR в прицепе.


Но советую вам использовать SPI память типа at45db161 - это 2 Мб за туже цену! как её использовать - в задаче 7 запрещенного курса и в АпНоуте AVR335 (но там с 1 ошибкой - я атмелам писал но они не реагируют).



Начну по порядку
1. я не побрезговал :-)))
2. Копирую у вас из сурца 2 процедуры чтения и записи байта
3. заменяю свои и пипец. вообще нечего никуда не пишет. ниже отличия наших процедур

Код
//ваша
i2c_write(EEPROM_BUS_ADDRESS | ((unsigned char)(address>>8)<<1));
i2c_write((unsigned char)address);

// с форума
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write((unsigned char)address>>7);
i2c_write((unsigned char)address);


4. опять эксперимены, читаю ваш сурц(возможно невнимательно) + скопировал процедуру записи страницы

делаю так

Код
  int i;
   long int adr=0x0001;
   write_page_eeprom (10);
   for (i=0;i<1000;i++)  
      {  
         adr=adr+0x0001;
         write_byte_eeprom (adr,0x54);
         delay_ms(80);      
      };


Протеус вообще начинает говоритьб что мол нет дивайса с таким адресом есть только с адресом 0

потом так

Код
  int i;
   long int adr=0x0001;
///   write_page_eeprom (10);
   for (i=0;i<1000;i++)  
      {  
         adr=adr+0x0001;
         write_byte_eeprom (adr,0x54);
         delay_ms(80);      
      };


и опять тишина.

в чемже засада ????

5. Компилирую ваш проджект в протеусе ставлю 8535 соединяю ноги с 24с256 о и опять не пашет.


Что-же делать ????
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 21:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.03565 секунд с 7
ELECTRONIX ©2004-2016