Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Подскажите как 8-bit MCU обрабатывать длинные последовательности и выбирать определённые данные по маске?
Отправлено
ZoltriX (72.167.183.33) 12 января 2011, г. 23:42
Из микросхемы в последовательном интерфейсе поступает информация, всего 256 бит.
Примем условную нумерацию принятых битов от 1 до 256 - это их последовательный адрес = А.
Нужно в памяти объявить массив где хранить эту информацию и выбирать её по маске.
Раз у контроллера организация памяти 8-битная, то объявим массив
unsigned char DATA_Buffer[32];
Получим занятые 32 Байта в которые последовательно записаны эти 256 бит. Как последовательно записать этот массив - это не сложно и очевидно.
Но основная задача, как выбрать из него определённое количество бит (N), начинающиеся с определённого адреса (А) и передать их в 8-битную величину OUT??
Например хочу в OUT выбрать N = 4 бита с номерами A = 15,16,17,18 или
N = 6 битов с номерами А = 7, 8, 9, 10, 11, 12.
Видно что номер адреса может быть любой и не кратен 8, то есть часть битов может быть с одной восьмиразрадной ячейки памяти, часть с другой.
Как работать с таким длинным масивом???
Или есть смысл обьявить массив unsigned bit DATA_Buffer[256]; ??
Натолкните на умную мысль, какие есть воображения??
Составить ответ | Вернуться на конференцию
Ответы
- Если правильно понял задачу, то вот. Вроде недавно давал здесь >> - VasilyS (13.01.2011, 08:26:36 80.92.96.25, 522 байт)
- Человек всю жизнь светодиодиками мигал. И теперь обосраццо, но слепить на МК. Давай-давай, изголяйся в стиле "на кладбище нищий дрищет", тормоз драный. Ну лодно дешёвый дсп, но когда люди верилог учили, ты груши околачивал и перхоть из под залупы выковыривал. - druzhin (13.01.2011, 03:44:16 95.165.0.181, пустое)
- Вопрос: а поступающий массив данных "проглатывать" весь целиком требуется? Т.е. маска задаётся... лишь ПОСЛЕ какого-то анализа контроллером принятого массива целиком (256 бит)? - Макаров (13.01.2011, 01:09:53 109.61.145.33, пустое)
- Младшие spartan-3 вообще копейки стоят. Я полдесятка спартан-3-200-pq208 вообще подарить могу. На контроллерах мир не кончается. - druzhin (13.01.2011, 00:45:14 95.165.0.181, пустое)
- Сначала выбрать 16-битное слово tempword=DataBuffer[bitaddress/16] - в нем будут ВСЕ нужные биты, а потом сдвинуть это слово на 8 минус остаток от деления битового адреса на 8: OUT=(char)(tempword >> (8-bitaddress%8)) - MBedder (13.01.2011, 00:26:57 80.92.96.19, пустое)
- битовые извращения, ты че радар делаешь? кто мешает сделать массив из 256 байт чтоб на каждый бит свой байт? - колян безпарольный (12.01.2011, 23:50:58 193.200.150.137, пустое)