roboforum.ru

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

Драйвер двух двигателей управляемый по I2C, UART

Резисторы, транзисторы, конденсаторы, микросборки, чип компоненты ...
Вопросы согласования управляющих модулей с периферией.

Re: Драйвер двух двигателей управляемый по I2C, UART

Сообщение dccharacter » 21 мар 2011, 22:18

Duhas писал(а):совет один - написать нормально обработчики прерываний или работу с флагами.. смотря как там у вас.. чтобы все успевало сработать...

Вот именно ЮСАРТ я хочу сделать без прерываний (если это возможно конечно), потому что i2c и UART одновременно на прерываниях будут КМК дюже сильно отжигать. В общем-то i2c в моем исполнении уже жгет ого-го как....

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

Re: Драйвер двух двигателей управляемый по I2C, UART

Сообщение dccharacter » 22 мар 2011, 03:33

Что-то какая-то мистика. Из консоли все работает ОК. Из ОРФА-терминала чуть-чуть поработает и залипает - перестает реагировать на команды. Делаю дисконнект - освобождаю порт. И подключаюсь путти. В путти тишина. Но как только ввожу первую команду, путти как бы пропушивает все предыдущие "залипшие" команды:

s1Aps4s
s4F
s4B
s4>
s4<
s4;
s4:
s4;
s4<
s4>
s4@
s4A
s4C
s4E
s4F
s4G
Es4
s4I
s5K
s5Q
s5K
s5Q
s5K
s5Q
s5K
s5Q
s5K

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

Re: Драйвер двух двигателей управляемый по I2C, UART

Сообщение Michael_K » 22 мар 2011, 03:38

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

Re: Драйвер двух двигателей управляемый по I2C, UART

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

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

Re: Драйвер двух двигателей управляемый по I2C, UART

Сообщение Michael_K » 22 мар 2011, 13:01

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

Re: Драйвер двух двигателей управляемый по I2C, UART

Сообщение dccharacter » 22 мар 2011, 13:04

Michael_K писал(а):Клево. Теперь надо закомментировать половину и посмотреть, исчезнет ли глюк. Потом еще половину и т.д. :)

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

Re: Драйвер двух двигателей управляемый по I2C, UART

Сообщение Vooon » 24 мар 2011, 00:15

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

Re: Драйвер двух двигателей управляемый по I2C, UART

Сообщение dccharacter » 24 мар 2011, 00:19

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

Re: Драйвер двух двигателей управляемый по I2C, UART

Сообщение dccharacter » 03 апр 2011, 02:05

О сколько нам открытий чудных готовит просвещенья путь!

У меня в контрол регистре есть адрес - 0х00, как и в любом массиве. А также, например, вращение двигателя изменяется - в одну сторону чтобы крутилось присылаем НЕ ноль, а в другую - ноль.

Стоп! Присылаем 0? Ага. щаз! Оказывается, что 0х00 и '\0' - одно и то же (кто бы могу подумать?!?!?! Ну уж точно не человек, прочитавший хоть раз proavr.narod.ru). Ну а я сижу, упорно пихаю в UART в середине пакета команд нуль-терминатор и удивляюсь - ЧЕ Ж ОНО НЕ РУЛИТСЯ-то???

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

Re: Драйвер двух двигателей управляемый по I2C, UART

Сообщение Michael_K » 03 апр 2011, 03:25

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

Re: Драйвер двух двигателей управляемый по I2C, UART

Сообщение dccharacter » 03 апр 2011, 03:45

Логично.
Дело на самом деле в этом:

QString MainWindow::doCmd(QString cmd) <-- раз
port->write(cmd.toAscii(),cmd.length()); <-- два

Добавлено спустя 4 минуты 35 секунд:
А заодно разобрался с помощью товарищей с microchip.su как забубенить реверс на CCP (без хардварного инверта полярности - кому интересно - вот тема: http://www.microchip.su/showthread.php?t=11618) - четверть дела сделана.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Драйвер двух двигателей управляемый по I2C, UART

Сообщение dccharacter » 01 май 2011, 18:07

Сделал вторую версию регуля. Распаял, все замечательно завелось (ну как все - пока проверил ICSP, UART, оба движка и управление)

Из косяков - забыл, что электролит 50В на 100 мкФ занимает чуть больше места (раз этак в восемь), чем 10В 100 мкФ. В итоге на плату влез только 200мкФ кондер. Мужики засмеют...

Ну и еще, кажись, ступил, повесив у одного энкодера оба выхода на прерывания по изменению, а у второго - ни одного. В остальном - живем! Аппаратный реверс, все дела...

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

Пред.

Вернуться в Электроника, электротехника

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

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