Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
03.01.2005, 23:46
|
|
Pavel645499
Гость
|
Подскажите, как считать несколько байтов из 24lc64 в pic???
Плохо понимаю принцип работы интерфейса i2c, но очень нужно сделать на пик16ф84 считыватель, который будет (при подключении микросхемы памяти) читать первые несколько байт и выдавать значения на индикатор. Загвоздка в том, что не пойму, как из этой микрухи считывать нужные данные??? Может у кого есть исходник какой либо программы для этого контороллёра, посмотреть, как там организован процесс обмена...???
|
|
|
|
04.01.2005, 13:10
|
|
Прописка
Регистрация: 27.08.2004
Сообщений: 107
Сказал спасибо: 0
Сказали Спасибо 20 раз(а) в 20 сообщении(ях)
|
шина I2C работает по принципу Master/Slave. Архитектура известная, много шин по этому принципу работает. Твоя память работает всегда в режиме Slave, что означает, что она ждет команды на чтение или запись и выполняет ее.
Каждый девайс, подключенный к шине имеет свой адрес. Этот адрес задается железом - на 0 или 1 соответствующие ноги схемы.
А дальше мк отправляет команду на чтение или запись устройства с каким-то адресом и если устройство с указанным адресом выполняет команду.
Завтра с работу притащу примерчик, не забыть бы тока.
|
|
|
|
04.01.2005, 14:11
|
|
pavel645499
Гость
|
это я уже усвоил, микруха памяти у меня одна. 1234 ноги-на массе, сигнал старт то я пошлю, а вот что нужно дальше делать-не пойму, как "объяснить микрухе, адрес какой ячейки хочу считать, и как он будет передаватья- не пойму. Какой либо примерчик бы очень помог! Также не знаю, какой длительности должны быть сигналы. устав искать в инете, пошел в библиотеку - видел в 2001 году, в журнале радио было описание...
|
|
|
|
04.01.2005, 21:13
|
|
/Elon/
Гость
|
(+)
По указанному ниже адресу специально для Вас выложили
2 файла (английский и русский)описание и исходники по I2C
www.elon.nm.ru/i2c.zip
|
|
|
|
05.01.2005, 03:28
|
|
Pavel645499
Гость
|
Re: (+)
Ссылка-то битая. not found!
|
|
|
|
05.01.2005, 10:17
|
|
Администратор
Регистрация: 10.05.2003
Сообщений: 1,739
Сказал спасибо: 497
Сказали Спасибо 2,686 раз(а) в 595 сообщении(ях)
|
ни фига. вот что пишет:
Вы обратились к файлу расположенному на сервере "Новая Почта"
You are requesting file from "Newmail.ru"
Для сохранения файла нажмите на ссылку: http://www.elon.nm.ru/i2c.zip
Follow this link to save the file: http://www.elon.nm.ru/i2c.zip
|
|
|
|
05.01.2005, 21:41
|
|
Прописка
Регистрация: 27.08.2004
Сообщений: 107
Сказал спасибо: 0
Сказали Спасибо 20 раз(а) в 20 сообщении(ях)
|
вобщем у меня была память 24сХХ (не помню какая).
принцип следующий - отсылается стартовое условие,
потом адрес чипа в виде 1010AAAW
где 1010 - обязательный префикс, ААА - адрес чипа, W - команда на чтение (1) или запись (0)
потом адрес памяти у меня один байт был, в Вашем случае - 2 байта формата : ХХХААААА + АААААААА - первый старший байт, первые 3 бита неинформативные.
следующий байт при записи - байт данных.
стоповое условие
при чтении все то же самое, только без байта данных.
примерчик на С:
Код:
|
//************************************************** ****************************
//запись данных
//************************************************** ****************************
void write_data()
{
//стартовое условие
i2c_start();
//обратиться к чипу с адресом 000 с командой записи
//0xa0 = 1010(prefix)000(A2A1A0)0(запись)
ack=i2c_write(0xa0);
//передать адрес ячейки памяти
ack=i2c_write(address);
//передать данные
ack=i2c_write(data);
//стоповое условие
i2c_stop();
//вывести на порт D Acknoledge (не обязательно)
output_d(ack);
//изменить адрес и данные (OPTIONNEL)
address++;
data--;
}
//************************************************** ****************************
//чтитать данные с произвольной ячейки
//************************************************** ****************************
void read_data()
{
//стартовое условие
i2c_start();
//обратиться к чипу с адресом 000 с командой записи
i2c_write(0xa0);
//передать адрес ячейки
i2c_write(address);
//стартовое условие
i2c_start();
//обратиться к чмпу с адресом 000 с командой чтения
i2c_write(0xa1);
//считать данные без подтверждения
ack=i2c_read(0);
//стоповое условие
i2c_stop();
//сменить адрес ячейки (OPTIONNEL)
address++;
output_d(ack);
} |
так же есть возможности последовательного чтения
|
|
|
|
06.01.2005, 03:40
|
|
Гость
|
Почитал журнал с соответствующей темой, форум, и с приливом информации взялся за дело. Думаю, что нибудь получится. Спасибо.
|
|
|
|
06.01.2005, 03:52
|
|
Гость
|
Новая почта-пишет, но при попытке сохранит-нот фоунд.
|
|
|
|
06.01.2005, 04:06
|
|
Администратор
Регистрация: 10.05.2003
Сообщений: 1,739
Сказал спасибо: 497
Сказали Спасибо 2,686 раз(а) в 595 сообщении(ях)
|
ни какой не нот фоунд. вот - специально скачал оттуда и выложил сюда: https://kazus.ru/nuke/files/i2c.zip
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 16:50.
|
|