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

 
 
> SAM3 SPI поменять порядок бит
Aal6
сообщение Jan 22 2013, 16:29
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 2-03-06
Пользователь №: 14 880



Озадачен невозможностью сменить порядок вывод битов по SPI c MSB->LSB наоборот.

Нет какой-либо возможности быстро перекинуть биты в байте без пересчета софтом?

В задаче нужно загружать буфер со сменой направления отображения, порядка 8МБит/с. Усугубляет проблему не умение PDC выдавать данные с декрементом указателя.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ReAl
сообщение Jan 23 2013, 19:19
Сообщение #2


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Если гасить единички по одной (начиная с младшей), то и clz не нужен (это называется «Brian Kernighan's way»):
Код
uint_fast8_t cnt_1(uint32_t val)
{
        uint_fast8_t cnt = 0;
        while (val) {
                ++cnt;
                val &= (val-1);
        }
        return cnt;
}


А вообще нужно запомнить слова Bit twiddling hacks, они хорошо гуглятся. И там целый раздел на подсчёт единичек.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Aal6
сообщение Jan 24 2013, 07:14
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 2-03-06
Пользователь №: 14 880



Спасибо! Я и не знал что есть столько методов.
Да, clz не особо нужен, хотя код с ним будет обладать примерно той же эффективностью на ARM.
Посмотрим, это пока на потом оставил. Если скорости хватит, сделаю расчет через софт или, если останемся в этом кристалле, выделю канал UART-SPI и таймер исключительно под эту задачу и сделаю аппаратный подсчет.

Сообщение отредактировал Aal6 - Jan 24 2013, 07:20
Go to the top of the page
 
+Quote Post



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

 


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


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