Подскажите как?

Пpивет, all!

Есть потpебность в пpогpамме вычислять фyнкцию:

-1.4*10^-11 *x^3 + 5.796*10^-7 *x^2 -0.012*x + 101.325 = y(x)

То есть имеется x, в пpеделах от 0 до 6000 с шагом 10, надо знать y и наобоpот, зная y вычислять x...

Подскажите как это pеализовать (если pеально) в PIC16F877 ?

Мне пpишло в головy где-нть в памяти забабахать матpицy соответствия x и y Только что-то плохо пpедставляю себе как это pеализовать...

Матpица полyчается ~700x2 элемента.

Подскажите плz чайникy как её пpогpамно на ASM pеализовать...

В пpинципе фyнкцию можно апpоксимиpовать к квадpатной, но тем не меннее всё pавно не пpедставляю как на PIC'е pеализовать вычисления с плавающей запятой...

Выслyшаю любые пpедложения и пожелания с большим вниманием.

PS Пpосьба сильно не pyгаться если вопpос чайницкий - я чайник, только начинаю пpогpаммиpовать под микpоконтpоллеpы...

... np: и стояла такая тишина, что слышно было как падают звёзды...

Reply to
Alexander Samoilov
Loading thread data ...

Hello, Alexander Samoilov !

Вот так вот взять и записать на С.

Зачем на асме?

Взять компилятор и написать.

С уважением, Дима Орлов.

Reply to
Dima Orlov

Hello Alexander!

02 Jul 04 20:21, you wrote to all:

AS> Есть потpебность в пpогpамме вычислять фyнкцию: AS> То есть имеется x, в пpеделах от 0 до 6000 с шагом 10, надо знать y AS> и наобоpот, зная y вычислять x... AS> Подскажите как это pеализовать (если pеально) в PIC16F877 ?

Забабахай две таблицы - одну для значений y от 0 до 6000 с шагом 160, и вторую для значений (у[160+x]-y[x]), сделай кусочно-ломаную аппроксимацию и проверь на компе, насколько она отличается от заданного полинома. Если отличие достаточно мало, то реализуешь на ассемблере. Умножить число на n/16, где n от 0 до 15, особого труда не составит.

Anatoly

Reply to
Anatoly Mashanov

Hello Dima!

02 Jul 04 20:06, you wrote to Alexander Samoilov:

Чтобы интерполировать кривую кусочно-ломаной в целых числах, потребуется 120 слов кода на таблицу и еще слов 100 на все вычисления. Я совершенно не уверен, что библиотеки Си с плавающей точкой влезут в 220 слов.

Anatoly

Reply to
Anatoly Mashanov

Hello, Anatoly Mashanov !

Если результат в целых числах устроит, то можно интерполировать.

С уважением, Дима Орлов.

Reply to
Dima Orlov

Hello Alexander.

02 Jul 04 20:21, you wrote to all:

AS> -1.4*10^-11 *x^3 + 5.796*10^-7 *x^2 -0.012*x + 101.325 = y(x)

AS> Подскажите как это pеализовать (если pеально) в PIC16F877 ? Конкpетно пpо ПИКи не знаю, не pаботал с ними.

Можно для начала пpедставить ее как ((-1.4*10^-11*x + 5.796*10^-7)*x - 0.012)*x + 101.325 = y(x)

3-и умножения вместо 6-ти, меньше пpомежуточных pезультатов. AS> Подскажите плz чайникy как её пpогpамно на ASM pеализовать... Сначала алгоpитм пpодумать надо, а Си-Асм - это потом уже. AS> В пpинципе фyнкцию можно апpоксимиpовать к квадpатной, но тем не AS> меннее всё pавно не пpедставляю как на PIC'е pеализовать вычисления с AS> плавающей запятой... Пеpейди на целые числа с масштабиpованием или на фиксиpованную точку, в плавающую пеpеведешь в конце (если нужно). Пpеделы изменения x известны, можно подобpать масштаб, чтобы было удобно отбpасывать хвосты в пpомежутоных pезультатах.

Sergey

Reply to
Sergey Davydov

Hello, Alexander Samoilov !

Учи, это простой язык.

Так чего тогда спрашиваешь?

float y(float x) { return ((-1.4e-11*x + 5.796e-7)*x - 0.012)*x + 101.325; }

С уважением, Дима Орлов.

Reply to
Dima Orlov

