реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> О производительности микроконтроллеров, ARM, AVR, Pic
A. Fig Lee
сообщение Dec 28 2008, 23:52
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Пишу здесь, так как ориентируюсь на AVR.

Хочу померять напряжение переменного тока (сети) без выпрямления.
Можно применить RMS, как мне посоветовали или другой способ -
в одном и том же полупериоде меряем наряжение 2 раза, с изветным углом сдвига
между ними. Зная угол и результаты измерений, можно посчитать
амплитуду.
Не вдаваясь в подробности - формула для расчета:

A = sqr( (x2 - (x1*cos(d))/sin(d))**2 + x1**2)

где

А - искомая амплитуда
х2 - семпл 2
х1 - семпл 1
d - известный угол между первым и вторым семплом
**2 - возведение в квадрат
sqr - корень квадратный


зарядил следующий код (в цикле):

double calc(double x1, double x2, double x3, double x4) {
double a1 = x1 * x3;
double a2 = x2 - a1;
double a3 = a2/x4;
double a4 = sq(a3);
double a5 = sq(x1);
double a6 = a4 + a5;
double a7 = sqrt(a6);
return a7;
}

проверил на симуляторах IAR/ARM7TDMI - результат примерно 20000 вычислений в секунду при
расчетной частоте 60 MHz.
HTech-MPLab (PIC16F870)- при 20 MHz - около 5.6 миллисек на операцию.
AVR Studio - gcc - при симуляции на 4 MHz - 2.5 millisec на операцию (Атмега 168)
на живом Атмега 168 (Ардуино) - 16 MHz получилось 20000 операций - 2.4 секунды


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
rezident
сообщение Dec 29 2008, 00:05
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



На вашем месте я бы привел все результаты к каким-то одним единицам измерения. Либо кол-во вычислений функции в секунду, либо период вчисления функции.
А вообще, о чем этот топик-то? cranky.gif Прелюдия к очередной войне PIC vs AVR (с ARM сравнивать его немного странно) или сравнение компиляторов или обсуждение способа измерения напряжения RMS или что?
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Dec 29 2008, 00:14
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(rezident @ Dec 28 2008, 19:05) *
На вашем месте я бы привел все результаты к каким-то одним единицам измерения. Либо кол-во вычислений функции в секунду, либо период вчисления функции.
А вообще, о чем этот топик-то? cranky.gif Прелюдия к очередной войне PIC vs AVR (с ARM сравнивать его немного странно) или сравнение компиляторов или обсуждение способа измерения напряжения RMS или что?


1. Лень.
2. Информация к размышлению, чтоб знать какой контроллер брать для задачи.
(форум - для начинающих).

Я например, тоже думал какой - взять контроллер чтоб потянул мп3 декодирование.

Кстати, на Атмеле скомпилированная программа была поряка 4 килобайта (AVR-Studio).


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
Harbour
сообщение Dec 29 2008, 07:39
Сообщение #4


Местами Гуру
*****

Группа: Validating
Сообщений: 1 103
Регистрация: 5-12-04
Пользователь №: 1 323



кое-что можно почерпнуть отседа - http://mcu.caxapa.ru/benchmarks
Go to the top of the page
 
+Quote Post
defunct
сообщение Dec 29 2008, 15:43
Сообщение #5


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(A. Fig Lee @ Dec 29 2008, 01:52) *
на живом Атмега 168 (Ардуино) - 16 MHz получилось 20000 операций - 2.4 секунды

2.4 милисекунды? или каких операций - то?
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Dec 31 2008, 03:25
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(defunct @ Dec 29 2008, 10:43) *
2.4 милисекунды? или каких операций - то?


СЕКУНДЫ! не милли.
20000 вызовов функций calc() описаной здесь же.
Кстати, стоимость вызова подсчета одного косинуса/синуса/тангенса примерно равна
стоимости вызова calc()


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
MAXvaLL
сообщение Dec 31 2008, 17:11
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639



Цитата(A. Fig Lee @ Dec 29 2008, 02:52) *
Пишу здесь, так как ориентируюсь на AVR.

Хочу померять напряжение переменного тока (сети) без выпрямления.
Можно применить RMS, как мне посоветовали или другой способ -
.....
A = sqr( (x2 - (x1*cos(d))/sin(d))**2 + x1**2)

