Sidious

С "Мегафоном" можно договориться, но ухо востро!

Продолжение этой истории.

Каким-то непостижимым образом они решили снять очередную абонентскую плату не в полночь с субботы на воскресенье, а ЧУТЬ РАНЬШЕ, в 5 вечера. В итоге сменить тариф до этого списания я не успел - и ОЧЕНЬ РАЗОЗЛИЛСЯ. И всё-таки написал личное сообщение на megafon_report, где ещё разок описал ситуацию, сколько-нибудь сухим языком - сказывается опыт по работе :)

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

Collapse )
Sidious

Февральское велосипедное

Продолжаю приезжать на работу на велосипеде, а вот назад всё же сажусь в Ласточку МЦК, на две полноценные поездки в день меня пока не хватает.

IMG20210215152619.jpg

Завалило основательно, и с прошлой пятницы по эту субботу убрали далеко не всё.
IMG20210219140635.jpg

Поэтому каждый день пробовал разные маршруты, и даже имел успех: время в пути сократилось с 1,5 часов до часа 10 минут :)

Под катом - пасторальное ЖД со станции Сортировочная (казанское направление), баги и фичи в Ласточке, очередные незначительные поломки велосипеда и всякий дорожный песец.

Collapse )
QuatCore

Хотел выпендриться

Одно из замечаний к моему протоколу информационного обмена: ДОБАВЬ 16-битные заголовки к каждому сообщению!

Нам могут прислать командное слово с подадресом 1, и это будет обозначать, к примеру, "выдай целевую информацию", либо с подадресом 2 - и это будет "выдай телеметрию", либо с подадресом 3 - и это будет "дамп памяти" (в отладочных целях).

Как положено, к командному слову есть бит чётности, и если он неверен - мы команду игнорируем "от греха подальше". Но им этого кажется недостаточно: вдруг нам так не повезёт, что ошибочно сменилось ДВА бита, и теперь мы решим, что надо выдать целевую информацию, хотя на самом деле заказывали телеметрию!

И далее мы выдадим ответное сообщение без каких-либо ошибок, вот только НЕ ТО! Чтобы этого не произошло, они и хотят, чтобы у каждого ответного сообщения был свой уникальный код. Вот тогда-то они увидят, что они заказывали одно, а мы прислали совсем другое!

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

Но застрял с этим вопросом уже на несколько дней...

Collapse )

В общем, нельзя верить Википедии, и нельзя верить StackOverflow :) И по-моему, повторю я одно 5-битное значение 3 раза, добавлю бит чётности - и скажу, что так и надо!
QuatCore

Как ускорить QuatCore в очередной раз?

Всё-таки медленно программа обнаружения работает - может отстать от "реального времени", чего допустить никак нельзя.

По вчерашнему случаю, что самое смешное, всего 17 тактов не хватило! Причём небольшая доработка программы ещё позволила сэкономить два раза по 3 такта, так что остаётся 11:


Но есть ещё порох в пороховницах, пара идей, как отделаться малой кровью... Что интересно, все они касаются улучшения управляющей логики, тогда как Data Path остаётся практически неизменным.

Collapse )

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

Алгоритм обнаружения на симуляции (4)

Я запускал симуляцию на 4 миллисекунды, для изображения 128х128, причём чуть ли не половина уходила на "первый кадр", который мы всё равно пропускали, да и хорошо, что пропускали, он ещё "устаканивался". И сейчас, исправив очередную ошибку, решил заглянуть в самый конец, глянуть - вдруг всё работает хорошо, хотя бы на этом изображении?

Оказалось: нет, явно что-то не то!



Обведённое сверху число - номер строки изображения, согласно программе. Снизу - согласно генератору тестового изображения. Они отличаются на 3, и это нехорошо: они вообще-то должны совпадать, но мы с количеством верхних строчек чуть запутались, поэтому у нас с самого начала было расхождение на 2:



То, что дальше мы ещё сильнее отстали, скорее всего означает: однажды мы запросили отрезок до координаты, которая уже была пройдена на этот момент, а поскольку мы пожадничали и проверяем точное равенство, видеопроцессору ничего не оставалось, как застрять на целую строку, пока мы снова не вернулись к этому месту.

Надо в этом разобраться...

Collapse )

Вот так вот, времени тупо не хватило!

Да, мы молодцы - сразу же начали с наихудшего случая - дистанции 0,5 метра, и такое "удачное" расположение мишени, что она влезает вся. В результате у нас самые крупные пятна, чуть ли не 120х120 пикселей, из-за чего и приходится довольно много пикселей "перемалывать" силами QuatCore.

