Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 19.12.2014, 22:30  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Подскажите более скоростной вариант?

Даже интересно стало.
Во что компилируется, например, это?
Сообщение от whoim Посмотреть сообщение
bit_clear(PORTD, SR_DS);
Реклама:
omercury вне форума  
Непрочитано 19.12.2014, 22:31  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Подскажите более скоростной вариант?

Сообщение от omercury Посмотреть сообщение
Даже интересно стало.
Во что компилируется, например, это?
в си? так макрос глянь
в асме яхз) где посмотреть?
whoim вне форума  
Непрочитано 19.12.2014, 22:43  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Подскажите более скоростной вариант?

Ищи ищи файл .asm или .lst, а в нём соответствующую Сишную команду.
omercury вне форума  
Непрочитано 21.12.2014, 01:20  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Подскажите более скоростной вариант?

какой же там бред, в lst.. мешанина из коней и людей
как оно еще работает?) или так и надо?
Цитата:
for (int8_t k=SR_COUNT-1; k›=0; k--) { //shift registers
for (int8_t i=7; i›=0; i--) { //pins each shift register
if(sr_buff[k*8+i] == 1) set_hi(SR_DS)
3e0: 32 91 ld r19, -Z
3e2: 31 30 cpi r19, 0x01 ; 1
3e4: 11 f4 brne .+4 ; 0x3ea ‹__vector_3+0x216›
3e6: 95 9a sbi 0x12, 5 ; 18
3e8: 01 c0 rjmp .+2 ; 0x3ec ‹__vector_3+0x218›
else set_lo(SR_DS);
3ea: 95 98 cbi 0x12, 5 ; 18
//SR_DS_PORT &= sr_buff[k*8+i];
//clock
set_hi(SR_SH_CP);
3ec: 96 9a sbi 0x12, 6 ; 18
set_lo(SR_SH_CP);
3ee: 96 98 cbi 0x12, 6 ; 18
set_lo(SR_DS); //clear data
set_lo(SR_ST_CP); //latch on
set_lo(SR_ST_CP2); //latch on
whoim вне форума  
Непрочитано 22.12.2014, 01:47  
Bill
Гражданин KAZUS.RU
 
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
Bill на пути к лучшему
По умолчанию Re: Подскажите более скоростной вариант?

Сообщение от whoim Посмотреть сообщение
#define bit_get(p,m) (p & (1 ‹‹ m))
Ясное дело, такая конструкция будет долго выполняться. Здесь же сдвиг на переменное число. Для этого компилятор каждый раз генерирует вызов подпрограммы сдвига на m. Вы зачем себе трудности создаете? Чтобы их с успехом преодолевать? Пишите проще! Я обычно пишу так:
Код:
       i = 8;
       do  {
           if (t & (1‹‹7))   // Ouput MS bit first
                PORTB |= (1‹‹DS);   // Set port bit high
           else
                PORTB &= ~(1‹‹DS);  // Set port bit low
           t ‹‹= 1;                 // Get next bit to output
           }
       while (--i);
Результат практически совладает с вариантом на asm.
Bill вне форума  
Сказали "Спасибо" Bill
whoim (22.12.2014)
Непрочитано 22.12.2014, 01:53  
Bill
Гражданин KAZUS.RU
 
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
Bill на пути к лучшему
По умолчанию Re: Подскажите более скоростной вариант?

Сообщение от omercury Посмотреть сообщение
Даже интересно стало.
Во что компилируется, например, это?
Сообщение от whoim Посмотреть сообщение
bit_clear(PORTD, SR_DS);
Если SR_DS - константа, то
Код:
 cbi PORTD, SR_DS
Или нет?
Bill вне форума  
Сказали "Спасибо" Bill
whoim (22.12.2014)
Непрочитано 22.12.2014, 02:33  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Подскажите более скоростной вариант?

Сообщение от Bill Посмотреть сообщение
Ясное дело, такая конструкция будет долго выполняться. Здесь же сдвиг на переменное число. Для этого компилятор каждый раз генерирует вызов подпрограммы сдвига на m. Вы зачем себе трудности создаете? Чтобы их с успехом преодолевать? Пишите проще! Я обычно пишу так:
Код:
       i = 8;
       do  {
           if (t & (1‹‹7))   // Ouput MS bit first
                PORTB |= (1‹‹DS);   // Set port bit high
           else
                PORTB &= ~(1‹‹DS);  // Set port bit low
           t ‹‹= 1;                 // Get next bit to output
           }
       while (--i);
Результат практически совладает с вариантом на asm.
Что есть переменное число? Зачем мне 7, если мне нужно проходить по всем битам в буфере? Не понял нихрена
whoim вне форума  
Непрочитано 22.12.2014, 07:21  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,907
Сказал спасибо: 2,542
Сказали Спасибо 11,818 раз(а) в 5,924 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Подскажите более скоростной вариант?

Проверка фиксированного бита и сдвиг каждый раз на один разряд. Содержимое байта, конечно, искажается сдвигом.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Сказали "Спасибо" akegor
whoim (22.12.2014)
Непрочитано 22.12.2014, 10:20  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Подскажите более скоростной вариант?

Сообщение от akegor Посмотреть сообщение
Проверка фиксированного бита и сдвиг каждый раз на один разряд. Содержимое байта, конечно, искажается сдвигом.
Понял! Примерно. Ща разберу детально. Мысль ясна. Спасибо!
whoim вне форума  
Непрочитано 22.12.2014, 10:35  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Подскажите более скоростной вариант?

Сообщение от Bill Посмотреть сообщение
Ясное дело, такая конструкция будет долго выполняться. Здесь же сдвиг на переменное число.
Дело то как раз и темное - все зависит от m;
PHP код:
#define bit_get(p,m) (p & (1 ‹‹ m))
bit_get(PORTA,5) - сдвиги на этапе трансляции.
A вот
int m
=5;
bit_get(PORTA,m) - сдвиги на этапе исполнения
Boba_spb вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
собрал термостат, индикация работает некорректно, подскажите intell2000 Микроконтроллеры, АЦП, память и т.д 23 26.06.2009 17:59
Подскажите устройство лазерных светодиодов Sanyo Источники питания и свет 6 03.04.2009 22:16
Подскажите схему линейного усилителя SensorX Аудиотехника 2 31.10.2007 13:35
CodeVision Проблеммы при программе более 50% памяти Andrewg Proteus, KiCAD и другие ECAD 2 07.08.2007 17:20


Часовой пояс GMT +4, время: 18:56.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot