Например TDA7294

Форум РадиоКот • Просмотр темы - Как проще прочитать один бит из регистра? (Си)
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср апр 24, 2024 01:38:04

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Как проще прочитать один бит из регистра? (Си)
СообщениеДобавлено: Ср сен 22, 2021 18:14:57 
Мучитель микросхем

Зарегистрирован: Вс апр 18, 2021 15:43:55
Сообщений: 422
Рейтинг сообщения: 0
Можно вычислить сумму регистра, но это отнимает время. Как быстро и универсально прочитать один бит из регистра в среде программирования Си?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как проще прочитать один бит из регистра? (Си)
СообщениеДобавлено: Ср сен 22, 2021 20:25:07 
Мудрый кот

Карма: 11
Рейтинг сообщений: 114
Зарегистрирован: Пт июн 01, 2018 07:28:45
Сообщений: 1759
Рейтинг сообщения: 0
считываешь регистр и накладываешь битовую маску.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как проще прочитать один бит из регистра? (Си)
СообщениеДобавлено: Ср сен 22, 2021 21:31:27 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
Смотря для чего читать бит.

Самый простоя вариант накладываем маску
Спойлер
Код:
   if(main_registr & (1<<2))
   {   // бит = 1
      x=1;
   } else
   {    // бит = 0
      x=0;
   }
то же самое и с портом
Код:
   if(PORTB & (1<<2))
   {   // бит = 1
      x=1;
   } else
   {    // бит = 0
      x=0;
   }
но при попытке прочитать
Код:
   x = main_registr & (1<<2);
   x = PORTB & (1<<2);
x=0 либо x=(1<<2)=4
но, существует и другой способ
Спойлерсоюз union
Код:
union mmByte {
struct {
unsigned  b0:1;
unsigned  b1:1;
unsigned  b2:1;
unsigned  b3:1;
unsigned  b4:1;
unsigned  b5:1;
unsigned  b6:1;
unsigned  b7:1;
} mbyte;
 volatile char m_byte;
}__attribute__((packed));

union mmByte mym_reg;
запись в переменную напрямую числом
Код:
mym_reg.m_byte = 196;
либо напрямую в бит
Код:
mym_reg.mbyte.b2 = 1;
соответственно прочитать бит можно так
Код:
x = mym_reg.mbyte.b2;
x=0 либо x=1

Ну а это из области фантастики, работа с регистром порта
Код:
union mmByte * mym_reg2;
mym_reg2  = (void *)&PORTB;
запись число в порт
Код:
mym_reg2->m_byte = 196;
отдельно бит
Код:
mym_reg2->mbyte.b2 = 1;
теперь чтение:
полностью порт
Код:
x = mym_reg2->m_byte;
отдельно бит
Код:
x = mym_reg2->mbyte.b2;
x=0 либо x=1
Достаточно исчерпывающий ответ?


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Как проще прочитать один бит из регистра? (Си)
СообщениеДобавлено: Ср сен 22, 2021 21:51:59 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -25
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2525
Рейтинг сообщения: 0
Битовые поля - хуже, т.к. не факт, что компилятор развернет поле в считывание и наложение маски.

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Как проще прочитать один бит из регистра? (Си)
СообщениеДобавлено: Ср сен 22, 2021 22:13:18 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
Eddy_Em писал(а):
Битовые поля - хуже,
Смотря какая конечная цель.
Eddy_Em писал(а):
т.к. не факт, что компилятор развернет поле в считывание и наложение маски
а мне все равно во что он разворачивает, главное что бы разворачивал так, как мне нужно.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Как проще прочитать один бит из регистра? (Си)
СообщениеДобавлено: Чт сен 23, 2021 13:30:38 
Мучитель микросхем

Зарегистрирован: Вс апр 18, 2021 15:43:55
Сообщений: 422
Рейтинг сообщения: 0
Dimon456, спасибо.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как проще прочитать один бит из регистра? (Си)
СообщениеДобавлено: Чт сен 23, 2021 13:37:33 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 5
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
в "среде" программирования на Си под названием avr-gcc, например, давно все встроено, есть набор макросов для чтения битов
bit_is_set
bit_is_clear
ну а запись битов - это обычная операция И или ИЛИ

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как проще прочитать один бит из регистра? (Си)
СообщениеДобавлено: Чт сен 23, 2021 18:31:53 
Мучитель микросхем

Зарегистрирован: Вс апр 18, 2021 15:43:55
Сообщений: 422
Рейтинг сообщения: 0
ARV, да, проще уже некуда. Спасибо. :)


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 36


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y