|
Скорость выполнения кода на atmega640 |
|
|
|
Jul 24 2009, 11:12
|
Частый гость
 
Группа: Участник
Сообщений: 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)) ) { }; } } } }
Причина редактирования: Оформление цитаты исходника.
|
|
|
|
|
 |
Ответов
|
Jul 25 2009, 18:48
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(x736C @ Jul 25 2009, 22:43)  То есть поделить signed long на signed long нельзя? Каким будет результат при отрицательном значении делимого? Не знал этого, спасибо за замечание. Можно, конечно. Просто нет смысла делить, условно говоря, 12345 на 123456. Цитата(Leonmezon @ Jul 25 2009, 22:43)  long long - длиное целое 8 байтовое? ( Если да, то у меня только до 4 байт). Уверены? И double тоже 32-х битный?
|
|
|
|
|
Jul 25 2009, 19:11
|
Частый гость
 
Группа: Участник
Сообщений: 191
Регистрация: 11-02-09
Из: Краснодар
Пользователь №: 44 686

|
Цитата(aaarrr @ Jul 25 2009, 22:48)  Можно, конечно. Просто нет смысла делить, условно говоря, 12345 на 123456.
Уверены? И double тоже 32-х битный? Да; long, float, double - 4 байтовые. Компилятор ICC AVR 7.22 STD. Я често не знаю, но только вроде в IAR есть long long 8 байт. По делению как раз понятно (я еще вчера об этом говорил) 12345/123456= 0 в целочисленном вычеслении.
Сообщение отредактировал Leonmezon - Jul 25 2009, 19:13
|
|
|
|
Сообщений в этой теме
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 aaarrr Деление на 16777215 и умножение на 20000000 эквива... Jul 24 2009, 18:40 Leonmezon Цитата(aaarrr @ Jul 24 2009, 22:40) Делен... Jul 24 2009, 18:58  rezident Цитата(Leonmezon @ Jul 25 2009, 00:58) 2.... Jul 24 2009, 19:02   Leonmezon Цитата(rezident @ Jul 24 2009, 23:02) Еру... Jul 24 2009, 19:10    rezident Цитата(Leonmezon @ Jul 25 2009, 01:10) По... Jul 24 2009, 19:25     Leonmezon Цитата(rezident @ Jul 24 2009, 23:25) 150... Jul 24 2009, 19:52 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  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
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|