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

 
 
> I2C память., Не могу работать с 24с256.
at90
сообщение Dec 12 2005, 08:57
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 866
Регистрация: 31-03-05
Из: Краснодар
Пользователь №: 3 814



Прилепил к меге 24с256. Адресные ноги подтянуты к земле.
Но попытки чтения и записи в память не увенчались успехом.
Пишу в КодеВижен. Доэтого работал с ds1307. Работает нормально.

Использую встроенный в компилятор I2C.
#define EEPROM_BUS_ADDRESS 0xA0

bit i2c_error;

unsigned char at24c08_read(unsigned int address)
{
unsigned char data;
unsigned char temp_i;
temp_i = SREG.7;
#asm("cli")

i2c_error=0;
data = ((unsigned char)(address>>7))&0x0e;
if (!(i2c_start()&&
i2c_write(EEPROM_BUS_ADDRESS | data)&&
i2c_write((unsigned char)(address))&&
i2c_start()&&
i2c_write(EEPROM_BUS_ADDRESS | data | 1)))
{ i2c_error=1; }
else data=i2c_read(0);
i2c_stop();

SREG.7 = temp_i;
return data;
}



void at24c08_write(unsigned int address, unsigned char data)
{
unsigned char temp_i;
temp_i = SREG.7;
#asm("cli")
i2c_error=0;

if (!(i2c_start()&&
i2c_write(EEPROM_BUS_ADDRESS | (((unsigned char)(address>>7))&0x0e))&&
i2c_write((unsigned char)(address))&&
i2c_write(data))) { i2c_error=1; }
i2c_stop();

delay_ms(10);
SREG.7 = temp_i;
}


--------------------
<<Первая производная от чужой идеи - уже твоя идея.>>
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
haker_fox
сообщение Dec 14 2005, 00:45
Сообщение #2


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата
Единственный вариант проверять TWSR на отсутствие АСК и врубать сторожевого таймера на сброс.
Но тогда вопрос ,сохраняються ли значения регистров и оперативки при таком сбросе?
Чтобы программа могла успешно продолжать передачу а не циклиться на одном и том же.
Да и такие маневры программы меня не очень радуют.

Я тоже думаю, что это не нужно... полная кривизна программы получится wink.gif

Цитата
Пишу на графическом асме,его здесь не нарисовать,хотя код в пол мизинца,опишу.

Здесь без использования прерывания по TWI

#H02->TWBR // Устанавливаем SCL 100000Гц
#H02->TWSR //
#HA4->TWCR // Включение и старт TWI
<TWINT=0> // Ждем пока TWINT=0 если TWINT= 1 идем дальше
#H40->TWDR // Записываем адресс устройства (40 HEX) в TWDR
#H84->TWCR // Отправляем адресс устройства
<TWINT=0> // Ждем пока TWINT=0 если TWINT= 1 идем дальше
#HFF->TWDR // Записываем данные для передачи (FF HEX) в TWDR
#H84->TWCR // Отправляем данные
<TWINT=0> // Ждем пока TWINT=0 если TWINT= 1 идем дальше
#H94->TWCR // Стоп

Все,если прога по второму кругу идет ,в ответ тишина.

Тяжело мне это все понять (мой комп на работе в ремонте, а там все даташиты и исходники, так что не могу сверится с документацией sad.gif )
Единственное как вариант, могу посоветовать поискать ниже по форуму ветки по TWI... их было около 2-3... там я выкладывал рабочие, прокомментированные исходники на Си. Правда в текстах отсутствует проверка на ошибки шины. Если Вы не знаете Си, то все равно там все должно быть понятно, код очень простой.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Igor26
сообщение Dec 14 2005, 07:05
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



Тяжело мне это все понять (мой комп на работе в ремонте, а там все даташиты и исходники, так что не могу сверится с документацией sad.gif )
Единственное как вариант, могу посоветовать поискать ниже по форуму ветки по TWI... их было около 2-3... там я выкладывал рабочие, прокомментированные исходники на Си. Правда в текстах отсутствует проверка на ошибки шины. Если Вы не знаете Си, то все равно там все должно быть понятно, код очень простой.
[/quote]
И, проверенно, полностью рабочий a14.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- at90   I2C память.   Dec 12 2005, 08:57
- - m16   посмотри апноту   Dec 12 2005, 09:42
- - at90   У меня I2C программный. Ножки Twi заняты. Плата уж...   Dec 12 2005, 10:33
- - at90   Никто не поделится рабочим примерчиком работы с ee...   Dec 12 2005, 10:54
- - Rash   Цитата(at90 @ Dec 12 2005, 14:33) У меня ...   Dec 12 2005, 11:21
- - proba   organizatsija pamjaati u 2408 i 24256 raznoe, 256 ...   Dec 12 2005, 11:58
- - at90   Аппаратный TWI глюченный. Мне бысто и не нада. Хва...   Dec 12 2005, 12:27
|- - m16   Цитата(at90 @ Dec 12 2005, 15:27) Аппарат...   Dec 12 2005, 12:37
- - bodja74   Пардон ,что не в тему,не хотелось создавать отдель...   Dec 12 2005, 22:29
- - haker_fox   ЦитатаПрограммка простенькая,проверяет только флаг...   Dec 13 2005, 00:17
- - at90   Цитата(proba @ Dec 12 2005, 14:58) organi...   Dec 13 2005, 07:20
- - bodja74   ***А после уловия "СТОП" флаг TWINT случ...   Dec 13 2005, 18:23
- - at90   Заработало так. Как в даташите? Код#define EEPRO...   Dec 14 2005, 11:03
- - bodja74   Ужасно извиняюсь ,что беспокоил по своей проблеме....   Dec 14 2005, 17:44
- - haker_fox   ЦитатаУжасно извиняюсь ,что беспокоил по своей про...   Dec 15 2005, 00:54
- - bodja74   То: Haker_fox Ничего толкового не могу сказать по...   Dec 15 2005, 21:10
- - haker_fox   ЦитатаНичего толкового не могу сказать по Си ,так ...   Dec 16 2005, 00:23
- - bodja74   To: haker_fox Полностью согласен с Вами. Самое о...   Dec 16 2005, 11:26
- - Георгий   К сожалению для меня интеллект компилятора пока в...   Dec 19 2005, 06:09


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

 


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


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