LINUX.ORG.RU

1
Всего сообщений: 59

TIM1 захват входного сигнала

Всем привет, уже пару дней ломаю голову над этой проблемой - не выходит настроить TIM1 input capture (для измерения длины импульсов, посылаемых HC-SR04 - ультразвуковым дальнометром). Плата - stm32vldiscovery, для разработки использую CMSIS и STDPeriph. Я новичок, если что.

Вкратце для тех кто не в курсе, как устроен протокол HC-SR04 - данный дальнометр располагает двумя пинами - Trigger и Echo. Получив на Trigger 10-микросек. сигнал, дальнометр активируется и определяет расстояние до ближайшей преграды с помощью ультразвука. Далее, он отвечает - на пин Echo посылается сигнал, длительность которого пропорциональна определенному расстоянию. (150-2500 мкс)

Вот скриншот с логического анализатора, как весь этот процесс выглядит: https://imgur.com/a/MXN13ZP. Как видно на этом фото, первая часть (триггер) у меня отлично работает (взят TIM4 CH4).

Проблема выходит со второй частью - я пытаюсь настроить TIM1 для определения длительности импульса Echo, вот код:

static void echo_init()
{
    // reconfigure PA8 to alternative function push-pull
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

    GPIO_InitTypeDef Gpio;
    GPIO_StructInit(&Gpio);
    
    Gpio.GPIO_Pin = GPIO_Pin_8;
    Gpio.GPIO_Mode = GPIO_Mode_AF_PP;
    //Gpio.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOA, &Gpio);

    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    TIM_ICInitTypeDef TIM_ICInitStructure;
    
    // enable timer clock
    RCC_APB1PeriphClockCmd(RCC_APB2Periph_TIM1 , ENABLE);

    // configure timer
    // PWM frequency = 10 hz with 24,000,000 hz system clock

    TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
    TIM_TimeBaseStructure.TIM_Prescaler = SystemCoreClock/100000 - 1; // 10 hz or 100 ms cycle
    TIM_TimeBaseStructure.TIM_Period = 10000 - 1; // 0..9999
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

    // Channel 1 latches the timer on a rising input on t1
    TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
    TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
    TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
    TIM_ICInitStructure.TIM_ICPrescaler = 0;
    TIM_ICInitStructure.TIM_ICFilter = 0;
    TIM_ICInit(TIM1, &TIM_ICInitStructure);

    // Channel 2 latches the timer on a falling input on t2
    TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;
    TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Falling;
    TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_IndirectTI;
    TIM_ICInitStructure.TIM_ICPrescaler = 0;
    TIM_ICInitStructure.TIM_ICFilter = 0;
    TIM_ICInit(TIM1, &TIM_ICInitStructure);

    // Configure the timer slave mode with TI1FP1 as reset signal
    TIM_SelectInputTrigger(TIM1, TIM_TS_TI1FP1);
    TIM_SelectSlaveMode(TIM1, TIM_SlaveMode_Reset);
    TIM_SelectMasterSlaveMode(TIM1, TIM_MasterSlaveMode_Enable);

    // Enable Timer
    TIM_Cmd(TIM1, ENABLE);
}

При этом, по идее, таймер должен быть полностью сконфигурирован, но каждый раз, когда я заглядываю в регистры TIM1->CCR1 и TIM1->CCR2, они пусты! Т.е. хранят 0. Что я делаю не так, может кто-то подскажет?

int ultrasonic_get_distance()
{
    return TIM1->CCR2 - TIM1->CCR1 * 17/100;
    
    //is supposed to return distance in mm
    //always returns zero for some reason
}

ЗЫ: конфиг взят из этой книги, глава 10.2, ну и частично дописан мной.

 , ,

x86- ()

KVM guest Centos 8, X.org не реагирует на мышь

Не пойму, где я тормоз. Есть виртуалка с centos 8, установлены в ней gemu-guest-utils, spice-vdagent. В окне логина мышь работает, после логина нет ни курсора, ни реакции на кнопки. Есть устройство /dev/input/event6, это vdagent tablet, который собственно и отображает события мыши. При этом libinput debug-events исправно кажет и события смены координат, и нажатия мыши. Такое ощущение, что после логина (а там X дисплей :0, который у gdm, меняется на :1) этот планшет как-то не регистрируется, что ли… В логе Xorg.1.log устройство упоминается.

Ткните пальцем, куда смотреть?

 , , ,

olegkrutov ()

gentoo и touchpad.

Резко задумался над сущностью libinput.

