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

 
 
> Скорость выполнения кода на atmega640
Leonmezon
сообщение Jul 24 2009, 11:12
Сообщение #1


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

Группа: Участник
Сообщений: 191
Регистрация: 11-02-09
Из: Краснодар
Пользователь №: 44 686



Просьба помочь с функцией отправки байт по RS232 от atmega640 (сама функция полностью работает, но необходимо ускорить ее выполнения (на ассемблер перейти не могу - его не знаю).
// Функция передачи данных на ЭВМ по RS232 (масивы B1, B2 - создаю в ОЗУ, передаю по переменно взависимости от флагов. перед массив идут 5 0хF0 - заголовок.
Код
void RS232(void)
{
unsigned int i, j;
unsigned char data[4];
signed long *p;
p=(signed long*)data;
flag_BUF=0;
if (flag_B2==1)
{
  UDR0 = 0xF0;
  while ( !( UCSR0A & (1<<UDRE0)) ) { };
  UDR0 = 0xF0;
  while ( !( UCSR0A & (1<<UDRE0)) ) { };
  UDR0 = 0xF0;
  while ( !( UCSR0A & (1<<UDRE0)) ) { };
  UDR0 = 0xF0;
  while ( !( UCSR0A & (1<<UDRE0)) ) { };
  UDR0 = 0xF0;
  while ( !( UCSR0A & (1<<UDRE0)) ) { };
  // Преобразуем signed long B1 и в ЭВМ
     for(i=0; i<600; i++)
     {
        *p=B1[i];
         for (j=0; j<4; j++)
           {
              UDR0 = data[j];
              while ( !( UCSR0A & (1<<UDRE0)) ) { };
           }
     }
}
else
{
  UDR0 = 0xF0;
  while ( !( UCSR0A & (1<<UDRE0)) ) { };
  UDR0 = 0xF0;
  while ( !( UCSR0A & (1<<UDRE0)) ) { };
  UDR0 = 0xF0;
  while ( !( UCSR0A & (1<<UDRE0)) ) { };
  UDR0 = 0xF0;
  while ( !( UCSR0A & (1<<UDRE0)) ) { };
  UDR0 = 0xF0;
  while ( !( UCSR0A & (1<<UDRE0)) ) { };
// Преобразуем signed long B2 и в ЭВМ
    for(i=0; i<600; i++)
     {
        *p=B2[i];
         for (j=0; j<4; j++)
           {
              UDR0 = data[j];
              while ( !( UCSR0A & (1<<UDRE0)) ) { };
           }
     }      
}
}
Причина редактирования: Оформление цитаты исходника.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Jul 24 2009, 18:40
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Деление на 16777215 и умножение на 20000000 эквивалентно умножению 1.1921. В целых числах делается умножением и сдвигом.
Коэффициенты пересчитайте отдельно.
Go to the top of the page
 
+Quote Post
Leonmezon
сообщение Jul 24 2009, 18:58
Сообщение #3


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

Группа: Участник
Сообщений: 191
Регистрация: 11-02-09
Из: Краснодар
Пользователь №: 44 686



Цитата(aaarrr @ Jul 24 2009, 22:40) *
Деление на 16777215 и умножение на 20000000 эквивалентно умножению 1.1921. В целых числах делается умножением и сдвигом.
Коэффициенты пересчитайте отдельно.

1. Для меня это сложно! Умножать на 1,1921 со сдвигом. (точнее правильно с масштабом 1,077 умножить надо на К=1,283884124987371265135482855766 чтобы использовать уменьшению формулу:
rez=(rez*К)-107700000;

2. Точность необходима полная - все 24 разряда.
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 24 2009, 19:02
Сообщение #4


Гуру
******

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



Цитата(Leonmezon @ Jul 25 2009, 00:58) *
2. Точность необходима полная - все 24 разряда.
Ерунду написали. АЦП измеряет напряжение. Напряжение принято выражать в Вольтах. С какой относительной погрешностью (в процентах) и в каком диапазоне напряжений (в Вольтах) вам нужно проводить измерения?
Go to the top of the page
 
+Quote Post
Leonmezon
сообщение Jul 24 2009, 19:10
Сообщение #5


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

Группа: Участник
Сообщений: 191
Регистрация: 11-02-09
Из: Краснодар
Пользователь №: 44 686



Цитата(rezident @ Jul 24 2009, 23:02) *
Ерунду написали. АЦП измеряет напряжение. Напряжение принято выражать в Вольтах. С какой относительной погрешностью (в процентах) и в каком диапазоне напряжений (в Вольтах) вам нужно проводить измерения?

Повторюсь - 24 разряда АЦП или +- 10 В с максимальной точностью что дает АЦП (по заявленным характеристикам без ухищрений +- 150 мкВ).
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 24 2009, 19:25
Сообщение #6


Гуру
******

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



Цитата(Leonmezon @ Jul 25 2009, 01:10) *
Повторюсь - 24 разряда АЦП или +- 10 В с максимальной точностью что дает АЦП (по заявленным характеристикам без ухищрений +- 150 мкВ).
150мкВ при опоре 2,5В (или 1,25В?) это уже никак не "все 24 разряда". Плюс потеря точности на делителе/преобразователе, который приводит диапазон -10В...+10В ко входному 2,5В(1,25В). В результате относительная точность измерения входного напряжения скорее всего не лучше 0,01%. Но вы конечно же можете продолжать использовать "все 24-разряда" для вычислений. laughing.gif
Go to the top of the page
 
+Quote Post
Leonmezon
сообщение Jul 24 2009, 19:52
Сообщение #7


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

Группа: Участник
Сообщений: 191
Регистрация: 11-02-09
Из: Краснодар
Пользователь №: 44 686



Цитата(rezident @ Jul 24 2009, 23:25) *
150мкВ при опоре 2,5В (или 1,25В?) это уже никак не "все 24 разряда". Плюс потеря точности на делителе/преобразователе, который приводит диапазон -10В...+10В ко входному 2,5В(1,25В). В результате относительная точность измерения входного напряжения скорее всего не лучше 0,01%. Но вы конечно же можете продолжать использовать "все 24-разряда" для вычислений. laughing.gif

Вы не правы! Для начала посмотрите даташит на АЦП (AD7732) где при ИОН 2,5 В за счет внутренних резисторов !!!!!!! (выполненых с точность не менее 0.006 %) и получаеться заявленная мною неустойчивость, так что реально необходимы все разряды АЦП без округления.
Между прочим - я просил код помочь оптимизировать на быстродействие - а не рассказыват о точности АЦП - в любом случае Ваши знания не точнее информации из даташита!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Leonmezon   Скорость выполнения кода на atmega640   Jul 24 2009, 11:12
- - Непомнящий Евгений   А зачем вам ускорять скорость ее выполнения? Какая...   Jul 24 2009, 11:24
|- - Leonmezon   Цитата(Непомнящий Евгений @ Jul 24 2009, 15...   Jul 24 2009, 14:17
|- - zltigo   Цитата(Leonmezon @ Jul 24 2009, 17:17) 2....   Jul 24 2009, 14:27
- - aaarrr   Переведите работу на прерывания - все равно, на че...   Jul 24 2009, 11:38
- - Непомнящий Евгений   я что-то не пойму. Вы не успеваете отправлять со с...   Jul 24 2009, 14:30
|- - zltigo   Цитата(Непомнящий Евгений @ Jul 24 2009, 17...   Jul 24 2009, 14:37
- - Палыч   Цитата(Leonmezon @ Jul 24 2009, 14:12) .....   Jul 24 2009, 15:05
- - Leonmezon   Перерыва в передачи байтов нет (данные принимаются...   Jul 24 2009, 15:52
|- - MrYuran   Цитата(Leonmezon @ Jul 24 2009, 19:52) фи...   Jul 24 2009, 16:03
- - aaarrr   Оптимизацию советую начать отсюда: КодU=(...   Jul 24 2009, 15:59
|- - Leonmezon   Цитата(aaarrr @ Jul 24 2009, 19:59) Оптим...   Jul 24 2009, 16:12
|- - aaarrr   Цитата(Leonmezon @ Jul 24 2009, 20:12) А ...   Jul 24 2009, 16:16
|- - MrYuran   Цитата(Leonmezon @ Jul 24 2009, 20:12) А ...   Jul 24 2009, 16:24
|- - Leonmezon   Цитата(MrYuran @ Jul 24 2009, 20:24) U=((...   Jul 24 2009, 17:02
|- - aaarrr   Цитата(Leonmezon @ Jul 24 2009, 21:02) Пр...   Jul 24 2009, 17:22
|- - Leonmezon   Цитата(aaarrr @ Jul 24 2009, 21:22) Вы ог...   Jul 24 2009, 17:44
- - aaarrr   Да не нужно заниматься ерундой и делить на 1677721...   Jul 24 2009, 18:05
|- - Leonmezon   Цитата(aaarrr @ Jul 24 2009, 22:05) Да не...   Jul 24 2009, 18:14
|- - rezident   Цитата(Leonmezon @ Jul 25 2009, 00:14) Ка...   Jul 24 2009, 18:41
- - Kuzmi4   2 Leonmezon - откройте секрет - что вы там такое...   Jul 24 2009, 21:11
- - mdmitry   На семинаре AD по АЦП специалисты компании утвержд...   Jul 24 2009, 21:44
- - x736C   Цена деления 1,2 мкВ при точности ±150 мкВ.. К...   Jul 25 2009, 03:25
- - Leonmezon   Если вот так записать код, насколько будет быстрее...   Jul 25 2009, 16:24
|- - defunct   Цитата(Leonmezon @ Jul 25 2009, 19:24) Ес...   Jul 29 2009, 00:18
- - x736C   Я написал просто деление. Дальше в скобках уточнил...   Jul 25 2009, 16:54
|- - Leonmezon   Цитата(x736C @ Jul 25 2009, 20:48) Я напи...   Jul 25 2009, 17:01
|- - x736C   1. Как оцениваете время выполнения функции? Симуля...   Jul 25 2009, 17:28
|- - Leonmezon   Цитата(x736C @ Jul 25 2009, 21:28) 1. Как...   Jul 25 2009, 18:19
|- - aaarrr   Цитата(x736C @ Jul 25 2009, 21:28) 2. Рез...   Jul 25 2009, 18:23
|- - x736C   Цитата(aaarrr @ Jul 25 2009, 22:23) Не бу...   Jul 25 2009, 18:43
|- - Leonmezon   long long - длиное целое 8 байтовое? ( Если да,...   Jul 25 2009, 18:43
- - aaarrr   Цитата(x736C @ Jul 25 2009, 22:43) То ест...   Jul 25 2009, 18:48
|- - Leonmezon   Цитата(aaarrr @ Jul 25 2009, 22:48) Можно...   Jul 25 2009, 19:11
|- - x736C   Цитата(Leonmezon @ Jul 25 2009, 23:11) По...   Jul 25 2009, 19:24
|- - Leonmezon   Цитата(x736C @ Jul 25 2009, 23:24) Понял,...   Jul 25 2009, 19:41
- - x736C   Вы сначала написали, что результат не будет коррек...   Jul 25 2009, 19:02
- - aaarrr   Цитата(x736C @ Jul 25 2009, 23:24) Такая ...   Jul 25 2009, 19:44
|- - Leonmezon   Цитата(aaarrr @ Jul 25 2009, 23:44) Дык м...   Jul 25 2009, 20:21
- - x736C   Понятно. Запутался слегка. Из Kd можно убрать лиш...   Jul 25 2009, 20:02
- - x736C   Понятно. Это как раз то, чего я не мог понять в ди...   Jul 25 2009, 20:45
|- - Leonmezon   Цитата(x736C @ Jul 26 2009, 00:45) Понятн...   Jul 27 2009, 10:45
|- - aaarrr   Цитата(Leonmezon @ Jul 27 2009, 14:45) Вр...   Jul 27 2009, 13:07
|- - Leonmezon   Цитата(aaarrr @ Jul 27 2009, 17:07) А зач...   Jul 27 2009, 16:18
|- - rezident   Цитата(Leonmezon @ Jul 27 2009, 22:18) Во...   Jul 27 2009, 17:11
||- - Leonmezon   Цитата(rezident @ Jul 27 2009, 21:11) А в...   Jul 27 2009, 17:39
||- - rezident   Цитата(Leonmezon @ Jul 27 2009, 23:39) 3....   Jul 28 2009, 16:01
||- - Leonmezon   Цитата(rezident @ Jul 28 2009, 20:01) Есл...   Jul 28 2009, 16:24
||- - aaarrr   Цитата(Leonmezon @ Jul 28 2009, 20:24) Лу...   Jul 28 2009, 16:26
||- - Leonmezon   Цитата(aaarrr @ Jul 28 2009, 20:26) Выбро...   Jul 28 2009, 16:39
|- - aaarrr   Цитата(Leonmezon @ Jul 27 2009, 20:18) вп...   Jul 27 2009, 18:01
|- - Leonmezon   Цитата(aaarrr @ Jul 27 2009, 22:01) Вам д...   Jul 27 2009, 20:12
|- - aaarrr   Цитата(Leonmezon @ Jul 28 2009, 00:12) И ...   Jul 27 2009, 20:15
|- - Leonmezon   Цитата(aaarrr @ Jul 28 2009, 00:15) По ср...   Jul 27 2009, 20:19
|- - aaarrr   Цитата(Leonmezon @ Jul 28 2009, 00:19) т....   Jul 27 2009, 20:26
|- - Leonmezon   Цитата(aaarrr @ Jul 28 2009, 00:26) По ср...   Jul 27 2009, 20:54
|- - aaarrr   Цитата(Leonmezon @ Jul 28 2009, 00:54) Не...   Jul 27 2009, 20:58
- - aaarrr   А может, взять нормальные средства (можно и беспла...   Jul 28 2009, 16:47
|- - Leonmezon   Цитата(aaarrr @ Jul 28 2009, 20:47) А мож...   Jul 28 2009, 16:57
|- - aaarrr   Цитата(Leonmezon @ Jul 28 2009, 20:57) AV...   Jul 28 2009, 17:07
|- - Leonmezon   Цитата(aaarrr @ Jul 28 2009, 21:07) Помен...   Jul 28 2009, 17:35
- - Rst7   ЦитатаНа AVR и ICC свет клином не сошелся, как это...   Jul 28 2009, 17:14
- - aaarrr   Цитата(Rst7 @ Jul 28 2009, 21:14) Кстати,...   Jul 28 2009, 23:47


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

 


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


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