roboforum.ru

Технический форум по робототехнике.
Текущее время: 02 дек 2024, 13:39

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Помогите с написанием программы
СообщениеДобавлено: 01 окт 2007, 21:18 
Не в сети

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 01 окт 2007, 21:36 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

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

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


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

это буит работать если время включения выключения не очень маленькое
тоесть время отправки буфера по уарту пренебрежимо мало


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 01 окт 2007, 21:59 
Не в сети

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 01 окт 2007, 22:12 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

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

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

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


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

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

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



хотя наверняка ктото тут предложит более элегантное решение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 01 окт 2007, 22:36 
Не в сети

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 01 окт 2007, 23:01 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 02 окт 2007, 09:35 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

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


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


хотя... можно ведь извратится и обойтись всего одним...!!!
просто алгоритм зашифровки контрольных точек ещё усложнится...
не нафик, не буду я над этим думать
пусь автор топика думает =)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 02 окт 2007, 16:57 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с написанием программы
СообщениеДобавлено: 02 окт 2007, 17:06 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Егор писал(а):
Вобщем есть идея некого устройства:

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

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


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

отправка в ПК это задача 5 курса - avr123.nm.ru/z5.htm


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с написанием программы
СообщениеДобавлено: 13 окт 2007, 17:56 
Не в сети

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

Сделал так как предлагал Мур в первом посте.


Вложения:
car.c [5.49 КиБ]
Скачиваний: 307
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с написанием программы
СообщениеДобавлено: 13 окт 2007, 18:08 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

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

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


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

если не хочешь симулировать в vmlab
почему у тя не подсоединено ни одного отладочного светодиода??
хотябы в цикл поставь мигание 1 светиком чтоб быть увереным что мк вобще запустился и работает
второй светик поставь на срабатывание какогонить условия


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с написанием программы
СообщениеДобавлено: 13 окт 2007, 18:17 
Не в сети

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с написанием программы
СообщениеДобавлено: 13 окт 2007, 18:38 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с написанием программы
СообщениеДобавлено: 13 окт 2007, 20:31 
Не в сети

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с написанием программы
СообщениеДобавлено: 14 окт 2007, 15:12 
Не в сети

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


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

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


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

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO