roboforum.ru

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

Помогите с написанием программы

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

Помогите с написанием программы

Сообщение Егор » 01 окт 2007, 21:18

Вобщем есть идея некого устройства:

Порт контроллера настроен на прием. На ноги приходит какой-то сигнал. Мне нужно засечь какая нога дернулась и сколько времени был сигнал, и послать номер ноги и времы на компьютер. Проблема в том что могут дернутся одновременно несколько ног. Как этоможно реализовать?
Егор
 
Сообщения: 10
Зарегистрирован: 01 окт 2007, 17:33
Откуда: Симферополь

Сообщение Myp » 01 окт 2007, 21:36

в цикле опрашиваем все ноги по очереди
если какаята  нога с сигналом то слудующие опросы считаем  сколько времени эта нога под сигналом
когда надо отправляем по уарту на комп

время опроса всех ног оч маленькое так что точность будет вполне. особенно если частоту кварца побольше взять


цикл:
если нога 1 = 1 то прибавляем единичку в 1 буфер
иначе отправляем 1 буфер в комп и обнуляем
если нога 2 = 1 то прибавляем единичку в 2 буфер
иначе отправляем 2 буфер в комп и обнуляем
если нога 3 = 1 то прибавляем единичку в 3 буфер
иначе отправляем 3 буфер в комп и обнуляем
если нога 4 = 1 то прибавляем единичку в 4 буфер
иначе отправляем 4 буфер в комп и обнуляем
если нога 5 = 1 то прибавляем единичку в 5 буфер
иначе отправляем 5 буфер в комп и обнуляем
если нога 6 = 1 то прибавляем единичку в 6 буфер
иначе отправляем 6 буфер в комп и обнуляем
конец цикла.

это буит работать если время включения выключения не очень маленькое
тоесть время отправки буфера по уарту пренебрежимо мало
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение Егор » 01 окт 2007, 21:59

О спс. Только прийдется мучится - мне время в микросекундах нужно
Егор
 
Сообщения: 10
Зарегистрирован: 01 окт 2007, 17:33
Откуда: Симферополь

Сообщение Myp » 01 окт 2007, 22:12

хммм
тогда сложно

придётся отправку по уарту отложить

раскажи примерно скока импульсов будет в минуту какой длинны


наверно нуно делать тоже самое, тока не отправлять в цикле по уарту(во время отправки может случится ошибка)
а накапливать информацию в буферах
вобщем как в секундомере, записываем в буфер контрольные точки

например так:
включилась нога
считаем скока циклов
выключилась нога записали кол-во циклов в массив
считаем кол-во циклов с отключенной ногой
включилась нога нога записали количество циклов в массив
считаем количество циклов
реальное время цикла опроса всех ног определяем в симуляторе =)

в итоге в массиве будет ряд чисел
типа 100;20;387;65;356
отправляем их на комп и расшифровываем:
1 импульс был 100 микросекунд (потом 20 микросекунд пауза)
2 импульс начался в 120 микросекунду относительно  нуля и продлился 387 микросекунд
3 импульс начался в 507 микросекунду (387+20+100) и продлился 65 микросекунд
и т.д.



хотя наверняка ктото тут предложит более элегантное решение
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение Егор » 01 окт 2007, 22:36

На каждую ногу в минуту где-то 25-35 импульсов, по 1-2 секунды длиной
Егор
 
Сообщения: 10
Зарегистрирован: 01 окт 2007, 17:33
Откуда: Симферополь

Сообщение Master » 01 окт 2007, 23:01

Вообще если я не ошибаюсь в МК есть такая вещь как таймер-счетчик и при подаче сигнала на ножку он сам начинает считать. Короч ща придет авр и пошлет накурс. Более подробно сказать не могу эту функцию ни разу не юзал.
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Сообщение Myp » 02 окт 2007, 09:35

