avatar
Вчера я его не смог приладить к энкодеру, догадайтесь почему.
Телепаты, ау?

Вопрос знатокам — почему код правильно отрабатывает свое предназначение при вращении энкодера в одну сторону и взрывает мозг в другую?
Какой код? Что за предназначение?
avatar
«Я не тупой» © Гомер Симпсон.

Ложась спать, меня вдруг покоробило «Но я же видел Правильные осциллограммы!»
Утром я буквально вскочил за пол часа до будильника с пониманием того, где закралась проблема. Разумеется, состояние энкодера выводится на семисегментник.

Считывается состояние так:
EncPortData[1]=(ENCODERINPORT>>5)&0x03;//прочли сырое значение


Выводится это состояние так:
PORTC&=~0x30; PORTC|=(EncPortData[1]<<4);


А между ними код, подавляющий дребезг контактов. К слову сказать работающий без сбоев для какой-то там кнопки, где-то на реальной железке. Вчера я его не смог приладить к энкодеру, догадайтесь почему. Код фиксирует фронты по друм линиям. По фронту одной линии сетит, другой — ресетит.
if ((EncPortData[1])&0x01 && !(EncPortData[0])&0x01)//нарастающий фронт по А!
if ((EncPortData[1]>>1) & 0x01 && !(EncPortData[0]>>1) & 0x01)//нарастающий фронт по B!


Вопрос знатокам — почему код правильно отрабатывает свое предназначение при вращении энкодера в одну сторону и взрывает мозг в другую?
avatar
В одну сторону крутишь, выдает последовательность 0/3
в другую сторону крутишь, выдает последовательность 1/2
Тут, правда, с определением направления вращения еще проще — XOR(a,b) и делов.
Взял с полки непаянный — та же хрень.
avatar
А что тогда?
avatar
Забавно. У распаянного на плате энкодера сигнал на выходе — НЕ код Грея.
avatar
Ну если визуально, то можно еще неонку с резистором.
avatar
Механика на высоких скоростях крайне ненадежна.
Посему либо Холл, либо оптика.

А защита от дребезга… Расскажу через пару часов про нее.
avatar
Надо тоже попробовать Hg, спасибо за статью. На работе же у меня во всю юзается Perforce и SVN
avatar
Дак никто не будет бегать и заглядывать в щиток — появилось ли напряжение. Лучше уж чтобы пищало.
avatar
В качестве визуального оповещателя можно использовать такую схему
avatar
Если запустить генератор ночью, то и ночью пищать будет — не вижу в этом проблемы.
avatar
Если вы испольуете проводник (эм), total commander или что-то в таком духе, то нужно щелкнуть правой кнопкой мышки и выбрать:
Небольшое уточнение: в тотале точно так же можно сделать копипаст в командную строку.
avatar
А по ночам тоже пищит?
Напомнило: www.liveinternet.ru/users/d_s/post197291584/
avatar
Блин, не подумал, что там Холл. У тех механических энкодеров, которыми мне доводилось пользоваться на фронтах дребезг был ядреный.
avatar
Генератор автоматически включаться/выключаться не умеет потому, что нет автоматического ввода резерва и микроконтроллер тут не поможет. А покупать контакторы и лепить еще один щиток я морально не готов.

И у меня второй ответ вытекает из первого :) Звонок зазвонил — а выключать или нет генератор решает уже человек. Такой себе биологический таймер.
avatar
Два вопроса:
Первый — почему такая схема, с учетом самоблокировки не может сама вырубить генератор?
И второй вопрос, вытекающий из первого — допустим, неплохо бы и подождать некоторое время после повторного включения сети, что помешало использовать реле времени? Все равно ж релюшку пришлось покупать :)

Кароч, ставь микроконтроллер, полюбому понадобится :)

А подобную И-логику я реализовывал в переносной сигнализации.
Кстати есть отличная книга по построению релейной логики:
Юрасов А.Н. Теория построения реленых схем(1962г.). называется.
Несмотря на свой полувековой возраст данные в ней не устарели :)
avatar
Откуда у Холла дребезг?:)

Я тут игрался с энкодером стоящим на плате — там механика, так только промежуточная система Set/Reset спасла от дребезга. Но там и не надо каждый фронт следить.
avatar
Ухты, очень чистый сигнал, без дребезга. Там фильтр внутри стоит?
avatar
Ну, по первому тут главное код Грея чтоб выдавался. В противном случае любая логика ругаться начнет.
У конкретно того энкодера, который в кадре паспортный выход «открытый коллектор», но бывают и комплементарный и дифференциальный выходы.
Ну и сам энкодер отличается точностью выходного сигнала:
avatar
Такс, не внимательно простомтрел, пункт 2 более не актуален :) разницы то нет…