Перейти к содержанию

SHipa

Members
  • Постов

    4
  • Зарегистрирован

  • Посещение

Информация

  • Город
    курган

Электроника

  • Стаж в электронике
    1-2 года
  • Оборудование
    Lykey702 , C1-72

Достижения SHipa

Новичок

Новичок (1/14)

  • Неделя на форуме
  • Месяц на форуме
  • Год на форуме

Последние значки

0

Репутация

  1. спасибо помогли переместил переменную и прерывания стояли по наростающему фронту поменял на любое изменение сигнала
  2. после перемещения отроки вообще все перестало работать теперь 1-2 импульса на 1 оборот энкодера попробую еще раз проверить осцилографом на дребезг и помехи
  3. так как энкодер стоит в станке нужно чтобы он обрабатывался независимо от программы чтобы непроскочить момент остановки насчет друбезга ставил сглаживающие конденсаторы на контакты ситуация ухудшалась (от 0,1 до 1мкф) да и энкодер не замыкает контакты а выдает напряжение (не механические контакты) на осцилографе смотрел сильного дребезга незаметно
  4. Проблема с состовлением прошивки для энкодера (фирмы PEPPERL+FUCHS по данной программе выдает примерно 330-340 импульсов на оборот) линии данных подключил на int0 и int1 atmega8 прошивку пишe в codevision avr Включил прерывания int0 и int1 по любому изменению состояния и повешал на оба прерывания функцию обработки void enkoder(){ if((PIND.2==0)&&(PIND.3==0)){input = 0; }else if((PIND.2==1)&&(PIND.3==0)){input = 1; }else if((PIND.2==1)&&(PIND.3==1)){input = 2; }else if((PIND.2==0)&&(PIND.3==1)){input = 3; }; if(input!=buf){ switch(buf) { case 0:{ if(input == 1) impuls++; if(input == 3) impuls--; break; }case 1:{ if(input == 2) impuls++; if(input == 0) impuls--; break; }case 2:{ if(input == 3) impuls++; if(input == 1) impuls--; break; }case 3:{ if(input == 0) impuls++; if(input == 2) impuls--; break; }; buf = input; }; }; ugol=impuls; }; после того как вращаю энкодер и возвращаю его в обратное положение значение переменной impuls неправельное оно всегда больше 0 и с каждым вращением погрешность все больше подскажите что я делаю нетак.
×
×
  • Создать...