Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Еще несложный вопрос - есть,допустим, усредненное значение 835. Как экономичней отследить в потоке значений отклонение не более 5??
Отправлено
dshabrov
(84.21.231.242)
13 ноября 2010, г. 15:16
Т.е. Если в потоке встретятся числа больше 840 и меньше 830, нужно в ячейку beep положить число 250.
Как эту задачу сделать более экономичной? Процедура с этой задачей вызывается с частотой 4КГц. Проц Мега128.
Спасибо.
Составить ответ
|
Вернуться на конференцию
Ответы
Ответ: Всем спасибо. Из всех вариантов сделал это+++
-
dshabrov
(13.11.2010, 17:22:56
84.21.231.242
, 407 байт)
Попробуйте для начала посмотреть, что же у вас происходит с датчиком.
-
vmp
(13.11.2010, 17:54:15
87.245.155.198
, 978 байт)
Ответ: Удаленно работают три датчика. Локально на плате такой же один. На плате работает без ошибок. Так что грешу на линию.
-
dshabrov
(13.11.2010, 18:17:28
84.21.231.242
, 152 байт)
SPI? Удаленно? Ну это вы сами себе проблемы создаете, и немалые. Длина какая? Может оказаться единственным выходом ставить рядом с датчиком микроконтроллеры и тащить данные в RS-485.
-
vmp
(13.11.2010, 18:29:50
87.245.155.198
,
пустое
)
Ответ: Не я, а заказчик. SPI не такой уж длинный. 50см. Должен тянуть по идее на скоростях примерно 170Кгц. Кабель взял от VGA монитора. Он широкополосный.
-
dshabrov
(13.11.2010, 18:43:3
84.21.231.242
,
пустое
)
На такие расстояния если уж SPI захотелось, то пускайте их через LVDS приемопередатчики
-
omen
(13.11.2010, 22:59:38
95.55.187.45
,
пустое
)
if((835 - 5 < x) && (x < 835 + 5)) ...
-
mandigit
(13.11.2010, 15:29:35
83.237.251.86
,
пустое
)
"более экономичной" по скорости, или по обьему?
-
argus98
(13.11.2010, 15:25:38
81.22.205.230
,
пустое
)
Ответ: Скорости. И только скорости!
-
dshabrov
(13.11.2010, 15:35:9
84.21.231.242
,
пустое
)
на ассемблере (+):
-
argus98
(13.11.2010, 15:59:15
81.22.205.230
, 281 байт)
Ответ: Круто. Но в реальной жизни вместо фиксированного среднего значения учавствует глобальная переменная+++
-
dshabrov
(13.11.2010, 16:08:6
84.21.231.242
, 112 байт)
тогда по другому (+):
-
argus98
(13.11.2010, 16:31:2
81.22.205.230
, 391 байт)
Ответ: Думаю сложно получится. Глобальная переменная (среднее значение) имеет тип Long Int. Поэтому в два байта не влезет.
-
dshabrov
(13.11.2010, 17:14:35
84.21.231.242
, 187 байт)
if ((unsigned int)(val - 830) > 10) beep = 250;
-
vmp
(13.11.2010, 15:24:11
87.245.155.198
,
пустое
)
Ответ: Понравилось одно сравнение, но работает частично+++
-
dshabrov
(13.11.2010, 16:12:48
84.21.231.242
, 258 байт)
Там надо вычитать не среднее, а нижний предел. Для вычисляемого на каждом шаге среднего выигрыша не дает. А промасштабировать значения, чтобы в 1 байт влезало возможно? Или точности не хватит?
-
vmp
(13.11.2010, 16:18:10
87.245.155.198
,
пустое
)
Ответ: Думаю точности хватит. А как масштабировать - просто привести к uchar?
-
dshabrov
(13.11.2010, 16:20:59
84.21.231.242
,
пустое
)
Ну как 835 запихнуть в uchar? Не влезет. Надо так подбирать диапазон входных значений переменных, чтобы результат и промежуточные значения не вылезали за пределы 0..255 или -128..127.
-
vmp
(13.11.2010, 16:26:38
87.245.155.198
, 185 байт)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 93:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru