Помогите начинающему

Тема в разделе "Arduino & Shields", создана пользователем PRIUS, 17 сен 2020.

  1. parovoZZ

    parovoZZ Гуру

    У меня так: на один бит уходит 1.5-1.6 мкс. Соответсвенно, на всю ленту из 450 светодиодов уходит 16740 мкс. В конце каждого "кадра" необходимо сформировать паузу для закрепления результата. У меня она 40 мкс. Грубо считаем и получаем 16800 мкс на один кадр. Чтобы пробежала змейка по всем 450 светодиодам, необходимо сформировать 450 кадров. Итого получается 7.5 секунд. Но по факту больше, т.к. есть накладные расходы на вызов функции и обработчик прерываний.

    Как это сделать в тысячу раз быстрее, я не представляю в принципе.
     
  2. b707

    b707 Гуру

    а, ну это ты на все кадры посчитал... но все равно много.
    Во-первых, почему 1.5 - 1.6 мкс на бит? - по стандарту 1.25
    Итого получаем на 450 диодов и на 450 кадров примерно 6 секунд, а у тебя 11... в два раза больше. Похоже, что твой код формирования цветовой температуры либо очень медленный, либо нифига не выполняется в промежутках между прерываниями, как ты пишешь.

    А ускорять есть куда... хотя конечно не в 1000 раз.
    Во-первых, тебе Томасина уже сказал - у тебя картинка симметрична относительно центра - значит можем считать и хранить только половину массива...и работать вдвое быстрее
    Во-вторых - и это интереснее - раз уж ты сам писал работу с лентой с нуля - стоило использовать параллельный вывод. Делишь ленту на равные части, например 8 частей по 55 ледов - и цепляешь к пинам одного порта. И выводишь одной записью в порт сразу по 8 диодов.

    В итоге получил бы ускорение раз в десять... если твой код отрисовки не тормозит.
    А то что ты написал - так это так же банально и почти так же медленно, как у ТС :))
     
    Ariadna-on-Line и ИгорьК нравится это.
  3. parovoZZ

    parovoZZ Гуру

    потомушта я так захотел. Всё привязано к тактовой частоте и всё кратно ей.

    а есть стандарт? По даташиту допуски на интервалы весьма широки. Оно и понятно - в светодиодах нет ни кварца, ни керамики.

    у меня он честный - 360 градусов на цветность. У всех остальных не более байта.

    а где ж ему ещё выполняться?

    у меня универсальный код. Данный эффект только для демонстрации. Просто он очень простой) И дочурке нравится.

    в 2 раза не получится. SPI можно перевести в буферный режим. Но это даст процентов 20 прироста, а код усложнит на порядок.

    450 светодиодов - это 15 метров ленты. Выгнать однополярный сигнал частотой 800 кГц хотя бы на метр - это нужен коаксиальный кабель с обязательным согласованием. Либо переходить на дифф. сигналы, что усложняет схемотехнику, прокладку проводов....Зачем?

    У ТС 450 светодиодов? Я пробовал все эти библиотеки на 5 метрах ленты - оооочень медленно. В библиотеках сперва идёт расчет, потом вывод. Причём вывод банальный bit bang.
     
  4. Ariadna-on-Line

    Ariadna-on-Line Гуру

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