avatar
Рейтинг
+16.50
Сила
41.63

Артем

Публикации

avatar
Супрессор защищает от выбросов. Причем довольно неплохо.
А про вилочки диодные я и говорю. Правда еще вопрос, какие быстрее — у HER-ов как правило емкость перехода меньше на порядки.
В своей девайсине у меня стоят Шотки из БП-шников компьютерных — что было под рукой.
avatar
Будет. Реализую знаковый и десятичный вывод на индикатор и будет.
avatar
Угадал. Молодец, держи плюсик :)
Спасибо тебе добрый человек.
avatar
Спойлер
Смахивает на помешательство. Пойду ка я отдохну, а то уже void вместо vk.com в командной строке набираю
avatar
реле, катушка которого рассчитана на переменное напряжение 220В, не?
avatar
Код указанный выше. И в нем есть очень неявная ошибка.
Задача кода — устанавливать выход в единицу по фронту сигнала А, а сбрасывать — по фронту сигнала Б.
Два «независимых» условия, каждое смотрит текущее и предыдущее состояния и в стучае фронта — делает свое дело.
Вот только если сначала появляется фронт А, а потом Б — все работает как надо (что идеально работает как раз с упомянутой кнопкой).
Но вот если крутить наоборот, т.е. сначала Б, потом А, то операция (EncPortData[1]>>1) портит данные. Именно этим меня утром и осенило :) Попытался найти подобный случай в Макконнелле(Совершенный код), но нашел только приведенную выше цитату на первой же странице результатов поиска :)
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
Два вопроса:
Первый — почему такая схема, с учетом самоблокировки не может сама вырубить генератор?
И второй вопрос, вытекающий из первого — допустим, неплохо бы и подождать некоторое время после повторного включения сети, что помешало использовать реле времени? Все равно ж релюшку пришлось покупать :)

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

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

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

Добавил архив с библиотекой.
avatar
Ваша правда. Спасибо, исправлено
avatar
Обмениваться с openSCADA пакетами, управляя при этом объектом с постоянной времени в единицы и десятки секунд вполне хватает. Тут хватает.
Вот насколько быстро это вообе можно делать, а самое главное — как, об этом и будет моя предновогодняя статья)

Кстати почему именно этот МК, т.е. 1280-й. Он самый мощный в линейке Мег. и 2560-й, с чуть большей памятью.
avatar
Очень не понял фразу «данный МК не умеет». Что он не умеет? По UART работать? по SPI с Ethernet дружить? На другой частоте до 20МГц завестись?

Я не ярый фанат AVR. Главное что в текущих приложениях мне его хватает. Плата проста для старта в первую очередь, во вторую — удобна для работы, когда все под рукой. Уверен, если на плате будет (а на ней будет) STM32, вы и сами заинтересуетесь платой.
avatar
Кстати отличная идея, надо создать установку для проведения испытаний на устойчивость к статическим разрядам.
А если взять запоминающий осциллограф…
По блогу, спасибо, в работе материал по SDK под AVR Stduio — новая менюОС не захотела под ним сразу заводиться.
По SEO. Рейтинг занижается у плагиатчиков. И у сайтов, использующих перекрестные ссылки.
Для сайта, с копипастой статьи и указанием оригинала грозит лишь оказаться ниже исходного сайта.
И для серьезного «бана в гугле», сайт должен почти целиком из копипасты состоять
avatar
Порядка трех лет пишу всякие заказные гаджеты. А всего — лет пять примерно.