at90: Все сообщения за 13 Декабря 2005 года

 
ПнВтСрЧтПтСбВс
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

at90

новичок
Тут у меня небольшая проблемка: Прилепил к меге 16 память 24с256.
Но чё-то не заработало. Использовал программный i2c из кодэвижена.
Раньше работал с ds1307. Всё нормально.
Процедуры работы с памятью от termostat из примера 8535 и 24с256.
Памяти много перепробовал. Программатором читаются.


#asm
.equ __i2c_port=0x1b ;PORTA
.equ __scl_bit=0 ;
.equ __sda_bit=1 ;
#endasm

#define EEPROM_BUS_ADDRESS 0xa0(ноги на минус)
void write_byte_eeprom (unsigned int address, unsigned char data)
{
unsigned char sSREG;

sSREG = SREG; // ?aaeno? Noaoona IE

#asm ("cli")
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS | ((unsigned char)(address>>8)<<1));
i2c_write((unsigned char)address);
i2c_write(data);
i2c_stop();

SREG = sSREG;
delay_ms(10);

}


//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

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 | ((unsigned char)(address>>8)<<1));
i2c_write((unsigned char)address);
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS | ((unsigned char)(address>>8)<<1) | 1);
data = i2c_read(0);
i2c_stop();
SREG = sSREG;
return data;

}

 

в начало страницы | новое
 
Поиск
Поддержка
Поддержи форум!
ЯндексЯндекс. ДеньгиХочу такую же кнопку
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru