Технический форум по робототехнике.
galex1981 » 03 янв 2009, 02:48
Здравствуйте уважаемые форумчане. Решил я сделать одно устройство - чтение/запись байта в FLASH-память AT24C04. Общение с этой памятью производится по I2C интерфейсу. Записываю в адрес 0x00 значение 47 ("G"). Затем пытаюсь по нажатияю кнопки PORTD.2 считывать значение и выводить его в COM-порт. Проблема в том что при отладке не только ничего не считывается но и ничего не записывается в память. Мучаюсь с этим уже часов 5.
Ниже прилагаю исходник интерфейса и код. По схеме к контроллеру (Tiny2313) подходят следующие сигналы: PORTB.0 = SDA памяти, PORTB.1 = SCL памяти, PORTD.0 = RXD max232, PORTD.1 = TXD max232.
- Вложения
-
- usard_i2c.rar
- новый исправленный код
- (57.15 КиБ) Скачиваний: 34
-
- схема интерфейса
-
- usard_i2c.rar
- код
- (55.89 КиБ) Скачиваний: 26
Последний раз редактировалось
galex1981 03 янв 2009, 23:26, всего редактировалось 1 раз.
EdGull » 03 янв 2009, 10:00
а подтяжки твоя i2c принципиально не носит?
религия не позволяет?
avr123.nm.ru » 03 янв 2009, 13:07
galex1981 писал(а):Мучаюсь с этим уже часов 5.
Сделайте в CVAVR по примеру в нем же - и все будет работать. Там и про подключение i2c написано. Отлаживать можно в
PROTEUS - будет видно сигналы передаваемые по линиям и что куда пишется.
galex1981 » 03 янв 2009, 15:30
EdGull писал(а):а подтяжки твоя i2c принципиально не носит?
религия не позволяет?
Эд, поясни, какие подтяжки нужны для I2C, если сопротивления подтягивающие, то на аналогичных схемах я не замечал подобного
Vooon » 03 янв 2009, 15:42
На каких аналогичных?
Шины SCL/SDA должны быть подтянуты к Vcc через резисторы (обычно 4.7 кОм).
EdGull » 03 янв 2009, 16:11
Vooon правильно сказал.
avr123.nm.ru » 03 янв 2009, 19:35
galex1981 писал(а):какие подтяжки нужны для I2C, если сопротивления подтягивающие, то на аналогичных схемах я не замечал подобного
А в даташите замечал ?
galex1981 » 03 янв 2009, 22:11
Да на подтягивающие резисторы внимания я то и не обратил - и в CVAVR про них написано
avr123.nm.ru » 03 янв 2009, 22:27
galex1981 писал(а):и в CVAVR про них написано
CVAVR - это сила брат !
galex1981 » 03 янв 2009, 23:29
В общем разобрался я, огромное спасибо вам! Основная проблема в том что не были установлены подтягивающие резисторы, соответственно сигналы на Eprom приходили мусорные. Резисторы подпаял. Также после записи данный в Eprom нужно добавить небольшую задержку, иначе просто не успеет дописаться. В первом сообщении добавил новые переделаные исходники. Частая проблема человека это невнимательность и беглый просмотр даташита...
SkyStorm » 13 янв 2009, 16:06
Похожая проблемма. Сначала не поставил подтягивающих резисторов.
Потом поставил на 1кОм. Все равно как то не фурычит. Обязательно надо 4.7кОм???
А то у меня есть только резисторы на 1 кОм и на 500 Ом.
=DeaD= » 13 янв 2009, 16:18
Поставь последовательно 5 подряд 1 кОм
avr123.nm.ru » 13 янв 2009, 16:48
2 ком наверн будут работать. в панелях приборов ВАЗ по 1.5 ком подтяжки.
$ilent » 13 янв 2009, 18:20
Ещё за ёмкостью линии следить приходится... Провода-то длинные поди... Да и наверное не отдельные проводки, а жгут целый...???
SkyStorm » 13 янв 2009, 19:46
avr123.nm.ru писал(а):2 ком наверн будут работать. в панелях приборов ВАЗ по 1.5 ком подтяжки.
А в чем смысл увеличения номинала Резистора в данном случае ...
U = RI, U = 4.2 В, R = 1000 Ом
I = U/R =4.2 милиА, соответственно при увеличении R мы уменьшаем I.
Вопорос: Почему это должно помочь I2C ???