Электроника средств транспорта Ремонт и разработка дополнительного автооборудования. Бортовые компьютеры и многое другое. |
03.07.2012, 15:20
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.06.2010
Сообщений: 1,223
Сказал спасибо: 13
Сказали Спасибо 176 раз(а) в 123 сообщении(ях)
|
Re: Самодельный круиз-контроль
Сообщение от Alex_Sss
|
И поэтому - чем больше импульсов мы возьмем для замера - тем лучше и точнее!
|
Угу. Тока времени на кучу захватов фронтов нет нифига.
|
|
|
|
03.07.2012, 15:36
|
|
Временная регистрация
Регистрация: 18.11.2011
Сообщений: 98
Сказал спасибо: 1
Сказали Спасибо 11 раз(а) в 6 сообщении(ях)
|
Re: Самодельный круиз-контроль
Сообщение от gnomon72
|
200 км в час.
56 метров в секунду.
Для 6-импульсного датчика получаем частоту 336 Герц
За длительность базы замера в 100 мсек имеем 33...34 импульса.
|
Круто. Вам повезло с Вашим идеально изготовленным датчиком.
У меня при скорости 200 за это время 149 импульсов уже прошло бы.
Я всё-таки склоняюсь к тому, что у кого есть ABS брать сигнал с него и считать не период, а количество импульсов за определённый период.
Я ещё вот чего подумал.
У меня также никак не согласуется начало фронта первого счётного импульса и начало счётного периода. Поэтому возможна ошибка +/-1 импульс. Может синхронизировать их?
Сообщение от Alex_Sss
|
И поэтому - чем больше импульсов мы возьмем для замера - тем лучше и точнее!
|
Во-во. И я о том-же.
|
|
|
|
03.07.2012, 15:40
|
|
Временная регистрация
Регистрация: 18.11.2011
Сообщений: 98
Сказал спасибо: 1
Сказали Спасибо 11 раз(а) в 6 сообщении(ях)
|
Re: Самодельный круиз-контроль
Сообщение от gnomon72
|
Угу. Тока времени на кучу захватов фронтов нет нифига.
|
В приведённом мной выше коде никаких фронтов захватывать не надо.
Один счётчик считает, второй через время прерывается, в первом смотрим скорость сколько там за это время насчитало, сбрасываем насчитанное в 0, и по новой.
|
|
|
|
03.07.2012, 15:54
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.06.2010
Сообщений: 1,223
Сказал спасибо: 13
Сказали Спасибо 176 раз(а) в 123 сообщении(ях)
|
Re: Самодельный круиз-контроль
Сообщение от Andry_MA
|
В приведённом мной выше коде никаких фронтов захватывать не надо.
Один счётчик считает, второй через время прерывается, в первом смотрим скорость сколько там за это время насчитало, сбрасываем насчитанное в 0, и по новой.
|
Стоп. Не период между фронтами меряете, а количество импульсов считаете что ли?
|
|
|
|
03.07.2012, 15:56
|
|
Прописка
Регистрация: 03.06.2012
Сообщений: 159
Сказал спасибо: 8
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
|
Re: Самодельный круиз-контроль
Сообщение от gnomon72
|
И ни в одном на время обработки нельзя отключать другие,
|
Если я правильно помню - то запрет прерываний не запрещает, а откладывает прерывания. Т.е. флаг все равно взводится и будет обработан после разрешения прерываний. Значит - по-идее мы можем им пользоваться дабы исключить вложенные прерывания.
|
|
|
|
03.07.2012, 16:01
|
|
Прописка
Регистрация: 03.06.2012
Сообщений: 159
Сказал спасибо: 8
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
|
Re: Самодельный круиз-контроль
Сообщение от gnomon72
|
Угу. Тока времени на кучу захватов фронтов нет нифига.
|
А времени и не надо. Мы просто сбрасываем счетчик ICP, и начинаем отсчет времени. Пока время не вышло - никаких затрат от нас не требуется. Как только отсчет завершен (прерывание по основному таймеру) - мы активируем прерывание по ICP, и ждем его. Пришло - запомнили сколько насчитал наш счетчик времени, и у нас есть время полных Х периодов. Делим его на Х - и получаем точный период.
При этом отсчет можно делать основным таймером, который отсчитывает наши 500мс. достаточно сохранить его значение в момент завершения отсчета 200мс, и еще раз сохранить его значение по прерыванию ICP.
Сорри за сумбурность, но надеюсь - идея ясна.
|
|
|
|
03.07.2012, 16:03
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.06.2010
Сообщений: 1,223
Сказал спасибо: 13
Сказали Спасибо 176 раз(а) в 123 сообщении(ях)
|
Re: Самодельный круиз-контроль
Сообщение от Alex_Sss
|
Если я правильно помню - то запрет прерываний не запрещает, а откладывает прерывания. Т.е. флаг все равно взводится и будет обработан после разрешения прерываний. Значит - по-идее мы можем им пользоваться дабы исключить вложенные прерывания.
|
Это смотря, как запрещать. Ежели глобально запрещать, то так и есть. А ежели флагами разрешения отдельных прерываний манипулировать, то нет.
Глобально запрещать, как то совесть не позволяет. Чай тут не ассемблер, а Паскаль, где вообще запрещается систик отрубать, если он запущен.
Хотя конечно можно плюнуть и сделать по своему.
Да в общем то это и не проблема. Всё равно решил делать не параллельную обработку, а как раньше, т.е. последовательную. Так и конфликтов меньше и задержек всяких. Просто драйвер с фильтрацией "левых" периодов попробую дописать.
|
|
|
|
03.07.2012, 16:12
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.06.2010
Сообщений: 1,223
Сказал спасибо: 13
Сказали Спасибо 176 раз(а) в 123 сообщении(ях)
|
Re: Самодельный круиз-контроль
Сообщение от Alex_Sss
|
А времени и не надо. Мы просто сбрасываем счетчик ICP, и начинаем отсчет времени....
|
Ну, так оно и работает. Только в двух вариантах - последовательный замер, когда мы 100 мсек меряем и почти нифига не делаем больше, только кнопки проверяем, а оставшиеся 400 мсек тратим на остальное, либо параллельный замер 500 мсек, когда мы и меряем скорость и всё остальное творим.
В первом случае получаем маловато замеров, но не имеем проблем с другими процедурами, во втором случае получаем больше замеров, но имеем заморочки по конфликтам прерываний или по выдерживанию временных интервалов, которые прерывания не используют, т.е. получаем проблемы по точности косвенно, с других направлений.
Плюс ко всему выше мы при замере 500 мсек базы получаем среднюю скорость фактически на момент 250 мсек назад, а при замере 100 мсек базы, только 50 мсек назад, что тоже сказывается на управлении - 200 мсек разницы это не шутки.
Последний раз редактировалось gnomon72; 03.07.2012 в 16:17.
|
|
|
|
03.07.2012, 20:41
|
|
Временная регистрация
Регистрация: 18.11.2011
Сообщений: 98
Сказал спасибо: 1
Сказали Спасибо 11 раз(а) в 6 сообщении(ях)
|
Re: Самодельный круиз-контроль
Сообщение от gnomon72
|
Стоп. Не период между фронтами меряете, а количество импульсов считаете что ли?
|
ДААААААААА.
Причём к количественном выражении. Скорость 60 км/ч - 60 импульсов.
С ABS это очень хорошо получаестя. Частота большая. Только время подобрать. Несколько страниц назад. Там где код.
Спасибо "ещё один max"-у.
|
|
|
|
03.07.2012, 20:53
|
|
Временная регистрация
Регистрация: 18.11.2011
Сообщений: 98
Сказал спасибо: 1
Сказали Спасибо 11 раз(а) в 6 сообщении(ях)
|
Re: Самодельный круиз-контроль
Сообщение от gnomon72
|
Ну, так оно и работает. Только в двух вариантах - последовательный замер, когда мы 100 мсек меряем и почти нифига не делаем больше, только кнопки проверяем, а оставшиеся 400 мсек тратим на остальное, либо параллельный замер 500 мсек, когда мы и меряем скорость и всё остальное творим.
В первом случае получаем маловато замеров, но не имеем проблем с другими процедурами, во втором случае получаем больше замеров, но имеем заморочки по конфликтам прерываний или по выдерживанию временных интервалов, которые прерывания не используют, т.е. получаем проблемы по точности косвенно, с других направлений.
|
Похоже здесь и есть прооблема для "избранных".
Время 600 мс очень чуствительно.
Последний раз редактировалось Andry_MA; 03.07.2012 в 20:55.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:32.
|
|