Кто как живёт? Evdev или Libinput, почему?
Поправьте: libinput - это надстройка над evdev ядра?

Как повторить финт ушами средствами Libinput и не использовать syndaemon для предотвращения перемещения курсора при печати?

Жестами не пользуюсь, как и DE.

 ,

shleemypants ()

Глюк, зажата какая то кнопка

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

 ,

waitmar ()

Перо/стилус для сенсорного монитора

Заимел себе сенсорный монитор.

Хочется заменить большой не удобный палец на удобный стилус.

Понимания что это и как работает у меня нет, но в голове примерно вот это:

  • Обычные стилусы с поверхностью размером с палец за 100 руб. не интересуют.
  • Видел стилусы с доп кнопками, не понял как они работают т.к. wifi/bluetooth для них не заявлено
  • Видел стилусы с «100500» степеней нажатия, тоже не понял как это реализовано без связи с системой
  • Видел у китайцев чудо сенсоры для конкретных ноутбуков с кнопочками и bluetooth, но за жаба задушит денег.

Что хочу:

  • Как минимум тонкую зону контакта с сенсорной поверхностью чтобы по кнопкам попадать
  • (Опционально) Возможность нажать правую кнопку мыши
  • (Опционально) Возможность забиндить какое-то действие на доп кнопку

Есть у кого-то тут опыт пользования? Идеи?

 , ,

Flotsky ()

fcitx vs Ibus

Вечер добрый, господа! С недавних пор заинтересовался и начал изучать китайский и решил попробовать настроить раскладку для набора через пиньинь, но не в этом суть. В процессе разбора методов наткнулся на две реализации набора текста: ibus и fcitx. Вот и хочу разобраться какая из них лучше или хуже, в чём преимущества и недостатки каждой и какую стоит использовать для набора иероглифов. Да и в целом что лучше?(Ну и какие движки для пиньиня стоит использовать?)

 , , ,

ZeeCaptain ()

curl: скачать все данные форм

Всем привет.

Хитрая задача (для меня). Есть сайт с формами (веб-интерфейс железки) - куча параметров. Мне нужно curl-ом из консоли переключить один параметр сначала на одно значение, а потом вернуть на предыдущее (ну типа передернуть один параметр).

Отсюда вопрос. Как мне узнать какие параметры там стоят чтобы их передать без изменений, а поменять только один нужный мне. На той стороне сишный cgi-bin которому нужен весь комплект параметров (порядка 70, убираешь любой и уже ничего не работает). Как вариант, можно слить полные параметры из инспектора браузера (я сейчас так и сделал) и для каждого случая отправлять два набора. Но если там в какой-то настройке что-то будет не совпадать с моей заготовкой, то моим запросом тот параметр переустановится в неправильный.

Резервный вариант это писать на каком-нидь пистоне/php полноценный парсер и все такое. Но хотелось бы обойтись только bash-ем и всякими curl/grep/awk/sed и т.д.

 , , ,

yax123 ()

При удалении файлов из корзины - постоянные обращения I/O к HDD

И снова Ubuntu 20.04.

Нет, в этот раз не поломали какую-то очередную горячую клавишу. В этот раз сломали что-то в «механизме» удаления файлов из корзины через Nautilus.

Описание проблемы

Удаляю с раздела HDD некоторые файлы в Корзину. Захожу через интерфейс Nautilus в Корзину и нажимаю кнопочку «Очистить корзину». Файлы будто бы удаляются - исчезают визуально, НО …:

  1. размер диска через df -h не меняется;

  2. идут постоянные обращения к диску - без перерыва горит индикатор на системнике

Ещё странно то, что несмотря на постоянное обращение к HDD, на быстроте работы это никак не сказывается. Система работает так же ровно, без лагов и торможений, хотя раньше, если когда такое случалось (не при удалении файлов из корзины, а при индексации, например …), то система начинала подлагивать, фризиться. То есть, ещё раз, этот процесс обращений к HDD не тормозит систему, но работает постоянно. Ждал минут 15. Не выдержал, перезагрузился - прошло. Ещё раз удаляю файлы - такая же история.

Лайфхак, способы обхода проблемы

Если кто обнаружил такую же фигню у себя, рекомендую установить пакет trash-cli и удалять файлы из Корзины через терминал при помощи команды trash-empty. Когда удаляю файлы таким способом: индикация обращений к HDD не горит, размер HDD сразу же меняется. Как это обычно бывает «искал одно, а нашёл другое», очень понравился этот пакет. Даже немного благодарен этому глюку Ubuntu, что познакомил меня с trash-cli. Но, всё же, осадок остался …

 , , , ,

Desmond_Hume ()

İnput/output error

Начал смотреть видео и вдруг выдает ошибку, я перезапускаю комп и тут пишет input/output error, не могу зайти home сделал btrfs –repair теперь могу, но там просто стандартные файлы. Прописал dmesg, а там куча ошибок «patent transid verify failed on 140763103232 wanted 296504 found 295850» пропали не все файлы и программы. Система стоит на ssd. Еще больше не отображается старые пользователи, хотя они есть, подними можно зайти, но домашних папок нету странно.

 , , , ,

hcoalex ()

Alpine Linux не работают устройства ввода в иксах

Поставил на свой старенький amd k6-ii alpine linux потом поставил иксы, они запускаются, но ни мышка ни клавиатура не работают (ctrl+alt+backspace тоже) В чём дело непонятно.

Пробовал ставить всякие xf86-libinput или evdev ни чего не меняется.

Поставил я этот apline на virtualbox, то же баг.

/var/log/Xorg.0.log

https://paste.ubuntu.com/p/ZWT9YnXRXq/

 , , ,

gtk3 ()

wine не работает клава

в вайне в некоторых казуалках не работает в начале ввод с клавиши, не могу имя вписать в поле ввода. Самое интересное один раз попросил на торренте мне на винде профиль игры создать и скинуть - так работает. При поисках наткнулся на похожие проблемы у людей если игра стартует в фулскрин(она на самом деле как бы в бэкграунде, зa waybar). кто сталкивался может надо переменные какие передать при старте? Принудительно стартануть типа

wine /desktop 1300x800 bla.exe

не помогает

 ,

jtad ()

Не работает мышь и клавиатура после старта иксов

Доброго времени. Установил в качестве эксперимента себе арч линукс из последнего доступного образа. Установка прошла без проблем, поставил в режиме efi, установил метапакет иксов и xfce. Логинится решил из консоли, ДМ не нужен. В консоли устройтсва ввода работают, по крайней мере клавиатура. После старта иксов не работает ни одно устройство (мышь и клавиатура). При этом питание на клавиатуре есть (загораются индикаторы локов, если нажать клавишы). При загрузке заметил несколько сообщений, отмеченных красным. В логах dmesg без старта иксов увидел такое:

device descriptor read/64, error -71
device descriptor read/64, error -71
device descriptor read/64, error -71

И такого много с разными номерами usb (usb 2-1, usb 3-1 .. 5-1). В логи иксов ошибок нет. Они стартуют норм, что логично. В консоли устройства норм определяются

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 1c4f:0026 SiGma Micro Keyboard
Bus 001 Device 003: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 001 Device 002: ID 046d:c077 Logitech, Inc. M105 Optical Mouse
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

На соседнем диске стоит убунту 18.04, там все работает без проблем. Как можно продиагностировать неполадку?

 , ,

Nayseel ()

Как в Python отловить input от модуля?

Есть программа на Python 3, при определенных условиях подключаемый модуль запрашивает ввод данных. Как сделать подобный запрос ошибкой и отловить его, не отвечая? А можно ли обработать и ответить не вручную, а программно? Можно, конечно, сделать враппер, который будет запускать основной скрипт и обрабатывать вывод командной строки, но это костыль. Можно как-то по другому?

 ,

Qwentor ()

Сам меняеться режим раскладки клавиатуры, как исправить?

У меня два языка в системе рус и англ, и когда печатаю и нажму backspace или enter, язык меняеться сразу на англ прямо во время печати, либо я например прямо сейчас печатаю, у меня активно окно печати, нажму курсором просто в другое место страницы этого форума либо мышкой ткну чтобы курсор поставить в другое место этого текста, язык сразу поменяеться на англ. В настройках «Область переключения раскладки» ставил и глобально, и десктоп, приложение, окно. Ничего не помогает, как это изменить? У меня дебиан kde

 

lasikizeya ()

Поток от устройств через /dev/input/event. Где здесь EOF???

Добрый день.

Насколько понимаю, поток от /dev/input/event не имеет EOF. Поэтому, когда данные от устройства полностью считываются, программа переходит в режим ожидания этого потока, т.е. останавливается. Как только поток событий от event возобновляется, разумеется, программа оживает.

Как можно отслеживать исчерпание данных, чтобы, пока данных от устройства не поступает, параллельно можно было бы выполнять и остальные задачи помимо чтения /dev/input/event.

