Вход
Наше всё
Теги
codebook
无线电组件
Поиск
Опросы
Закон
Суббота
23 ноября
О смысле всего сущего
0xFF
Средства и методы разработки
Мобильная и беспроводная связь
Блошиный рынок
Объявления
Микроконтроллеры
PLD, FPGA, DSP
AVR
PIC
ARM, RISC-V
Технологии
Кибернетика, автоматика, протоколы
Схемы, платы, компоненты
Микроконтроллеры
399550
Топик полностью
fk0
, легенда
(04.04.2013 14:05, просмотров: 399)
ответил
il-2
на
Есть еще один способ размазывания ШИМ - сравнивать с уставкой ОТЗЕРКАЛЕННОЕ побитно значение счетчика. По результатам - почти как Брезенхем или дельта-сигма (а возможно - что то-же самое).
Идея, наверное, интересная. Развернуть биты можно так:
bv_t v_reverse(bv_t v) { v=((v>> 1) & 0x55555555) | ((v&0x55555555)<<1); v=((v>> 2) & 0x33333333) | ((v&0x33333333)<<2); v=((v>> 4) & 0x0f0f0f0f) | ((v&0x0f0f0f0f)<<4); if (sizeof(bv_t)>=2) { v=((v>> 8) & 0x00ff00ff) | ((v&0x00ff00ff)<<8); if (sizeof(bv_t)>=3) { v=((v>>16) & 0x0000ffff) | ((v&0x0000ffff)<<16); } } return v; }
[ZX]
Ответить
На любительских контроллерах это делается одной командой RBIT. Из Си вызывается как unsigned long __RBIT(unsigned long);
-
vmp
(04.04.2013 15:10
)
Ты ещё скажи, что у вас там ещё CLZ считать ведущие или все установленные биты может. А может ли все установленные (их количество) в слове?
-
fk0
(04.04.2013 16:15
)