ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
1194396 Топик полностью
ЫЫyкпy (30.03.2022 18:33, просмотров: 394) ответил PlainUser на Понадобился таймер в STM32. Свободных нет но есть один на котором висит энкодер.Планирую его освободить.Ищу либу под энкодер без аппаратного таймера.Никто не подскажет готовую?
Опрашиваем почаще, берём 2 бита текущего состояния и 2 бита предыдущего, по этому 4-х битному индексу из таблицы извлекаем приращение кординаты. 
const int encoder[] =
//         00    01    10    11
/* 00 */   0,    -1,    1,    0,
/* 01 */   1,     0,    0,   -1,
/* 10 */  -1,     0,    0,    1,
/* 11 */   0,     1,   -1,    0};
uint32_t encLeft=0; void Encoders() { uint32_t A = GPIOA->IDR; uint32_t B = GPIOB->IDR; encLeft <<= 1; encLeft |= (B & PIN_MASK(ENCODER_Left_A_pin)) ? 1 : 0; encLeft <<= 1; encLeft |= (A & PIN_MASK(ENCODER_Left_B_pin)) ? 1 : 0; mb_regs[ENCODER_LEFT] += encoder[encLeft & 0x0f]; }
Жизнь есть способ существования белковых тел в борьбе со вторым началом термодинамики.