• Объявления

    • admin

      Просьба всем принять участие!   24.11.2017

      На форуме разыгрывается спектроанализатор Arinst SSA-TG LC (цена 18500 руб). Просьба всем перейти по ссылке ниже и принять участие!

SHipa

Members
  • Публикации

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

  • Посещение

Репутация

0 Обычный

О SHipa

  • Звание
    Новенький

Информация

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

Электроника

  • Стаж в электронике
    1-2 года
  • Оборудование
    Lykey702 , C1-72
  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 и с каждым вращением погрешность все больше подскажите что я делаю нетак.