ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
6 декабря
263129
Связанные сообщения
Энкодер
Всем привет. Ребят, есть у кого готовая реализация для энкодера(подобные PEC12) под stm32 с ускорением шага при быстром повороте...2023-04-30
Понадобился таймер в STM32. Свободных нет но есть один на котором висит энкодер.Планирую его освободить.Ищу либу под энкодер без...2022-03-30
Датчик частоты вращения...2020-06-20
Блеск и нищета синхронных реверсивных счётчиков... Формально, частота сигнала до 400 кГц. Реально при вибрации механики "на гран...2019-05-20
Механический ротор-энкодер. Нужно дребезг давить, или он давится автоматически? Функцию обработки датчика Холла допиливать под р...2018-12-17
не могу опознать энкодер2015-05-20
2 Л.И. По программе обработки энкодера - а не кажется ли Вам, что инициализация не совсем корректна - на самом деле правильно ин...2010-12-17
silver (21.07.2011 17:48, просмотров: 20366)
Подскажите насчет обработки сигнала от энкодера.  Использую обычный механический энкодер пробую обрабатывать сигнал так void Timer4_ISR(void) interrupt 16 { SFRPAGE = CONFIG_PAGE; sost=P5&0x01; sost2=P5&0x10;//опрашиваю соответствующие пины порта if(sost==1) {encoder|=0x01;} if(sost==0) {encoder&=0xFE;} if(sost2==1) {encoder|=0x02;} if(sost2==0) {encoder&=0xFD;}//заношу в переменную эти значения encoder2=encoder; if (status != encoder2)//если теккущее состояние не равно предидущему //соответственно увеличиваю или уменьшаю значение { switch (encoder2) { case 0: if (status == 0x01) {status=0; temp --;} break; case 0x02: if (status == 0x03) {status=0; temp ++;} break; case 0x01: if (status == 0x00) {status=0; temp ++;} break; case 0x03: if (status == 0x02) {status=0; temp --;} break; } status = encoder; encoder=0; encoder2=0;// } delay(1000); } проблема в дребезге. Как лучше его устранить программно?