Зачем так сложно?!
А померить !1! раз за период в максимуме (минимуме) никак? (всеравно вы для вашего способа должны разность фаз измерять!) Так и измеряйте на 90 градусов. Причем т.к. вершина достаточно пологая, то точность этих самых 90 градусов далеко не критична!
Фиксируете момент перехода через 0, пускаете таймер, и по событию от таймера автоматом пускается АЦП (autotriggered), ну или вручную в обработчике прерывания.
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Dec 31 2008, 22:42
Сообщение #8


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(MAXvaLL @ Dec 31 2008, 12:11) *
Зачем так сложно?!
А померить !1! раз за период в максимуме (минимуме) никак? (всеравно вы для вашего способа должны разность фаз измерять!) Так и измеряйте на 90 градусов. Причем т.к. вершина достаточно пологая, то точность этих самых 90 градусов далеко не критична!
Фиксируете момент перехода через 0, пускаете таймер, и по событию от таймера автоматом пускается АЦП (autotriggered), ну или вручную в обработчике прерывания.


можно и так. пожалуй - простейший вариант из 3-х.


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Jan 1 2009, 00:17
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(A. Fig Lee @ Dec 31 2008, 17:42) *
можно и так. пожалуй - простейший вариант из 3-х.

точность конечно будет хромать.. так как момент перехода через 0 тоже не мгновенен.


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
ARV
сообщение Jan 1 2009, 11:01
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



в сети практически никогда не бывает чистой синусоиды (я имею ввиду реальную сеть конечного потребителя). а если брать промышленную сеть - то и подавно. мерить напряжение по одной или нескольким точкам - это означает, получать результат "грубо приблизительный". если нужно действительно измерять, то либо применять RMS-преобразовательные микросхемы, либо делать на основе интегрирования. если учесть, что и частота сети далеко не всегда ровно 50 гц (ее порой умышленно снижают до предельно допустимого уровня), то получение точных результатов - не очень тривиальная задача


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
MAXvaLL
сообщение Jan 2 2009, 17:43
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639



Цитата(A. Fig Lee @ Jan 1 2009, 03:17) *
точность конечно будет хромать.. так как момент перехода через 0 тоже не мгновенен.

Знаю человека который так решал эту задачу, и ничего у него не хромало smile.gif

Да, не мгновенено, но т.к. напряжение по амплитуде около 300В, то переход от "нуля" к "еденице" на ноге МК будет весьма быстр. Да и синус в окрестности нуля имеет большую крутизну.

И еще раз: вершина, ну очень пологая! Смоделируйте, и увидете допустимую ошибку по фазе, при заданной допустимой ошибке по амплитуде.

PS напряжение фазы подается напрямую на ногу МК через 2 резистора (не чипы!) по мегаому.
+ ставите диоды быстрые для защиты.

Цитата(ARV @ Jan 1 2009, 14:01) *
в сети практически никогда не бывает чистой синусоиды (я имею ввиду реальную сеть конечного потребителя). а если брать промышленную сеть - то и подавно. мерить напряжение по одной или нескольким точкам - это означает, получать результат "грубо приблизительный". если нужно действительно измерять, то либо применять RMS-преобразовательные микросхемы, либо делать на основе интегрирования. если учесть, что и частота сети далеко не всегда ровно 50 гц (ее порой умышленно снижают до предельно допустимого уровня), то получение точных результатов - не очень тривиальная задача

Частоту можно измерять программно и отслеживать ее изменения.
Никто и не говорит, что надо брать ОДНОКРАТНОЕ измерение!
Понятное дело, что каким-то образом результат надо фильтровать, будь то простое усреднение, или полноценная цифровая фильтрация. Т.е. строим оценку на основе N простых измерений.
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Jan 6 2009, 03:50
Сообщение #12


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Ето - да, можно такие методы. Если мерять только напряжение, если же и сдвиг фаз между током,
то лучше как я сказал в первом методе.
В один и тот же момент меряется и ток и напряжение.


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
repairDV
сообщение Jan 6 2009, 04:40
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 578
Регистрация: 7-11-06
Из: Хабаровск
Пользователь №: 22 044



Производительность микроконтроллера - это категория довольно шаткая. Ибо назначение его - принять сигнал от АЦП или с GPIO и его обработать. Предположим, вы используете AVR и принимаете на GPIO сигнал от компаратора, который, в свою очередь, настроен на сеть 220 В. Вся сетевая помеха воспринимается микроконтроллером как полезный сигнал и у вас возникает необходимость программно от этого защищаться. В ту же схему вы вставляете старый 12-тактовый 51-контроллер и он, вследствие своей тихоходности, без всякой фильтрации совершенно точно воспринимает сигнал. Его самого-то можно, как фильтр, использовать. Так что - смотря какие задачи у вас основные. Если вам нужно информацию брать откуда-то со стороны и её обрабатывать, тогда точно нужен высокопроизводительный проц, а если он сам принимает аналоговый сигнал - какой толк от производительности? Тут другой критерий - стабильность. У однотактовых микроконтроллеров она конкретно хуже.


--------------------
Маленький нанайца. А-а. А-а. Оморочком плыл. Маленький проточка. Осетра ловил.
Go to the top of the page
 
