Skip to content
  • Категории
  • Главная
  • Документация
  • Последние
  • Пользователи
Collapse
piP

pi

@pi
Сводка
Сообщения
6.3k
Темы
1.6k
Группы
1
Подписчики
0
Подписки
0

Сообщения

Последние Лучшие сообщения Спорные

  • Отключение ИК подсветки на камере
    piP pi

    @sv-lary#6861 да, такая


  • Отключение ИК подсветки на камере
    piP pi
    • "чебурашка с ушами ИК прожектори и объективом сразу из платы"

      Вот это ?

    https://aliexpress.ru/item/32724553264.html?algo_expid=25e01597-f676-4d39-ac1d-0540ac99fe2b-14&algo_pvid=25e01597-f676-4d39-ac1d-0540ac99fe2b&sku_id=61231506767&spm=a2g0v.search0302.3.124.72a1c922BBy3oX&ws_ab_test=searchweb0_0%2Csearchweb201602_0%2Csearchweb201603_0%2CppcSwitch_0


  • Отключение ИК подсветки на камере
    piP pi

    @sv-lary#6858 да вот хз, загуглил омни и сони, по фото у меня что-то иное, чебурашка с ушами ИК прожектори и объективом сразу из платы, вокруг объектива нет площадки


  • Отключение ИК подсветки на камере
    piP pi

    Какая камера?

    • OmniVision OV5647
    • Sony IMX219
    • USB камера?

  • Замкнул пины
    piP pi

    Включи на 10 секунд. Выключи. Потрогай чип процессора. Если резко сильно нагрелся, то точно всё.

    Если чип процессора жив, то замерь выходные напряжения с PMIC чипа MXL7704.
    Описание
    Если будет не как на картинке, то чип умер. Закажи новый на aliexpress'е и попроси ремонтников телефонов поменять, если сам паять не умеешь такие компоненты


  • Ошибка 443 при git clone
    piP pi

    Время (часы) на малинке? Надо попробовать!


  • Разработка приложения, использующее карту памяти Raspberry Pi
    piP pi

    @lednevandrey04#6851 Есть Raspberry Pi с видеокамерой, которая ... получает скорость

    Видеокамера скорость НЕ получает. Скорость автомобиля нужно брать от спидометра, с CAN шины, если есть такая возможность. Но можно и с GPS. Там точность показаний будет пониже, но на скорости 150 км/час это уже не будет играть особой роли.

    @lednevandrey04#6851 размещен Банк из 1000 фотографий.

    Что это означает? Есть каталог на SD-в котором лежат 1000 файлов JPG ?

    @lednevandrey04#6851 показывает это ролик на экране монитора

    Это совсем не сложно (Статья😞

    avconv -r  1 -i frame%03d.jpg -r 10 animation.h264
    

    При этом используется программа под названием avconv, которая берет неподвижные изображения в папке и конвертирует их в видео под названием animation.h264. В зависимости от того, сколько кадров вы сделали, этот процесс может занять какое-то время и вы узнаете, что видео готово, когда снова увидите приглашение терминала.

    Чтобы воспроизвести видео, найдите файл animation.h264 в папке animation и дважды щелкните его, чтобы открыть. Кроме того, вы можете воспроизвести его из Терминала, набрав следующее:

    omxplayer animation.h264
    

    Как только видео загрузится, вы увидите, как оживает ваша покадровая анимация. Поздравляем: вы превратили Raspberry Pi в мощную анимационную студию!

    @lednevandrey04#6851 Точнее нужно исследование по этому вопросу.

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


  • Ошибка 443 при git clone
    piP pi

    У меня нормально всё. А время правильно выставлено? Если время сильно неправильное, То могут быть проблемы с ssl сертификатом


  • Ошибка 443 при git clone
    piP pi

    У меня клонировалось всё секунд за 30 без всяких проблем:

    $ git clone https://github.com/th33xitus/kiauh.git
    Клонирование в «kiauh»…
    remote: Enumerating objects: 2624, done.
    remote: Counting objects: 100% (706/706), done.
    remote: Compressing objects: 100% (406/406), done.
    remote: Total 2624 (delta 472), reused 471 (delta 298), pack-reused 1918
    Получение объектов: 100% (2624/2624), 738.23 КиБ | 766.00 КиБ/с, готово.
    Определение изменений: 100% (1840/1840), готово.
    
    

  • Ошибка 443 при git clone
    piP pi
    sudo apt-get install git -y
    cd ~
    git clone https://github.com/th33xitus/kiauh.git
    cd kiauh
    chmod +x kiauh.sh scripts/*
    ./kiauh.sh
    

  • Ошибка 443 при git clone
    piP pi

    полностью команду скинь. могу у себя проверить


  • Автозапуск программы на RP1
    piP pi

    /home/pi/.config/lxsession/LXDE-pi/autostart - попробуй сюда прописать.
    если не получится, смотри после загрузки лог /home/pi/.xsession-errors - там должны быть причина почему твоя программа не стартует.

    проверь права на файле sunvox. У юзера pi должны быть права на запуск этого файла.

    chmod  0777 /home/pi/sunvox/sunvox
    chmod +x /home/pi/sunvox/sunvox
    

  • Автозапуск программы на RP1
    piP pi

    Спасибо, пробовал сделать автозагрузку, но ничего не происходит

    sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
    

    Далее вставляю строку

    @/home/pi/sunvox/sunvox
    

    Сохраняю.
    Путь написал, там в папке лежит исполняемый файл.
    Ничего.


  • Выбор производительной серверной ОС для Raspberry pi 4
    piP pi

    dietpi


  • Автозапуск программы на RP1
    piP pi

    В этот файл - /etc/xdg/lxsession/LXDE-pi/autostart нужно добавить последней строкой путь до исполняемого файла твоей программы
    Отредактировать файл можно в терминале. Запускаешь терминал и в командной строке пишешь

    sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
    

  • Точное управление GPIO
    piP pi

    @VBDUnit#6838, то что у Вас импульсы получаются очень короткими, это очень очень странно.
    Попробуйте посмотреть внутренности функции ndalay или похожей, а также обратите внимание на счётчик тактов процессора, искать можно по слову rtdsc, возможно счётчиков несколько.
    https://raspberrypi.stackexchange.com/questions/24882/armv6-instruction-set-for-getting-timestamp-counter-tsc

    Конечно частота может проседать(при перегреве например), но это решение на первый взгляд лучше nop, по крайней мере не хуже. На первый взгляд коротких импульсов, при её применении, быть не должно.


  • Точное управление GPIO
    piP pi

    @Crush#6833 Как на счет попробовать вместо Delay (или wait, как в этом коде), делать счет циклов, которые равны времени такта процессора (если ничто другое, конечно его не прерывает).
    Как вариант, который иногда применяю, можете делать В каждом цикле явное сравнение пройденного времени dT:
    Прошло 400 then Do.
    Это часто решает вопрос. По началу я только так с ШИМами и работал.

    Пробовал, но для 400 нс оно выдавало то 800, то 500, в итоге сделал просто пачку nop'ов.

    @sv-lary#6830 Да, ESP32 и STM32 тоже ко мне едут 🙂 но что-то долго.

    @Mity999#6835 1) Использовать для работы лент ESP32, а его соединить с raspberry pi например через com порт, ваше время тоже денег стоит, и если разработка единичная, то это может быть самый лучший вариант.

    Мне почему-то тоже кажется что выход будет примерно такой.

    @Mity999#6835 )Обратите внимание на библиотеку https://github.com/sarfata/pi-blaster там через dma сразу выводится на несколько каналов вроде до 32, но там выводится в другом формате. Можно попробовать адаптировать этот код с исходным кодом для одноканального драйвером ленты.

    Очень интересно, пытаюсь сейчас понять как они это сделали.

    @Mity999#6835 Писать в регистры ввода вывода на прямую(предварительно промэпировав их в адресное пространство процесса), минуя какие либо вызовы функций

    Уже 🙂


  • Точное управление GPIO
    piP pi

    Сделал модуль ядра, блокировку прерываний, DMA с возможностью контролировать 20 пинов параллельно (возможно, больше), двойную буферизацию и барьеры памяти. Oсциллограмма пульсирует где-то раз в секунду, удлинняясь-укорачиваясь пропорционально на 10%, но в целом интервалы выдерживаются в пределах допустимых 400+- нс. Пoдмаргиваний стало меньше, но всё еще иногда встречаются раз в 2-3 секунды.

    Ключевое место работает так:

    volatile register uint32_t m;
            while (smallBufferCurPos < smallBufferEnd)
            {
                 //делаем это, только обмазывая всё в три слоя memorybarriами на всякий случай
                //*setReg = *smallBufferCurPos++;
                //*clrReg = *smallBufferCurPos++;
                
                m = READ_ONCE(*smallBufferCurPos);
                barrier();
                WRITE_ONCE(*setReg, m);
                smallBufferCurPos++;
     
                barrier();
     
                m = READ_ONCE(*smallBufferCurPos);
                barrier();
                WRITE_ONCE(*clrReg, m);
                smallBufferCurPos++;
     
                barrier();
                            
                //wait 400 ns
                asm volatile(A_LOT_OF_NOP);
            }
    

    Буферы состоят из uint32_t. По бoльшому буферу бежим указателем с шагом 24 * 3 * 3 * 2. На каждом шаге копируем 24 * 3 * 3 * 2 значения в маленький буфер. smallBuffer содержит в себе 24 * 3 * 3 * 2 значения, каждое значение - это 32 битный uint, в котором хранятся первые 20 бит для выставления/сброса уровней на 20 пинах. Значения в буфере чередуются - биты установки, пoтoм биты сброса, потом снова биты установки и т.п. После каждой пары установки-сброса ждем 400 нс с помощью нопов.

    На oсциллограмме среди нормальных пачек импульсов сумел oткопать битую пачку, где видно причины, по которым вcпыхивают светодиоды (в приложении).

    Описание
    Описание
    Описание
    Описание

    Я не oчень понимаю, почему оно так выглядит. Я бы пoнял, если бы местами осциллограмма была растянута, т.к. комп тормознул и что-то там где-то подгрузил/прерывание прорвалось через блокировку/ещё что-нибудь. Но встречается не только растягивание, но и, наборот, ускорение, где высокий уровень вместо 400 нс длится почти мгновение (Screenshot_2022-01-12-12-53-44.png). То ли я тупой и не умею в барьеры памяти, то ли это ещё какой-то фактoр, который я пока не понимаю.

    Есть ещё мысль большой буфер разместить в некешируемой памяти, чтобы кешировался только маленький, но я пока не мoгу разобраться с линуксовской kernel-функцией dma_alloc_coherent - оно хочет от меня указатель на устройство, а у меня его нет, я просто хочу выделить некешируемую память. NULL не передашь - падает, проверил. Возможно, нужно использовать другую функцию.


  • Точное управление GPIO
    piP pi

    И ещё:
    В основе Raspberry pi лежит процессор, который снижает свою скорость при перегреве, при недостатке питания, возможно ещё когда-то. Также там есть кеш команд/памяти, который разделяется с другими потоками/процессами, спекулятивное исполнение на конец. Поэтому ждать от него точных временных интервалов выполнения команд, как-то странно.
    И система реального времени вряд ли здесь поможет, хотя кто его знает. Но даже если и поможет, то решение получается какое то ненадёжное.


  • Точное управление GPIO
    piP pi

    Несколько абстрактных мыслей, возможно автору они чем то помогут.

    1. Использовать для работы лент ESP32, а его соединить с raspberry pi например через com порт, ваше время тоже денег стоит, и если разработка единичная, то это может быть самый лучший вариант.
      2)Обратите внимание на библиотеку https://github.com/sarfata/pi-blaster там через dma сразу выводится на несколько каналов вроде до 32, но там выводится в другом формате. Можно попробовать адаптировать этот код с исходным кодом для одноканального драйвером ленты.
    2. Писать в регистры ввода вывода на прямую(предварительно промэпировав их в адресное пространство процесса), минуя какие либо вызовы функций
  • 1
  • 2
  • 13
  • 14
  • 15
  • 16
  • 17
  • 313
  • 314
  • 15 / 314
  • Войти

  • Нет учётной записи? Зарегистрироваться

  • Login or register to search.
  • Первое сообщение
    Последнее сообщение
0
  • Категории
  • Главная
  • Документация
  • Последние
  • Пользователи