ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
3 мая
1194396 Топик полностью
ЫЫyкпy (30.03.2022 18:33, просмотров: 360) ответил 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]; }
Взирая на нынешнее состояние отечества моего с таковым оком, каковое может иметь человек, воспитанный по строгим древним правилам, ... не могу я не дивиться, в сколь краткое время повредились повсюдно нравы в России. (с) кн. М.М. Щербатов.