Например TDA7294

Форум РадиоКот • Просмотр темы - Ищу проекты c EEPROM at24cXX
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб дек 20, 2025 16:53:12

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 58 ]  1, ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Ищу проекты c EEPROM at24cXX
СообщениеДобавлено: Вт окт 07, 2008 20:10:23 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт ноя 01, 2007 12:42:39
Сообщений: 114
Откуда: Москоу
Рейтинг сообщения: 0
Уважаемые товарищи,коты и не только...

Хочу поиздеваться над EEPROMинами,точнее 24c16 + AtMega8 СVAvr.
Будьте добры,дайте ссылочки на примеры, исходники, проекты, где применяются микросхемы типа 24Схх и исходники на Си.
Вобщем выкладывайте что у кого есть по данной теме)


ЗАРЕННЕЕ СПАСИБО.

_________________
С уважением,
Radio_Master.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт окт 07, 2008 21:31:13 
Потрогал лапой паяльник

Зарегистрирован: Пт фев 08, 2008 13:46:03
Сообщений: 327
Откуда: Воронеж
Рейтинг сообщения: 0
здесь посмотри:

http://piclist.ru/D-MC-24LC512-RUS/D-MC ... 2-RUS.html


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт окт 07, 2008 23:46:12 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Вс мар 04, 2007 13:14:25
Сообщений: 375
Откуда: Украина
Рейтинг сообщения: 0
Есть собственная либа, набросаная на скорую руку, строго не судить за граматические ошибки в коментариях.


Вложения:
24c02.h [2.67 KiB]
Скачиваний: 2310

_________________
Изображение
Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср окт 08, 2008 11:36:28 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт ноя 01, 2007 12:42:39
Сообщений: 114
Откуда: Москоу
Рейтинг сообщения: 0
Krik99 писал(а):
Есть собственная либа, набросаная на скорую руку, строго не судить за граматические ошибки в коментариях.


Что качается ошибок то мы сами такие ;).
Есть пиру вопросов по хидеру.Нужно ли что нибудь изменять что бы он работал с 24c16?я так понимаю вы эту библиотеку писали сами, а значит для какой то цели,не могли ли вы дать исходник программы,которая вписывает какие-нибудь данные,а потом их считывает?Очень благодарен за хидер :)) .



pirotehnick писал(а):

Вам тоже огромное спасибо,очень не хватало даташита на русском,но мне хотеллось бы побольше примеров именно 24сXX+AVR,где есть исходники.СПС.


Ну-с,ждем исходников 8)

_________________
С уважением,
Radio_Master.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср окт 08, 2008 17:06:41 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Чт мар 20, 2008 20:33:43
Сообщений: 173
Рейтинг сообщения: 0
Делал ресетер для лазерных картриджей Samsung, Xerox. В них стоит 24С04. МК Tiny13. Функции стирания - чтения стандартные. Первоначально я нужные ячейки сирал прописав в них FF но позже стал не умещаться в размер памяти МК и закомментировал эту операцию.


Вложения:
I2C.rar [104.19 KiB]
Скачиваний: 1324
Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср окт 08, 2008 18:33:19 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Вс мар 04, 2007 13:14:25
Сообщений: 375
Откуда: Украина
Рейтинг сообщения: 0
Ну в моей либе всё елементарно, для начала при инициализацие железа МК инициализируем и шину i2c вот так:
Код:
i2c_init();

Вот так пишем данные в eeprom:
Код:
eeprom_write(0х01,0xEF)       //записать значение 0хEF в ячейку 0x01

Читается вот так:
Код:
data=eeprom_read(0x01);      //прочитать значение ячейки 0x01 и сохранить в переменную data

Ну вроде всё.

_________________
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср окт 08, 2008 18:45:25 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Чт мар 20, 2008 20:33:43
Сообщений: 173
Рейтинг сообщения: 0
У меня тоже самое


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт окт 09, 2008 19:45:26 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт ноя 01, 2007 12:42:39
Сообщений: 114
Откуда: Москоу
Рейтинг сообщения: 0
Krik99 писал(а):
Ну в моей либе всё елементарно, для начала при инициализацие железа МК инициализируем и шину i2c вот так:
Код:
i2c_init();

Вот так пишем данные в eeprom:
Код:
eeprom_write(0х01,0xEF)       //записать значение 0хEF в ячейку 0x01

Читается вот так:
Код:
data=eeprom_read(0x01);      //прочитать значение ячейки 0x01 и сохранить в переменную data

Ну вроде всё.


Не чего себе,я думал все намного сложнее,всем спасибо. Буду ковыряться.

_________________
С уважением,
Radio_Master.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт окт 10, 2008 16:36:39 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт ноя 01, 2007 12:42:39
Сообщений: 114
Откуда: Москоу
Рейтинг сообщения: 0
Krik99,
А как же выбрать ЕЕПРОМину исли их несколько "висит" на линии?
Чего то я не пойму:
data=eeprom_read(0x01); // Получается что мы максимум(при ячейки 0хFF) можем считать значение 256-го байта,но в 24с16 их аж 16Кб*1024=16384байт,как же быть дальше,как считать например значение 16370-ого байта?Или я в чемто сильно заблуждаюсь? Можно ли сделать так:
data=eeprom_read(16370);//?

_________________
С уважением,
Radio_Master.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт окт 10, 2008 20:17:59 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Вс мар 04, 2007 13:14:25
Сообщений: 375
Откуда: Украина
Рейтинг сообщения: 0
Цитата:
Можно ли сделать так:
data=eeprom_read(16370);//?


Нет так как переменная типа unsigned char. У неё значения от 0 до 255 (от 0х00 до 0хFF). С большими eeprom непробовал работать , но думаю достаточно будет поменять тип переменной. :wink:

_________________
Изображение


Последний раз редактировалось Krik99 Пт окт 10, 2008 20:20:33, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт окт 10, 2008 20:19:45 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт ноя 01, 2007 12:42:39
Сообщений: 114
Откуда: Москоу
Рейтинг сообщения: 0
точно,А как же тогда?

_________________
С уважением,
Radio_Master.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт окт 10, 2008 20:22:49 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт ноя 01, 2007 12:42:39
Сообщений: 114
Откуда: Москоу
Рейтинг сообщения: 0
RANDOM READ: A random read requires a “dummy” byte
write sequence to load in the data word address. Once the
device address word and data word address are clocked in
and acknowledged by the EEPROM, the microcontroller
must generate another start condition. The microcontroller
now initiates a current address read by sending a device
address with the read/write select bit high. The EEPROM
acknowledges the device address and serially clocks out the data word. The microcontroller does not respond with a
zero but does generate a following stop condition (refer to
Figure 5).
Вот это в даташите написано,я бы написал по русски но в английском не силен,простите)
Это значит что адрес состоит из 16 бит!?

_________________
С уважением,
Radio_Master.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт окт 10, 2008 23:06:47 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 4
Рейтинг сообщений: 26
Зарегистрирован: Ср сен 17, 2008 14:32:15
Сообщений: 2106
Откуда: Старые Васюки
Рейтинг сообщения: 0
Radio_Master писал(а):
А как же выбрать ЕЕПРОМину исли их несколько "висит" на линии?

Как ни странно, для этого предназначены адресные выводы. Соответственно на линии может висеть максимум 8 епромин.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт окт 10, 2008 23:52:13 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18446
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Radio_Master писал(а):
точно,А как же тогда?
да как - или делать ручками свою библиотеку, или искать нормальную стороннюю...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб окт 11, 2008 12:05:53 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Вс мар 04, 2007 13:14:25
Сообщений: 375
Откуда: Украина
Рейтинг сообщения: 0
Почитай даташит на 24c02 и почитай даташит на 24c16 и сравни команды и как посылаются адреса...

_________________
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб окт 11, 2008 19:56:20 
Встал на лапы

Карма: 2
Рейтинг сообщений: -1
Зарегистрирован: Вт дек 05, 2006 23:17:02
Сообщений: 101
Откуда: Краснодарский край
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Вот тебе исходник для 24с64. В нем используется несколько банков. все заполняются. Исходник подробно откомментировал.
А вообще все делал по даташиту в нем _на_удивление_понятно_написано.

// Заполнение 0x1F банков 24c64 символами с 0x00 до 0xff
for(ExtEEAdr=0;ExtEEAdr<256;ExtEEAdr++)
{
for(Bank=0;Bank<=0x1F;Bank++)
{
i2c_start();
i2c_write(0b10100000); // Выбор устройства EEProm
i2c_write(Bank); // Выбор банка в устройстве
i2c_write(ExtEEAdr); // Выбор адреса для работы в банке
i2c_write(ExtEEAdr); // Запись байте ExtEEAdr в выбранный банк, по указанному адресу
i2c_stop();
delay_ms(10);
}
}

Delay по даташиту ОБЯЗАТЕЛЬНА !!!
Если несколько устройств, то в строке "i2c_write(0b10100000);" изменить адрес. В исходнике для нулевого устройства. Для первого устройства соответсвенно все выглядит так: "i2c_write(0b10100001);"
Вся память 24cXX одинакова (совместима) по командам, разница только в количестве банков.
Дальше, надеюсь, все понятно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 13, 2008 16:28:57 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт ноя 01, 2007 12:42:39
Сообщений: 114
Откуда: Москоу
Рейтинг сообщения: 0
[b]i2c_write(ExtEEAdr); // Выбор адреса для работы в банке[/b]

Не очень понятна эта строчка,не могли бы вы объяснить что она значит и для чего?Банк он же байт я так понимаю?

_________________
С уважением,
Radio_Master.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт окт 14, 2008 07:59:24 
Встал на лапы

Карма: 2
Рейтинг сообщений: -1
Зарегистрирован: Вт дек 05, 2006 23:17:02
Сообщений: 101
Откуда: Краснодарский край
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Для записи в некоторую ячейку памяти 24сХХ в ее адресном пространстве необходимо указать адрес и банк (страницу), куда производится запись. Это как строка-стобец в таблице excel.
В даташите небходимо уточнить, сколько банков имеется имеется в выбранной тобой для работы памяти и размер страницы в банке.
Например, если мне не изменяет память, в 24с04 находится 16 банков по 256 байт. поэтому для записи в 259-й байт (ячейку), надо выбрать первый банк, 2-й адрес.
На вложенной картинке посмотри, как организована эта память. Еще лучше прочитать даташит целиком. Затем попробовать в железе, а потом задавать конкретные вопросы, что не понятно.


Вложения:
24cXX.jpg [25.72 KiB]
Скачиваний: 2086
Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср окт 22, 2008 03:34:18 
Первый раз сказал Мяу!

Зарегистрирован: Вт окт 14, 2008 03:13:45
Сообщений: 25
Откуда: Донецк
Рейтинг сообщения: 0
Radio_Master от Пт Окт 10, 2008 15:36:39
Цитата:
...но в 24с16 их аж 16Кб*1024=16384байт...

Во первых пожалуйста поаккуратней с арифматикой. 16Кб*1024=16384Kбайт = 16Mb !!!.
Во вотрых в 24с16 не 16Kb, а 16Кбит, те всего 2Kb.

Radio_Master от Пт Окт 10, 2008 19:22:49
Цитата:
RANDOM READ: A random read requires ...

ПРОИЗВОЛЬНОЕ ЧТЕНИЕ: Произвольное чтение требует посылки фиктивной команды записи для загрузки адреса байта данных. После того, как адрес устройства и адрес байта данных переданы в микросхему и подтверждены EEPROM, микроконтроллер должен сгенерировать новое START условие. Затем микроконтроллер инициирует чтение байта по указанному адресу, посылкой адреса устройства с битом чтения/записи установленным в лог.1. EEPROM подтверждает адрес устройства и последовательно выдает считываемый байт данных. Микроконтроллер не отвечает нулем, и генерирует STOP условие (см. рис.5).
Цитата:
Это значит что адрес состоит из 16 бит!?

Это значит, что адрес состоит из:
7-ми бит для 24c01 (1024 бит == 127 байт) - однобайтный адрес;
8-ми бит для 24c02 (2048 бит == 256 байт) - однобайтный адрес;
9-ти бит для 24c04 (4096 бит == 512 байт) - однобайтный адрес;
10-ти бит для 24c08 (8192 бит == 1024 байт) - однобайтный адрес;
11-ти бит для 24c16 (16384 бит == 2048 байт) - однобайтный адрес;
12-ти бит для 24c32 (32768 бит == 4096 байт) - двухбайтный адрес;
................
16-ти бит для 24c512 (524288 бит == 65536 байт) - двухбайтный адрес

24c04..24c16 обходятся однобайтным адресом только за счет того, что старшие 1..3 бита адреса ячейки передаются внутри адреса устройства (поля P0..P2 см. Figure 1 в дш) усекая возможность адресации нескольких микросхем на одной шине. Именно поэтому можно подключать к одной шине до 8-ми корпусов 24c01 или 24c02; до 4-х 24c04; до 2-х 24c08 и только одну 24c16!
Для доступа к произвольной ячейке 24c32 и выше естественно требуется передавать уже 2 байта адреса.
И ни какие банки тут не при чем!
To diehard
Цитата:
i2c_write(Bank); // Выбор банка в устройстве
i2c_write(ExtEEAdr); // Выбор адреса для работы в банке

Первая команда - передача старшего байта адреса ячейки, а вторая - младшего и ничего более.
А 24cXX.jpg к EEPROM 24cXX не имеет ни какого отношения, т.к. ни какой Protection Bit Memory Area там нет, да и страницы по 32 байта противоречат даже Вашему коду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср окт 22, 2008 09:06:13 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 4
Рейтинг сообщений: 26
Зарегистрирован: Ср сен 17, 2008 14:32:15
Сообщений: 2106
Откуда: Старые Васюки
Рейтинг сообщения: 0
AlexBoss писал(а):
в 24с16 не 16Kb, а 16Кбит, те всего 2Kb.

Вот как раз для того, чтобы так не путаться, и были придуманы обозначения: кб (kb) = кбит, кБ (kB) = кбайт. Так что ёмкость 24с16 именно 16 kb, или 2 kB :lol:


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 58 ]  1, ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y