roboforum.ru

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

RGB Color Light Sensor и Arduino

Как собрать и запрограммировать робота на Arduino(Freeduino, Roboduino, Seeduino ...). Используем Wiring и Processing.

Re: RGB Color Light Sensor и Arduino

Сообщение =DeaD= » 10 мар 2011, 16:49

Dmitri Vladimirovich писал(а):А если несколько программых И2Ц взять?

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

Re: RGB Color Light Sensor и Arduino

Сообщение Dmitri Vladimirovich » 10 мар 2011, 17:17

но ведь в аврлибе есть программная реализациия?

или я чего то непонимаю
#define TRUE FALSE
Dmitri Vladimirovich
 
Сообщения: 283
Зарегистрирован: 05 янв 2010, 23:07
Откуда: Красноармейск
Skype: dmitry.vladimirivich
ФИО: Дима.В.

Re: RGB Color Light Sensor и Arduino

Сообщение Vooon » 11 мар 2011, 09:37

Только не ОК а ОС.
И много где это можно эмулировать.
У авра PORTxy = 0, DDRxy = 0 | 1;
Некоторые другие так вообще имеют режим OD.
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: RGB Color Light Sensor и Arduino

Сообщение =DeaD= » 11 мар 2011, 09:43

Vooon писал(а):У авра PORTxy = 0, DDRxy = 0 | 1;

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

Re: RGB Color Light Sensor и Arduino

Сообщение Michael_K » 11 мар 2011, 09:47

=DeaD= писал(а):
Dmitri Vladimirovich писал(а):А если несколько программых И2Ц взять?

Фишка в том, что i2c это открытый коллектор, это надо железо городить, а не только программно пинами дергать.


Можно и пинами эмулировать ОК. Это как раз не большая проблема.

Основная проблема в том, что если делать правильно (по спецификации I2C),
то необходимо отслеживать готовность слейва на каждом бите. По спецификации слейв может зажать клоки в любой момент, и мастер должен ждать, пока слейв их не отпустит.

Часто (но не всегда) этим можно пренебречь, но тогда говорить об I2C несколько некорректно.
То есть стандартный I2C, вообще говоря, не может гарантировать стабильное время обмена. И для реалтайм систем это плохо.

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

Программно делать слейв крайне неудобно (хотя тоже можно).
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: RGB Color Light Sensor и Arduino

Сообщение =DeaD= » 11 мар 2011, 10:00

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

Re: RGB Color Light Sensor и Arduino

Сообщение Michael_K » 11 мар 2011, 10:06

Это как повезет. Например, у LSM303 уровни 1.8 вольт.
Я обычно делаю I2C программно, НО... я не мог бы гарантировать, что оно работоспособно с любым I2C девайсом.

Вот, например, стоят у меня на плате проц и два LSM303 - все работает (совершенно не по спецификации, но работает). И я могу это проверить!!!

Но если бы я делал девайс, типа, "вот вам I2C, подключайте что хотите", то я не смог бы проверить работоспособность с каждым конкретным датчиком.
Я был бы обязан строго следовать спецификации.

Как-то так.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: RGB Color Light Sensor и Arduino

Сообщение =DeaD= » 11 мар 2011, 10:23

Michael_K писал(а):Основная проблема в том, что если делать правильно (по спецификации I2C),
то необходимо отслеживать готовность слейва на каждом бите. По спецификации слейв может зажать клоки в любой момент, и мастер должен ждать, пока слейв их не отпустит.

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

Re: RGB Color Light Sensor и Arduino

Сообщение Michael_K » 11 мар 2011, 10:31

В непредсказуемости.
Обычно есть прерывания, какие-то временнЫе константы и т.п.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: RGB Color Light Sensor и Arduino

Сообщение dccharacter » 11 мар 2011, 11:07

