Обновить
-13
Сергей@kovserg

Инженер

0,1
Рейтинг
7
Подписчики
Отправить сообщение

Работа в команде очень важна. Она позволяет свалить вину на другого.

Так и в чем разница, поменяйте местами A и B или обозначте положительное направление не CCW а CW. Вообще фазовую диаграмму, лучше смотреть в фазовом пространстве. И после изменения можно фильтровать дребизг и читать данные. Более того некоторые одарённый умудрились в осцилографе смазать все энкодеры что бы лучше скользило (возможно для увеличения ресурса). В результате сигнал получился рандомизированным и никакие фильтрации сигнала не справлялись. Пришлось поменять все такие энкодеры на нормальные.

2D фазовая диаграмма энкодера
2D фазовая диаграмма энкодера

Во первых даже в убогих мк есть подпрограммы, которые вызываются командой call. Во вторых renc_pos нужен только для эмуляции экодера, а для определения используется только renc_upd. В третьих renc_upd может обновлять состояние и сообщать об изменении и направление поворота экодера, храня состояние в 1 байте, при желании 2 сотояния в байте. В четвёртых функция чистая (не имеет внутренних состояний) и может обрабатывать сколько угодно энкодеров. В пятых обработка опроса и фильтрации дребезга отделены от функции определения вращения. В шестых никто не мешает ограничивать диапазон допустимых положенией. И потом нафига вы пытаетесь оптимизировать раньше времения, особенно если ресурсов еще с запасом? Более того это эти экодеры не требуется опрашивать слишком быстро и когда их много они опрашиваются как клавиатура (матрица например 8*8) по последовательной шине (RST,CLK,DAT), перебирая столбцы и колонки, просто на каждый энкодер еще по 2 диода вешается.

// load S0,S1, enc, pos, pos_min, pos_max
enc=renc_upd( S1S0<<2 | (enc&3) );
if (enc & renc_inc) pos++;
if (enc & renc_dec) pos--;
// handle range
if (pos<pos_min) pos=pos_min; if (pos>pos_max) pos=pos_max;
// store enc, pos

Хз, я на pic16 обошолся всего 2мя функциями и графиком в 2D пространстве S0*S1:

/*
	rotation encoder

	10<-11
	V    ^
	00->01

	00 01 11 10 ->  10110100 0xB4

 input:  s=[ any:4   cur:2 prev:2 ]
 output:   [ trash:4 res:2 cur:2  ]

	     00 01 10 11 cur
	00   00 01 10 11    11100100 0xE4
	01   10 00 11 01    01110010 0x72
	10   01 11 00 10    10001101 0x8D
	11   11 10 01 00    00011011 0x1B
	prev
*/
enum { renc_inc=4, renc_dec=8 };
char renc_pos(char pos) { return (0xB4>>((pos&3)<<1))&3; }
char renc_upd(char s) { static const char t[4]={ 0xE4,0x72,0x8D,0x1B };
	return ((t[s&3]>>((s>>1)&6))<<2)|((s>>2)&3);
}
/* 4bits state usage:
	char pos=0, enc=(S1<<1) | S0;
	...
	enc=renc_upd( (S1<<3) | (S0<<2) | (enc&3) );
	if (enc & renc_inc) pos++;
	if (enc & renc_dec) pos--;
	code=renc_pos(pos);
*/

renc_upd просто обновляет состояние enc, у которого можно узнать увеличиваем положение или уменьшаем. если оба одновременно 1 то недопустимое значение и pos не изменяется. а renc_pos позволяет по положению генерировать S0 и S1 (это если надо эмулировать энкодер)

Черт с ним с питоном, но c++ то за что https://cppreference.com ?

Какие-то полумеры. Надо сразу аналоговый делать. Чтобы просто уровень напряжения был значением, а разрядностьопределять динамически в зависимости от того как долго и точно этот уровень можно поддерживать.

А как определятся знак числа например у tint, у обычного int это старший бит, а тут как?

Это нужно как союаке пятая нога. Что электронный рубль, что честный знак. Одни проблеммы и головняк. Плюсы только тем кто там будет кормиться.

Цифровизация
Цифровизация

Так вы рассмотрите закон сохранения момента импульса вдоль оси симметрии Z’ и потом вдоль перпендикулярных осей X’ и Y’.

А что мешало рассмотреть момент имульса системы, который сохраняется и равен 0.

J*ω1 + m*b^2*ω2 = 0
Δφ1 = -m*b^2/J*Δφ2

Или через расстояние s, которое проползёт насекомое по шарику:

Δφ1 = s*m*b/(J+m*b^2)

Начнём с того что коды маркировки нафиг не нужны. Продавцу не нужны, покупателю не нужны, производителю не нужны, перевозчикам не нужны. Но попутно гемороя всё больше. И эта схема всё постепенно обрастает всякими дополнительными обязательнями платными услугами по подписке типа шпионского модуля для каждой кассы - тспиот.

ps: “честный знак” не правильное название, больше подходит что то типа “принудительный побор”.

А что означают закорючки “kj)TGtrK>f]b[Piow.gU+nC@s”“”“”“4” в CreateOcrPipeline ?

Мобильный реактор в СССР не взлетел потому как был слишком тяжелым и не мог перемещаться по мостам. А сколько весит этота установка.

Интересно в нём нет подвоха ввиде легкоплавкого припоя?

https://www.youtube.com/watch?v=WeTY-DAtQiI

Не совсем так. У неё проблемы с дробным масштабированием (scale) и hidpi

Точно это “Ошеломляющий Скат” на самое дно. Теперь уже 6Гб минимальное требование. Будет еще больше глюков и тормозов во имя безопасной безопасности?

С помощью этой теории можно, например, доказать что модификатор const в системе типов не только не нужен, но и вреден?

Можете на простых примерах показать нафига где это нужно. Или хотя бы где без этого не обойтись.

Есть же православный чат: https://forta.chat

1
23 ...

Информация

В рейтинге
3 677-й
Откуда
Калужская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Инженер встраиваемых систем, Архитектор программного обеспечения
Старший
От 750 000 ₽
Linux
C++
PHP
Java
Docker
SQL
Hibernate
Java Spring Framework
Высоконагруженные системы