Что пробовал: - feof, fscanf (результат: для движения нужен поток от event); - линуксовские пайпы (результат: для движения нужен поток от event); - перекладывание работы с /dev/input/event в отдельный поток (результат: для движения нужен поток от event); - перекладывание работы с /dev/input/event в отдельный демон (daemon) с передачей результата в основную программу через переменную окружения (сильно загружается CPU, это даже видно по выводимой на экран информации).

Заранее благодарен.

 , , ,

maratus ()

Почему пустая строка превращается в null в $request->input() в Laravel?

В контроллер поступают следующие данные:

POST Data
- channelTypeId «2»
- notifyChannelValue «»
- addButton «»

А вот код контроллера:

public function addChannelApply(Request $request) {
  $channelTypeId = $request->input('channelTypeId'); // Тут получается нормальное значение
  $channelValue = $request->input('notifyChannelValue'); // А тут null
    
  return dd($channelValue);
}


И этот контроллер выдает в браузер null.

Пытался задать вторым параметром input() значение по-умолчанию '12345'. Но оно не возвращается, видимо потому что POST-переменная таки существует, а значение по-умолчанию должно подставляется если переменной нет. То есть dd() все равно пишет null.

В то же время, метод input() должен возвращать null, если переменной нет. И, похоже, input() это и делает - он возвращает null.

В общем, я не могу понять, как получить значение POST-переменной notifyChannelValue в явном виде, то есть пустую строку?

 , , ,

Xintrea ()

Посоветуйте внешний вид «numeric input» для тача

https://stackblitz.com/edit/lvgl-settings-menu-demo (только хром, в FF не пашет)

Пытаюсь сделать макет «меню настроек» для абстрактной железки с мелким тачскрином. По мотивам material UI guideline. Только вот запутался, как дешево и сердито изобразить инпут, где значение менялось бы +/- с ускорением? Рисовать цифровую клавиатуру не хочется - гиморно, и трудно под произвольный экран подстраивать. Если правильно понял, при тыканьи в строку должен появляться модальный диалог, а что у него внутри?

Хотелось бы просто число и две кнопки, только не понимаю как это в стиле material должно выглядеть. И какой должен быть fallback если вместо тачскрина энкодер или джойстик.

 ,

Vit ()

Мышка тормозит в ряде игр.

Странная хрень, которой раньше не было. Тормозит мышь в нескольких играх. А конкретно в The Long Dark, Railway Empire, Hearts of Iron 4. Возможно в других тоже, не проверял. Выглядит как дикие лаги удаленной прорисовки через gprs.

Пробовал запускать игры без стима, эффект тот же самый.

Куда копать?

В xorg.conf только:

Section "Device"
Identifier  "aticonfig-Device[0]-0"
Option "DRI3"
Option "TearFree" "true"
Option "ColorTiling" "on"
Option "ColorTiling2D" "on"
Option "EnablePageFlip" "off"
EndSection

Подключать другую мышь пробовал.

 

steemandlinux ()

Fallout 4 - захват мыши на двух мониторах

Запускаю Fallout 4 на Antergos (4.16.12-1-ARCH, MATE), wine-staging 3.9.1, DXVK 0.53-1.

По части графики все отлично, не вылетает, хороший FPS, но есть одна проблема - с захватом мыши в границе окна.

Дело в том, что у меня 2 монитора, игру запускаю на основном экране в fullscreen, во время игры мышь уезжает на второй экран и игра перестает реагировать на мышь.

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

Что пробовал:

Крючки «Автоматически удерживать мышь в полноэкранных окнах», «Разрешить менеджеру окон управлять окнами wine», «Эмулировать виртуальный рабочий стол».

Менял библиотеки xinput_*.dll на native\built-in.

Пробовал утилиты mouse jail (https://github.com/jose1711/jail). Но такой способ не совсем подходит для шутера, мышь просто дрыгается, когда доходит до границы экрана, обзор не работает. Для кликеров, стратегий, РПГ подошло бы, но не для шутера.

Собственно, ищу решение с захватом мыши или еще варианты, как ограничить мышь одним экраном.

Спасибо.

 , , ,

maximt ()

Реально ли «малой кровью» сделать фильтрацию touch input для android 5.1?

Достался мне хороший смартофон но с железным багом, обычно его клинит и тач начинает посылать «левые» хаотичные события. Часть из них вообще выходит за пределы экрана. И вот появилась мысль что это дело можно программно отфильтровать и будет вполне рабочий вариант.
Может кто сталкивался с таким, насколько сложно такое реализовать? Или может быть такое уже реализовано?

 , ,

V1KT0P ()