1. Если делать по спецификации, то примерно половина даташита на любой пик занимает вопрос разруливания коллизий ХАРДОВЫМ модулем i2c - да ну его к черту, по спецификации :-)
2. Согласовать уровни элементарно - по полевому транзистору с низким порогом открывания на линию. Главное, чтобы они были.
3. Главная проблема - ограниченное адресное пространство, пересекающиеся адреса и т.д. Т.е. чем более распространено i2c, тем шире проблема.
4. А вообще штука удобная. Вот например, я сейчас делаю драйвер двигателей, совместимый с OR. Но вчера почти что решил делать с управлением не по RoboMD2, а по i2c. МК с i2c и нужным количеством портов (да, а мне надо много -я делаю на Н-мостах, которые просят 8 пинов на управление каждым, т.е. 2 совершенно свободных порта.) МК стоит 50-70 рублей. Если все-таки не выводить всевозможные дисейблы и енейблы и оставить регистры управления только ШИМ, Направление, Фейл-статус и обратка по току, то МК обойдется в 45 рублей в тритоне. Один МК, два моста, коннектор на подключение двигателей, питания двигателей, питания МК (можно запитать от движков же, кстати, так и надо сделать), а дальше выводи куда хошь - УАРТ, i2C, SPI...

Поленился что-то за МК бегать (опять надо Анатолия просить закупку делать, ехать ему, ехать мне и все из-за 100 руб), да прошивку писать - но, черт побери, пока эти буквы написал, опять захотелось. Кинул два байтика на движки - поехали. Кинул еще два - встали. Первый байт - номер движка, направления вращения, младшие биты ПВМ, второй байт - старшие биты ПВМ. Если нужны статусы - один байт прочитал. Старший байт - статус, младшие - ток.

ВСЕ!!!!!
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: RGB Color Light Sensor и Arduino

Сообщение =DeaD= » 11 мар 2011, 11:11

dccharacter писал(а):Вот например, я сейчас делаю драйвер двигателей, совместимый с OR. Но вчера почти что решил делать с управлением не по RoboMD2, а по i2c.

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

Re: RGB Color Light Sensor и Arduino

Сообщение dccharacter » 11 мар 2011, 11:17

=DeaD= писал(а):
dccharacter писал(а):Вот например, я сейчас делаю драйвер двигателей, совместимый с OR. Но вчера почти что решил делать с управлением не по RoboMD2, а по i2c.

Тогда вешайте туда еще и 2 разъема энкодеров сдвоенных в распиновке GND,VCC,SIG1,SIG2.

Кстати да, забыл вот... А если делать все-таки с i2c, как опрашивать энкодеры? Как аксель? Т.е. делать пин прерывания, регистр прерывания и отдельные регистры на каждый энкодер со значением скорости???

П.С. мне можно тыкать
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: RGB Color Light Sensor и Arduino

Сообщение =DeaD= » 11 мар 2011, 11:28

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

Re: RGB Color Light Sensor и Arduino

Сообщение dccharacter » 11 мар 2011, 11:46

=DeaD= писал(а):На каждом энкодере SIG1 (или на каждом - SIG2) надо завести на прерывание по изменению уровня.

Не, ты не понял. Я про то, как вовне отдавать. Это же все еще можно отдавать по i2c, но чтобы постоянно не оправшивать, делается пятый пин INT. Вообще i2c очень много разъемов. Вон вы на ОР пишете, что у вас совместимо с какими-то устройствами. Часть устройств имеют SDA и SDL по краям. Часть - шестипиновая (даже читал где-то что это "стандарт"), там еще INT и AUX
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: RGB Color Light Sensor и Arduino

Сообщение =DeaD= » 11 мар 2011, 11:55

Какой еще пятый пин I2C, не надо этого, концепция I2C - мастер-слейв, вот и не надо её рушить.
Надо на самом ДД делать ПИД-регулятор, если уж делаешь его на I2C.

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

Пред.След.

Вернуться в Arduino и другие Xduino

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

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