roboforum.ru

Технический форум по робототехнике.

Ошибка в коде по реализации I2C

Ошибка в коде по реализации I2C

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
.JPG
схема интерфейса
usard_i2c.rar
код
(55.89 КиБ) Скачиваний: 26
Последний раз редактировалось galex1981 03 янв 2009, 23:26, всего редактировалось 1 раз.

Re: Ошибка в коде по реализации I2C

EdGull » 03 янв 2009, 10:00

а подтяжки твоя i2c принципиально не носит?
религия не позволяет?

Re: Ошибка в коде по реализации I2C

avr123.nm.ru » 03 янв 2009, 13:07

galex1981 писал(а):Мучаюсь с этим уже часов 5.

Сделайте в CVAVR по примеру в нем же - и все будет работать. Там и про подключение i2c написано. Отлаживать можно в PROTEUS - будет видно сигналы передаваемые по линиям и что куда пишется.

Re: Ошибка в коде по реализации I2C

galex1981 » 03 янв 2009, 15:30

EdGull писал(а):а подтяжки твоя i2c принципиально не носит?
религия не позволяет?

Эд, поясни, какие подтяжки нужны для I2C, если сопротивления подтягивающие, то на аналогичных схемах я не замечал подобного

Re: Ошибка в коде по реализации I2C

Vooon » 03 янв 2009, 15:42

На каких аналогичных?
Шины SCL/SDA должны быть подтянуты к Vcc через резисторы (обычно 4.7 кОм).

Re: Ошибка в коде по реализации I2C

EdGull » 03 янв 2009, 16:11

Vooon правильно сказал.

Re: Ошибка в коде по реализации I2C

avr123.nm.ru » 03 янв 2009, 19:35

galex1981 писал(а):какие подтяжки нужны для I2C, если сопротивления подтягивающие, то на аналогичных схемах я не замечал подобного


А в даташите замечал ?

Re: Ошибка в коде по реализации I2C

galex1981 » 03 янв 2009, 22:11

Да на подтягивающие резисторы внимания я то и не обратил - и в CVAVR про них написано :sorry:

Re: Ошибка в коде по реализации I2C

avr123.nm.ru » 03 янв 2009, 22:27

galex1981 писал(а):и в CVAVR про них написано :sorry:

CVAVR - это сила брат !

Re: Ошибка в коде по реализации I2C

galex1981 » 03 янв 2009, 23:29

В общем разобрался я, огромное спасибо вам! Основная проблема в том что не были установлены подтягивающие резисторы, соответственно сигналы на Eprom приходили мусорные. Резисторы подпаял. Также после записи данный в Eprom нужно добавить небольшую задержку, иначе просто не успеет дописаться. В первом сообщении добавил новые переделаные исходники. Частая проблема человека это невнимательность и беглый просмотр даташита...

Re: Ошибка в коде по реализации I2C

SkyStorm » 13 янв 2009, 16:06

Похожая проблемма. Сначала не поставил подтягивающих резисторов.
Потом поставил на 1кОм. Все равно как то не фурычит. Обязательно надо 4.7кОм???
А то у меня есть только резисторы на 1 кОм и на 500 Ом.

Re: Ошибка в коде по реализации I2C

=DeaD= » 13 янв 2009, 16:18

Поставь последовательно 5 подряд 1 кОм :crazy:

Re: Ошибка в коде по реализации I2C

avr123.nm.ru » 13 янв 2009, 16:48

2 ком наверн будут работать. в панелях приборов ВАЗ по 1.5 ком подтяжки.

Re: Ошибка в коде по реализации I2C

$ilent » 13 янв 2009, 18:20

Ещё за ёмкостью линии следить приходится... Провода-то длинные поди... Да и наверное не отдельные проводки, а жгут целый...???

Re: Ошибка в коде по реализации I2C

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 ??? :oops:


Rambler\'s Top100 Mail.ru counter