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

 
 
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

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 00:08
Рейтинг@Mail.ru


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