Сейчас, наверное, на симуляции увеличу время back porch, чтобы посмотреть - "а если тактов хватает - то всё будет правильно". А там видно будет. Но сначала придётся вернуться к бумажкам...
QuatCore

Опять алгоритм обнаружения

Достал он меня, но надо доделывать, всё остальное фактически готово.

В прошлый раз, неделю назад, остановились на том, что компилятор неправильно воспринимал литералы с отрицательным знаком, например "Nil EQU -32768", из-за чего у нас не устанавливался правильно флаг TaskPending (о том, что мы ещё не отправили задания по предыдущему пятну), и всё рушилось.

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

Такая у нас картинка, 128х128, ч/б (1 бит):
Simulation1.png

и мы в порыве оптимизма начинаем со строки 14 (0x0E). Если начало прошло точно также, как прежде, у нас должно быть одно обнаруженное пятно (61;11) диаметром 3, и выданы задания на отрезки [0;59], [60;62], [63;127] и HSync. Сейчас поглядим, так ли это?



Collapse )
Ещё одной ошибкой меньше, но какая-то пакость там ещё осталась...
beaver with chainsaw

Воскресная прогулка в сторону Гремячего

Не было особенных планов "доехать во что бы то ни стало", хотел просто посмотреть "что вообще творится"? после обильных снегопадов в пятницу-субботу.

Как оказалось, до Ярославского шоссе все лыжни в неплохом состоянии - уже успел народ их раскатать худо-бедно. Рыхленько, конечно, но вполне себе лыжня!

В ту сторону, как водится, пошёл через Смену. Лыжня со стороны загородного клуба "Забава" была полностью занесена снегом, потом началась лыжня, похоже, народ "нарезал круги" от Красного моста через Смену. Вообще, надо будет ознакомиться подробнее, прежде чем прорубаться с новой лыжнёй.

А потом, уже в сторону Гремячего, ещё не доходя до котоубежища мечты - лыжня просто закончилась, туда в эти выходные не ходил никто!
IMG20210214135901.jpg

Делать нечего (а времени ещё вагон) - пошёл тропить!

Под катом засыпанное Дерюзино, котики реальные и нарисованные, и редкая зимняя Ласточка.

Collapse )
QuatCore

Моделирование стыковки с помощью ВидеоИзмерителя

"Нарисовал"-таки видеоролик, где мы начинаем с весьма неблагоприятных условий: вместо того, чтобы нас поставить ровно "напротив" стыковочного узла, мы оказались сдвинуты от оси на 20 градусов, да ещё и ориентация в пространстве оказалась кривоватой: крен в 90° и тангаж с креном эдак по 10°.





В кои-то веки у меня сколько-нибудь реалистичная модель космического корабля. Правда, параметров Федерации я толком не знаю, поэтому брал Союз, причём старенький, с 24 двигателями причаливания-ориентации, 12 большой тяги и 12 малой. Ещё и моменты инерции для него посчитал в приближении "сплошного цилиндра" с длиной 7,9 метра, диаметром 2,25 метра и массой 7 170 килограмм...

Очень много интересных моментов обнаруживается.

Collapse )
doomguy

Вход в каске и перчатках!

После нервного возвращения с работы 29 декабря на велосипеде устроил небольшой перерыв - добирался до работы на метро.

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

IMG20210209215447.jpg
Collapse )
QuatCore

Алгоритм обнаружения на симуляции (2)

Продолжаем разбираться, в чём же проблема. Пока что мы успели пройти строки изображения, не содержащие пятно (там всё нормально), наткнулись на первую строку, содержащую "верхушку" пятна, добавили новое пятно (61;11) и диаметром 3. Чуть-чуть у нас "сбит прицел" - это должно было быть (60;13), но это не страшно.

Также мы выдали задания на обработку отрезков [0;59], [60;62] и [63;127], ну и на HSync разумеется, куда же без него - и замерли в ожидании результатов по первому из них. Даже на "покоцанном" кадре 128х128 процессор пока успевает обработать строку до прихода следующей - и то радость.

Проматываем к тому моменту, когда результаты появляются:


Ровно "в этот самый момент" идёт выдача строки, как видно по графе "X" и "Pixels". Т.е как только мы дошли до пикселя 59 - тут же и "кинулись в бой".

Максимальная яркость: 255, достигается при X=0x03A=58. Сейчас начнётся веселье...

Collapse )

Пора начинать сначала! Но одной ошибкой стало меньше - уже радость. Но сначала придётся бумажками позаниматься.