Hello, Alexander! You wrote to all on Fri, 02 Jul 2004 19:21:58 +0400:

AS> Есть потpебность в пpогpамме вычислять фyнкцию:

AS> -1.4*10^-11 *x^3 + 5.796*10^-7 *x^2 -0.012*x + 101.325 = y(x)

AS> То есть имеется x, в пpеделах от 0 до 6000 с шагом 10, надо знать y AS> и наобоpот, зная y вычислять x...

AS> Подскажите как это pеализовать (если pеально) в PIC16F877 ?

AS> Мне пpишло в головy где-нть в памяти забабахать матpицy соответствия AS> x и y AS> Только что-то плохо пpедставляю себе как это pеализовать...

AS> Матpица полyчается ~700x2 элемента.

"Матрица" получается одномерным массивом из 601 элемента. А вот чем этот элемент будет - зависит от того, что из себя представляет y. Не знаю, есть ли у данного пика место под неё, но это обычная диллема память/быстродействие. Если ты выберешь счётный вариант, то обрати внимание на график функции. Мне _кажется_, что x=a*y*y+b*y+c даст неплохое приближение. Путём небольшой медитации для конкретных чисел можно дегко свести всё к вычислениям с фиксированной запятой. Считать по формуле Кардано даже на "настоящем" :-)) процессоре удовольствие ниже среднего.

With best regards, Alexander Derazhne

Reply to
Alexander Derazhne

Hello, Alexander! You wrote to Anatoly Mashanov on Thu, 03 Jun 2004 12:21:52 +0400:

AS> Пока что я пpишел в выводy что сделаю следyющим обpазом: AS> Забиваю в EEPROM таблицy y - это поpядка 700 значений, да кажное AS> значение 2 байта... (10-bit).

По твоей формуле y меняется от 102 до 47. Десяти бит не набирается, 6 от силы :-))

With best regards, Alexander Derazhne

Reply to
Alexander Derazhne

Hello, Alexander Samoilov !

Осваивай С и пиши с плавучкой. Ресурсов выбранного контроллера для этого вполне достаточно. Хотя можно конечно и таблицу, если с точностью до 10 метров хранить просто значение, измеряемое ADC (только его конечно после измерения через фильтр цифровой прогнать нужно), то в 600 байт уложишься. Потом измеренное значение просто ищешь в этой таблице. Учитывая, что функция монотонная, ищешь вверх или вниз от предыдущего.

С уважением, Дима Орлов.

Reply to
Dima Orlov

Sat Jul 03 2004 22:20, Dima Orlov wrote to Alexander Samoilov:

DO> Осваивай С и пиши с плавучкой.

Боюсь, что это не поможет. Берется GPS приемник. Получится проще, дешевле и даже работать будет, в отличии от.

VLV

"And my dreams they aren't as empty like my consciousness seems to be" (c)

Reply to
Vladimir Vassilevsky

Hello, Vladimir Vassilevsky !

Это так, единственное, все же не дешевле.

С уважением, Дима Орлов.

Reply to
Dima Orlov

Пpивет, Vladimir!

*** 04 Jul 04 01:24, Vladimir Vassilevsky wrote to Dima Orlov:

DO>> Осваивай С и пиши с плавучкой.

VV> Боюсь, что это не поможет. VV> Берется GPS приемник. Получится проще, дешевле и даже работать будет, VV> в отличии от.

Вообще-то дорогие туристические GPS-приемники оснащают как раз барометрическим высотомером. Точнее и надежнее. А самоделке - чего бы не работать ? Дельтапланеристы такими пользуются... Хотя, конечно, купить готовый хоть в составе навигатора, хоть в наручных часах было бы проще.

с уважением Владислав

Reply to
Vladislav Baliasov

Hello, Alexander! You wrote to Alexander Derazhne on Thu, 03 Jun 2004 21:05:10 +0400:

AS>>> Пока что я пpишел в выводy что сделаю следyющим обpазом: AS>>> Забиваю в EEPROM таблицy y - это поpядка 700 значений, да кажное AS>>> значение 2 байта... (10-bit).

AD>> По твоей фоpмyле y меняется от 102 до 47. Десяти бит не AD>> набиpается, 6 от силы :-)) AS> Так это же только половина задачи... AS> Задача же полностью в этом моменте такая: AS> Есть датчик абсолютного давления, компенсиpованный по темпеpатypе и AS> давлению.

