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

 
 
> Ошибки при записи во внешнюю eeprom, Копирует записанные байты по всей eeprom
Xenom0rph
сообщение Nov 27 2008, 12:40
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 85
Регистрация: 2-10-08
Пользователь №: 40 646



Такая проблема подключена у меня к тини2313 eeprom 24c256, мне требуется писать туда массивы по 50 байт.

Вот так проходит настройка I2С
Код
[/*SETUP PORTB I2C (PB4 - SDA; PB3 - SCL)*/
#asm
   .equ __i2c_port=0x18;PORTB
   .equ __sda_bit=4
   .equ __scl_bit=3
#endasm            

#include <tiny2313.h>
#include <delay.h>
#include <i2c.h>    
#define EEPROM_BUS_ADDRESS 0xa0x


Так пишет
Код
void eeprom_write(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>>8);
i2c_write((unsigned char)address);
i2c_write(data);
i2c_stop();    
SREG=sSREG;
delay_ms(11);
}


Так читает:
Код
unsigned char eeprom_read(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>>8);
i2c_write((unsigned char)address);
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS | 1);
data=i2c_read(0);
i2c_stop();
SREG = sSREG;
#asm("sei")
return data;
}


в цикле я записываю так eeprom_write(n, mass[i])

Так вот, дает он мне записать только 200 байтов, потом происходит непонятно что и он опять начинает писать с первой ячейки затирая всю информацию.
Go to the top of the page
 
+Quote Post



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

 


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


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