Size: a a a

2021 March 28

A

Alexander in Embedded Group
Andrew K
а если 40 бит
Тревоги делятся на 3 группы по 14
источник

AK

Andrew K in Embedded Group
вы сильно все усложняете
источник

A

Alexander in Embedded Group
Andrew K
вы сильно все усложняете
Как "упростит" битбэндинг кроме доп. гемора с адресной арифметикой? )
источник

L

LexsZero in Embedded Group
#define GROUP_SHIFT 4
#define BIT_MASK 0xF
#define MAP(grp, bit) ((grp << GROUP_SHIFT) | bit)
#define IGNORE (1 << 7)
static const uint8_t alarm_mappings[] = {
  MAP(0, 0),
  MAP(0, 1),
  IGNORE,
  MAP(1, 5),
  ...
};


uint8_t alarm_num;
if (alarm_num < sizeof(alarm_mappings)) {
 uint8_t mapping = alarm_mappings[alarm_num];
 if (mapping != IGNORE) {
   group = mapping >> GROUP_SHIFT;
   bit_num = mapping & BIT_MASK;
 }
}
источник

A

Alexander in Embedded Group
LexsZero
#define GROUP_SHIFT 4
#define BIT_MASK 0xF
#define MAP(grp, bit) ((grp << GROUP_SHIFT) | bit)
#define IGNORE (1 << 7)
static const uint8_t alarm_mappings[] = {
  MAP(0, 0),
  MAP(0, 1),
  IGNORE,
  MAP(1, 5),
  ...
};


uint8_t alarm_num;
if (alarm_num < sizeof(alarm_mappings)) {
 uint8_t mapping = alarm_mappings[alarm_num];
 if (mapping != IGNORE) {
   group = mapping >> GROUP_SHIFT;
   bit_num = mapping & BIT_MASK;
 }
}
👍👌
источник

E

Evgen in Embedded Group
LexsZero
#define GROUP_SHIFT 4
#define BIT_MASK 0xF
#define MAP(grp, bit) ((grp << GROUP_SHIFT) | bit)
#define IGNORE (1 << 7)
static const uint8_t alarm_mappings[] = {
  MAP(0, 0),
  MAP(0, 1),
  IGNORE,
  MAP(1, 5),
  ...
};


uint8_t alarm_num;
if (alarm_num < sizeof(alarm_mappings)) {
 uint8_t mapping = alarm_mappings[alarm_num];
 if (mapping != IGNORE) {
   group = mapping >> GROUP_SHIFT;
   bit_num = mapping & BIT_MASK;
 }
}
только еще надо определить, какая это группа
потому что прилетает 1 значит первая группа, прилетает 60 значит 2 я группа
номер группы вычисляется от значения ошибки
источник

L

LexsZero in Embedded Group
Evgen
только еще надо определить, какая это группа
потому что прилетает 1 значит первая группа, прилетает 60 значит 2 я группа
номер группы вычисляется от значения ошибки
номер группы тоже содержится в маппинге
источник

A

Alexander in Embedded Group
Evgen
только еще надо определить, какая это группа
потому что прилетает 1 значит первая группа, прилетает 60 значит 2 я группа
номер группы вычисляется от значения ошибки
Там биты grp есть
источник

E

Evgen in Embedded Group
Alexander
Там биты grp есть
надо сейчас ручками потестировать  в vs
чтоб понять логику, а то я до конца видать не понимаю
быстрее будет
источник

E

Evgen in Embedded Group
LexsZero
#define GROUP_SHIFT 4
#define BIT_MASK 0xF
#define MAP(grp, bit) ((grp << GROUP_SHIFT) | bit)
#define IGNORE (1 << 7)
static const uint8_t alarm_mappings[] = {
  MAP(0, 0),
  MAP(0, 1),
  IGNORE,
  MAP(1, 5),
  ...
};


uint8_t alarm_num;
if (alarm_num < sizeof(alarm_mappings)) {
 uint8_t mapping = alarm_mappings[alarm_num];
 if (mapping != IGNORE) {
   group = mapping >> GROUP_SHIFT;
   bit_num = mapping & BIT_MASK;
 }
}
Спасибо
пойду попробую разобраться, что код делает
а то немножко не понимаю
источник

L

LexsZero in Embedded Group
Evgen
Спасибо
пойду попробую разобраться, что код делает
а то немножко не понимаю
если у тебя 25 аларм должен идти в третий бит второй группы, пишешь MAP(2, 3) в 25-й элемент маппинга, макрос это кодирует одним байтом, остальной код разбирает обратно с учетом алармов которые не должны идти никуда (пропущенные в твоих перечислениях) и обработки ситуации если вдруг придет номер больше, чем у тебя забито в маппинге.
источник

E

Evgen in Embedded Group
LexsZero
если у тебя 25 аларм должен идти в третий бит второй группы, пишешь MAP(2, 3) в 25-й элемент маппинга, макрос это кодирует одним байтом, остальной код разбирает обратно с учетом алармов которые не должны идти никуда (пропущенные в твоих перечислениях) и обработки ситуации если вдруг придет номер больше, чем у тебя забито в маппинге.
получается номер в массиве, должен соответствовать коду аларма?
источник

L

LexsZero in Embedded Group
Evgen
получается номер в массиве, должен соответствовать коду аларма?
да
источник

E

Evgen in Embedded Group
Теперь все стало на свои места, спасибо )
источник

VB

Vlad Baida in Embedded Group
Кто-то объяснит принципиальную разницу между эмбеддед и IoT?
источник

VB

Vlad Baida in Embedded Group
В каждой статье в инете у автора разный взгляд на то, что такое IoT)
источник

VB

Vlad Baida in Embedded Group
Vlad Baida
Кто-то объяснит принципиальную разницу между эмбеддед и IoT?
Или что из них есть подмножеством другого?
источник

СС

Сиие Сууие in Embedded Group
Vlad Baida
Или что из них есть подмножеством другого?
Зис
источник

ЛГ

Лена Герасименко... in Embedded Group
ID:0
Требуется команда из 2-4 разработчиков встраиваемого ПО под микроконтроллеры stm32

Обязательные требования:
- Уверенное знание  С/С++, умение писать структурированный поддерживаемый код
- Опыт работы с RTOS
- Опыт работы с git
- Опыт в коммерческой разработке от 3-х лет
- Наличие успешно завершенных проектов
- Знание цифровой и аналоговой схемотехники
- Знание основной периферии МК (ADC, таймеры, CRC,  цифровые интерфейсы)
- Опыт работы с mass storage на stm32
- Опыт работы с bootloader-ом
- Опыт работы с wifi модулем по AT командам
- Знание основных цифровых интерфейсов
- Самостоятельность, умение читать чужой код, разбираться в готовых примерах
- Ответственность
- Итеративный подход, умение правильно расставлять приоритеты при разработке
- Умение работать в команде

Условия - Работа проектно на full time (Москва)
Бюджет - Обсуждаемо
Сроки - Начать готовы сегодня
Контакты:
+7 916 299-10-03
@Klynkin
+7 926 868-11-86
О, Карфидов, прикольная контора
источник

A

Anton in Embedded Group
Привет всем!
Подскажите, пожалуйста, можно ли организовать связь МК с ICM-20948/MPU-9250 через одни только NRF24L01 или надо еще на стороне сенсора тоже ставить МК (типа тиньки)?
источник