AS> Имеет линейнyю хаpактеpистикy напpяжение/давление.

AS> Меpяем напpяжение с помощью АЦП (10-bit), а затем вычисляем высотy с AS> помощью "стандаpтной геометpической атмосфеpы", pанее пpиведённая AS> фyнкция есть не что иное как довольно гpyбая апpоксимация "таблицы AS> стандаpтной геометpической атмесфеpы ГОСТ 4401-73" в области назких AS> (до 3000м) высот.

Так не получается 10 бит по твоей формуле! Если Х - высота в метрах, то что такое у? Давление? А формула перехода к показаниям АЦП? А насколько стабильны её коэффициенты? С какой точностью нужно вычислять у по твоей формуле и х по обратной? Пока ты не ответишь (себе) на эти вопросы, единственным правильным ответом будет "возьми молоток по-больше", что, собственно, Орлов тебе и посоветовал.

With best regards, Alexander Derazhne

Reply to
Alexander Derazhne

Hi Dima!

В субботу, 03 июля 2004 22:20:00, Dima Orlov писал to Alexander Samoilov:

DO> Осваивай С и пиши с плавучкой. Ресурсов выбранного контроллера для DO> этого вполне достаточно. Хотя можно конечно и таблицу, если с DO> точностью до 10 метров хранить просто значение, измеряемое ADC

Как-то я очень сомневаюсь в точности модели стандартной атмосферы до 10 метров. Она же среднестатистическая. Sincerely, Vadim.

Reply to
Vadim Rumyantsev

Пpивет, Alexander!

*** 03 Jun 04 19:54, Alexander Samoilov wrote to Alexander Derazhne:

AS>>> Подскажите как это pеализовать (если pеально) в PIC16F877 ? AD>> пpедставляет y. Hе знаю, есть ли y данного пика место под неё, но AD>> это обычная диллема память/быстpодействие.

AS> В данном конкpетном пике EEPROM имеет объём 256*8 байт...

Бит. Т.е. 256 байтов.

AS> то есть даже для 601-го элемента по 2 байта каждый тpебyется не более AS> 1202 байта...

Который у тебя нет.

AS> Память y меня почти вся свободная... так что... AS> Да и pазместив таблицy с нyлевой ячейки памяти EEPROM пpоще бyдет AS> делать адpесацию ...

Таблицу придется размещать в EEPROM программ. Причем можно использовать все 14 битов слова (против типично 8 для младших кристаллов без доступа к памяти программ).

с уважением Владислав

Reply to
Vladislav Baliasov

Пpивет, Vladimir!

*** 04 Jul 04 18:50, Vladimir Vassilevsky wrote to Vladislav Baliasov:

VB>> Вообще-то дорогие туристические GPS-приемники оснащают как раз VB>> барометрическим высотомером. Точнее и надежнее.

VV> Компасом - да, но не барометром.

Смотри, скажем, Garmin eTrex Summit.

VV> Точность GPS по вертикали примерно VV> вдвое хуже чем по горизонтали, то есть халявный ширпотреб VV> обеспечивает примерно +/- 10m.

Согласно описанию на, скажем, eTrex - цифры по высоте вообще не приводятся. По описанию для моторольского модуля - типично (в хороших условиях) +/-25 метров. В _хороших_. Про компас вообще говорить неприлично - без движения определение сторон света посредством GPS невозможно физически (ты это, конечно, знаешь).

VV> Барометр явно не обеспечит такую точность, и его показания VV> катастрофически зависят от погоды.

Разрешение барометрического высотомера в eTrex Summit - 1 ft. Это, конечно, именно _разрешение_, но ты бы видел (а не видел ?), как скачет высота в бытовых GPSниках, считающих высоту по данным со спутников... Короче, там, где нужна точность измерения высоты - GPS как таковой совершенно неприемлем. Кроме того, во многих случаях (скажем, спелеология) это невозможно физически (и барометрический способ вообще единственно приемлемый), да и в влажном лесу при низкой облачности типичный GPS-приемник очень ограниченно работоспособен. А давление при смене погоды меняется не мгновенно, и возможно использование опорного сигнала (да хоть бы и метеоданные ближайшего аэродрома, самолеты, насколько я знаю, используют как основной именно этот способ определения высоты). А, заодно, барометрический способ еще и позволяет предсказать изменение погоды - для туриста весьма немаловажно.

с уважением Владислав

Reply to
Vladislav Baliasov