+Quote Post
Proton
сообщение Jan 6 2009, 09:36
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 185
Регистрация: 3-08-05
Из: Новосибирск
Пользователь №: 7 334



Цитата(repairDV @ Jan 6 2009, 10:40) *
Производительность микроконтроллера - это категория довольно шаткая. Ибо назначение его - принять сигнал от АЦП или с GPIO и его обработать. Предположим, вы используете AVR и принимаете на GPIO сигнал от компаратора, который, в свою очередь, настроен на сеть 220 В. Вся сетевая помеха воспринимается микроконтроллером как полезный сигнал и у вас возникает необходимость программно от этого защищаться. В ту же схему вы вставляете старый 12-тактовый 51-контроллер и он, вследствие своей тихоходности, без всякой фильтрации совершенно точно воспринимает сигнал. Его самого-то можно, как фильтр, использовать.
Совершенно неверное утверждение, скорость выборки АЦП можно настраивать.
Цитата(repairDV @ Jan 6 2009, 10:40) *
Так что - смотря какие задачи у вас основные. Если вам нужно информацию брать откуда-то со стороны и её обрабатывать, тогда точно нужен высокопроизводительный проц, а если он сам принимает аналоговый сигнал - какой толк от производительности?
Как минимум иметь возможность всю программу реализовать на Си.
Цитата(repairDV @ Jan 6 2009, 10:40) *
Тут другой критерий - стабильность. У однотактовых микроконтроллеров она конкретно хуже.
Странное заявление, всё зависит от прямоты рук. МК NEC и Renesas позиционирующиеся как особонадёжные имеют RISC систему комманд, инструкции исполняются в основном за 1 такт. У меня устройства на основе ARM, AVR проходили испытания ЭМС на категорию А, по самым жестким нормам(промышленные условия).


--------------------
Всяк хорошая мысля к нам приходит опосля.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jan 7 2009, 18:12
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(repairDV @ Jan 6 2009, 08:40) *
Тут другой критерий - стабильность. У однотактовых микроконтроллеров она конкретно хуже.

Не то что странное, а вообще непонятное заявление. Если речь идёт о надёжности исполнения команд, то есть о стабильности работы ядра, то я думаю - строго наоборот.
Go to the top of the page
 
+Quote Post
MAXvaLL
сообщение Jan 12 2009, 21:43
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639



Цитата(repairDV @ Jan 6 2009, 07:40) *
В ту же схему вы вставляете старый 12-тактовый 51-контроллер и он, вследствие своей тихоходности, без всякой фильтрации совершенно точно воспринимает сигнал. Его самого-то можно, как фильтр, использовать.

Если честно, то для меня это откровение!
Вы думаете что если частота выборок мала, то ВЧ помехи фильтруются сами сабой? Обоснуйте!
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jan 13 2009, 18:52
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Да это не подлежит обоснованию.
Это что-то из разряда "гашения дребезга контактов, за сёт уменьшения частоты опроса". Объективно - эффект уменьшается, но на самом деле проблема не снимается, а маскируется.

Реально так. И на мой взгляд это даже обсуждению не подлежит. Чем более мощный проц, тем более стабильную и защищённую прогу можно создать. Тем более сложную обработку сигнала можно обеспечить. Именно по этому и идёт развитие процессоров в направлении увеличения вычислительной мощности. Сдерживающих фактора только 2. Энергоёмкость и стоимость.
Go to the top of the page
 
+Quote Post
MAXvaLL
сообщение Jan 14 2009, 19:41
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639



Цитата(SasaVitebsk @ Jan 13 2009, 21:52) *
Да это не подлежит обоснованию.
Это что-то из разряда "гашения дребезга контактов, за сёт уменьшения частоты опроса". Объективно - эффект уменьшается, но на самом деле проблема не снимается, а маскируется.

Ну как-то странно... Ответ из серии "это так, потому, негры черные". Хоть на пальцах объясните, я же не прошу строгих мат. выводов biggrin.gif

Дребезг контактов ИМХО тут не причем, т.к. тут выигрыш получается вследствии того, что дребезг действует НЕ НЕПРЕРЫВНО, а "пачками" - начиная с момента переключения еще какое-то определенное время, а потом утихает, и велика вероятность что отсчет попадет в "чистую зону".

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

Если помеха далека от белого шума, ну, пусть даже чисто сетевая - синус, то тут картина та же.
Если частота выборок не кратна частоте помехи, и/или фаза не синхронизированна с моментом перехода через "0", то вероятность попасть в "0" исчезающе мала.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jan 14 2009, 21:17
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Вы меня не поняли. Я вас полностью поддерживаю. Просто автор того топика путает мягкое с тёплым. Помеховый сигнал, как и дребезг клавиш нельзя устранить снижением частоты выборок.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 11:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01541 секунд с 7
ELECTRONIX ©2004-2016