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

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

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

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

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

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


 
Опции темы
Непрочитано 26.08.2013, 18:12  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию "Выдрать" из 14 бит значение

Понаплодил я тем по одной задаче.. но все таки лучше разделять вопросы)
Итак, помогите красиво преобразовать два байта, в которых используются 14 бит, в правильное значение.
Это связано с одним хитрожопым протоколом, который так экономит байтики.

Итак, два значения. LS Length используется полностью - 8 бит. MS Length используется частично:



Я так понимаю, нужно при преобразовании просто обнулить эти два бита, которые мне не нужны и далее складывать из HI и LO как обычно?
Либо сдвинуть влево два раза MS Length с замещением нулями 0 и 1 бита?
Реклама:
whoim вне форума  
Непрочитано 26.08.2013, 18:30  
jump
Почётный гражданин KAZUS.RU
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,981
Сказал спасибо: 0
Сказали Спасибо 4,939 раз(а) в 2,369 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: "Выдрать" из 14 бит значение

whoim,
а практикой гармонию поверить?
замаскировать (сложить с 03F) и дело в конце, т.е. далее объединяем в 16битное, два 8битных (ст.+мл.)
jump вне форума  
Сказали "Спасибо" jump
whoim (26.08.2013)
Непрочитано 26.08.2013, 18:31  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: "Выдрать" из 14 бит значение

jump, я конечно неглупый парень, но неопытный в том что касается преобразований hex в привычный десятичный на лету, в голове)
Нет ли возможности обрисовать сей процесс чуть более явно, для таких как я?
Благодарствую!
whoim вне форума  
Непрочитано 26.08.2013, 18:32  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: "Выдрать" из 14 бит значение

Ага, чуть включив мозг, пришел к выводу - что это первый из предположенных мною вариантов)
whoim вне форума  
Непрочитано 26.08.2013, 18:33  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: "Выдрать" из 14 бит значение

Если байты уже лежат в нужном порядке, то достаточно обнулить старшие два бита, если же они вразнобой, то да - складывать, но со сдвигом старшего на 8 бит.
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Сказали "Спасибо" tempora
whoim (26.08.2013)
Непрочитано 26.08.2013, 18:35  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: "Выдрать" из 14 бит значение

tempora, лежат в буфере - сначала LS, потом этот, кастрированный.. То есть достаточно обнулить (предварительно сделав выводы по тем битам, они же зачем то нужны) и прочитать как uint16?
ясно!
пока тренируюсь на дельфях, чтобы расковырять протокол..
whoim вне форума  
Непрочитано 26.08.2013, 18:48  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: "Выдрать" из 14 бит значение

Сообщение от whoim Посмотреть сообщение
То есть достаточно обнулить (предварительно сделав выводы по тем битам, они же зачем то нужны) и прочитать как uint16? ясно!
Боюсь, не до конца Вам ясно. Если у проца старший байт - первый, то не прокатит, так как в буфере первый как раз-таки младший.
В общем, раз Вы скачете между процами, то лучше пишите как сумму двух независимых байт, чтобы избежать зависимости от порядка байт в процах.
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Сказали "Спасибо" tempora
whoim (26.08.2013)
Непрочитано 26.08.2013, 19:17  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: "Выдрать" из 14 бит значение

Сообщение от whoim Посмотреть сообщение
Нет ли возможности обрисовать сей процесс чуть более явно, для таких как я?
whoim, а обрисовать свой процесс чуть более явно можете. А то ЧиЧас нафигачим Вам процессов в коде ASM для I8086 - нет проблем. Когда же наконец научимся качественно оформлять темы. Начнем сначала:
1. Платформа.
2. Язык.
3. Предпочтительный компилятор (транслятор, IDE).
Вот тогда и будет предметный разговор - как это проще и красиво сделать, а пока голое словоблудие, очередная "лампочка через диод".
Halex07 вне форума  
Сказали "Спасибо" Halex07
whoim (26.08.2013)
Непрочитано 26.08.2013, 19:41  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: "Выдрать" из 14 бит значение

Halex07, оки
1. Платформа железки? Китайский проц от филипс, штоле.. не вникал.
Платформа, на которой веду написание кода? Core-i3, собсно.. пара гигагерц есть)
2. пока, для изучения процесса - Object Pascal
3. Delphi 7, каюсь, крякнутая. Вот-вот перееду на лазарус.

Между всем этим есть USB(CDC) ‹› UART китайский брелочек..
whoim вне форума  
Непрочитано 26.08.2013, 19:58  
Wiza_
Почётный гражданин KAZUS.RU
 
Регистрация: 29.12.2012
Адрес: Питер
Сообщений: 982
Сказал спасибо: 131
Сказали Спасибо 230 раз(а) в 157 сообщении(ях)
Wiza_ на пути к лучшему
По умолчанию Re: "Выдрать" из 14 бит значение

Скорее всего: X = (MS & 0x3f) ‹‹ 8 + LS;
На паскале: X := (MS and $3f) * 256 + LS

Последний раз редактировалось Wiza_; 26.08.2013 в 20:07.
Wiza_ вне форума  
Сказали "Спасибо" Wiza_
whoim (26.08.2013)
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Действующее значение Gladkih Микроконтроллеры, АЦП, память и т.д 16 20.02.2013 14:58
Помогите начинающему по ATmega8515 Vladlen23 Микроконтроллеры, АЦП, память и т.д 510 27.03.2012 06:08
10 бит по воздуху Fitz Видеотехника 72 23.10.2011 13:43
Помогите с ЦАП AD7708/AD7718 или их аналогами ST_Senya Микроконтроллеры, АЦП, память и т.д 9 30.11.2009 19:03
Вопрос по мультипроцессорному обмену USART MEGA8 vikont-s Микроконтроллеры, АЦП, память и т.д 0 10.08.2006 14:55


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


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