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 раз.
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

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

Сообщение EdGull » 03 янв 2009, 10:00

а подтяжки твоя i2c принципиально не носит?
религия не позволяет?
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

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

Сообщение avr123.nm.ru » 03 янв 2009, 13:07

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

Сделайте в CVAVR по примеру в нем же - и все будет работать. Там и про подключение i2c написано. Отлаживать можно в PROTEUS - будет видно сигналы передаваемые по линиям и что куда пишется.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение galex1981 » 03 янв 2009, 15:30

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

Эд, поясни, какие подтяжки нужны для I2C, если сопротивления подтягивающие, то на аналогичных схемах я не замечал подобного
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

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

Сообщение Vooon » 03 янв 2009, 15:42

На каких аналогичных?
Шины SCL/SDA должны быть подтянуты к Vcc через резисторы (обычно 4.7 кОм).
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

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

Сообщение EdGull » 03 янв 2009, 16:11

Vooon правильно сказал.
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

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

Сообщение avr123.nm.ru » 03 янв 2009, 19:35

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


А в даташите замечал ?
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение galex1981 » 03 янв 2009, 22:11

Да на подтягивающие резисторы внимания я то и не обратил - и в CVAVR про них написано :sorry:
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

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

Сообщение avr123.nm.ru » 03 янв 2009, 22:27

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

CVAVR - это сила брат !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение galex1981 » 03 янв 2009, 23:29

В общем разобрался я, огромное спасибо вам! Основная проблема в том что не были установлены подтягивающие резисторы, соответственно сигналы на Eprom приходили мусорные. Резисторы подпаял. Также после записи данный в Eprom нужно добавить небольшую задержку, иначе просто не успеет дописаться. В первом сообщении добавил новые переделаные исходники. Частая проблема человека это невнимательность и беглый просмотр даташита...
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

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

Сообщение SkyStorm » 13 янв 2009, 16:06

Похожая проблемма. Сначала не поставил подтягивающих резисторов.
Потом поставил на 1кОм. Все равно как то не фурычит. Обязательно надо 4.7кОм???
А то у меня есть только резисторы на 1 кОм и на 500 Ом.
Никто кроме нас!!!
4Robots.ru - Все для роботов!
Аватара пользователя
SkyStorm
 
Сообщения: 2687
Зарегистрирован: 05 фев 2008, 15:33
Откуда: St. Petersburg - Moscow
Skype: SkyStorm77
ФИО: Костюк Константин Вячеславович

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

Сообщение =DeaD= » 13 янв 2009, 16:18

Поставь последовательно 5 подряд 1 кОм :crazy:
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение avr123.nm.ru » 13 янв 2009, 16:48

2 ком наверн будут работать. в панелях приборов ВАЗ по 1.5 ком подтяжки.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение $ilent » 13 янв 2009, 18:20

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

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:
Никто кроме нас!!!
4Robots.ru - Все для роботов!
Аватара пользователя
SkyStorm
 
Сообщения: 2687
Зарегистрирован: 05 фев 2008, 15:33
Откуда: St. Petersburg - Moscow
Skype: SkyStorm77
ФИО: Костюк Константин Вячеславович

След.

Вернуться в Новичкам или основы основ роботостроения.

Кто сейчас на конференции

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