Master писал(а):Вообще если я не ошибаюсь в МК есть такая вещь как таймер-счетчик и при подаче сигнала на ножку он сам начинает считать. Короч ща придет авр и пошлет накурс. Более подробно сказать не могу эту функцию ни разу не юзал.


ну там таймер есть конечно
но разве там на все 15 ног таймеров хватит??
вдруг там сразу все ноги сработают...


хотя... можно ведь извратится и обойтись всего одним...!!!
просто алгоритм зашифровки контрольных точек ещё усложнится...
не нафик, не буду я над этим думать
пусь автор топика думает =)
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение SSG » 02 окт 2007, 16:57

Таймеров маловато будет. В атмегах их тока до 4-х штук. Нужно более подробное ТЗ.
Аватара пользователя
SSG
 
Сообщения: 1058
Зарегистрирован: 15 янв 2007, 19:23
Откуда: Беларусь, Барановичи
прог. языки: С для МК, Delphi для ПК

Re: Помогите с написанием программы

Сообщение avr123.nm.ru » 02 окт 2007, 17:06

Егор писал(а):Вобщем есть идея некого устройства:

Порт контроллера настроен на прием. На ноги приходит какой-то сигнал. Мне нужно засечь какая нога дернулась и сколько времени был сигнал, и послать номер ноги и времы на компьютер. Проблема в том что могут дернутся одновременно несколько ног.

Как этоможно реализовать?


Периодический опрос порта и сравнение с прошлым результатом.

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

Re: Помогите с написанием программы

Сообщение Егор » 13 окт 2007, 17:56

Вобщем написал я программу но почему-то не работает. То ли дело в программе толи хз. Вобщем если не сложно гляньте код мож че-то не то сделал. Код прикрепил.

Сделал так как предлагал Мур в первом посте.
Вложения
car.c
(5.49 КиБ) Скачиваний: 253
Егор
 
Сообщения: 10
Зарегистрирован: 01 окт 2007, 17:33
Откуда: Симферополь

Re: Помогите с написанием программы

Сообщение Myp » 13 окт 2007, 18:08

ыыыыыы
телепаты в отпуске

что не работает?
данные не отсылаются?
или может считает неправильно?
или вобще не считает?
или может мк не запускается?


ты в симуляторе то проверил???
если проверил то где именно не работает???

если не хочешь симулировать в vmlab
почему у тя не подсоединено ни одного отладочного светодиода??
хотябы в цикл поставь мигание 1 светиком чтоб быть увереным что мк вобще запустился и работает
второй светик поставь на срабатывание какогонить условия
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Помогите с написанием программы

Сообщение Егор » 13 окт 2007, 18:17

На компьютер ничего не отсылается. Иногда посылает какие-то левые крокозябры, а не то что я написал.
Егор
 
Сообщения: 10
Зарегистрирован: 01 окт 2007, 17:33
Откуда: Симферополь

Re: Помогите с написанием программы

Сообщение Myp » 13 окт 2007, 18:38

а прога то вааще работает?
счего ты взял что у тебяя мк вобще что делает?
а фьюзы правильно выставил для твоей частоты??
ставь светодиод и дописывай мигание светодиодом каждый раз когда идёт отсылка данных
а вобще не парь мозги включай симулятор и смотри пошагово что у тя там происходит внутри
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Помогите с написанием программы

Сообщение Егор » 13 окт 2007, 20:31

В ВМЛАБЕ все работает. А на практике нет :cry:
МК до конца цикла не доходит.
Егор
 
Сообщения: 10
Зарегистрирован: 01 окт 2007, 17:33
Откуда: Симферополь

Re: Помогите с написанием программы

Сообщение Егор » 14 окт 2007, 15:12

Если исключить из программы прием данным по RS-232 устройство начинает работать. Хелп где я неправильно описал прием
Егор
 
Сообщения: 10
Зарегистрирован: 01 окт 2007, 17:33
Откуда: Симферополь

След.

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

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

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

cron