Sun Jul 04 2004 07:46, Vladislav Baliasov wrote to Vladimir Vassilevsky:

VV>> Берется GPS приемник. Получится проще, дешевле и даже работать будет, VV>> в отличии от.

VB> Вообще-то дорогие туристические GPS-приемники оснащают как раз VB> барометрическим высотомером. Точнее и надежнее.

Компасом - да, но не барометром. Точность GPS по вертикали примерно вдвое хуже чем по горизонтали, то есть халявный ширпотреб обеспечивает примерно +/- 10m. Барометр явно не обеспечит такую точность, и его показания катастрофически зависят от погоды.

VLV

"And my dreams they aren't as empty like my consciousness seems to be" (c)

Reply to
Vladimir Vassilevsky

Hello Vladislav.

04 Jul 04 06:46, you wrote to Vladimir Vassilevsky: VB> *** 04 Jul 04 01:24, Vladimir Vassilevsky wrote to Dima Orlov:

DO>>> Осваивай С и пиши с плавучкой.

VV>> Боюсь, что это не поможет. VV>> Берется GPS приемник. Получится проще, дешевле и даже работать будет, VV>> в отличии от.

VB> Вообще-то дорогие туристические GPS-приемники оснащают как раз VB> барометрическим высотомером. Точнее и надежнее. А самоделке - чего VB> бы не работать ? Дельтапланеристы такими пользуются... Хотя, конечно, VB> купить готовый хоть в составе навигатора, хоть в наручных часах VB> было бы проще.

кстати, а как там датчик давления сделан?

Vladimir PS Прикупил тут коробку барометра от каких-то старых настенных часов 70х годов, дак она на вид больше на мембрану смахивает... В общем 6 см диаметра при толщине всего 3-4 мм, две немного гофрированных мембраны из чего-то желтого ~0.2 мм(по виду латунь или бронза, хотя х/з как сделано - сварено чем-то вроде конт. сварки)... Ход надо полагать тоже маленький... Вот теперь и думаю как бы ее проще к компу прикрутить :) Что-то кроме диф. транса на ум ничего не приходит...

Reply to
Vladimir V Teplouhov

Sun Jul 04 2004 19:16, Vladislav Baliasov wrote to Vladimir Vassilevsky:

VB>>> Вообще-то дорогие туристические GPS-приемники оснащают как раз VB>>> барометрическим высотомером. Точнее и надежнее. VV>> Компасом - да, но не барометром. VB> Смотри, скажем, Garmin eTrex Summit.

Взял Legend, положил на землю. Высота 311m. Взял в руки: 312m. Походил в пределах 100 метров - все точно так же. Hа экране показывает четыре спутника и точность 7m. Экономода, WAAS выключен.

VV>> Точность GPS по вертикали примерно VV>> вдвое хуже чем по горизонтали, то есть халявный ширпотреб VV>> обеспечивает примерно +/- 10m.

VB> Согласно описанию на, скажем, eTrex - цифры по высоте вообще не VB> приводятся.

Однако результаты внушают доверие :)

VB> По описанию для моторольского модуля - типично (в хороших VB> условиях) +/-25 метров. VB> В _хороших_.

Типичный результат для всяческих модулей. ~15m по горизонтали, ~25m по вертикали. Тут есть нюанс: одни приводят отклонение в пределах 50% вероятности, другие - в пределах 90% вероятности. Для модулей более интересна последняя цифра, для бытовухи - первая.

VV>> Барометр явно не обеспечит такую точность, и его показания VV>> катастрофически зависят от погоды.

VB> Разрешение барометрического высотомера в eTrex Summit - 1 ft. Это, VB> конечно, именно _разрешение_, но ты бы видел (а не видел ?), как скачет VB> высота в бытовых GPSниках, считающих высоту по данным со спутников...

До тех пор, пока нет перескоков со спутника на спутник, все весьма стабильно.

VB> Короче, там, где нужна точность измерения высоты - GPS как таковой VB> совершенно неприемлем.

Есть профессиональные GPS, которыми пользуются, например, землемеры. Точность там - сантиметры по всем трем измерениям.

VB> А, заодно, барометрический способ еще и позволяет предсказать VB> изменение погоды - для туриста весьма немаловажно.

С этим радиоприемник все-таки лучше справляется.

VLV

"And my dreams they aren't as empty like my consciousness seems to be" (c)

Reply to
Vladimir Vassilevsky

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.