LINUX.ORG.RU

Поддержка многоцветных светодиодов в ядре

 ,


1

2

Есть светодиод с двумя цветами (зеленый, красный). Светодиод подключен к двум gpio.
Если горят оба цвета, то имеем третий цвет - оранжевый.
Задача: нужно моргать оранжевым цветом.
Использую led-gpio драйвер с heardbeat триггером.
Чтоб решить задачку, приходится настраивать два отдельных led'a и включать моргание на обоих одновременно.
Насколько я понял, драйвер настраивает по отдельному таймеру для каждого светодиода.
В результате иногда получается рассинхрон в моргании. Т.е. зеленый горит, красный не горит и наоборот.
Покопался в ядре и в гугле что-то не нашел поддержки такой фичи. Неужели одному мне нужно? :)
Очень не хотелось бы этот функционал переносить в userspace.

★★★★

Ответ на: комментарий от pftBest

А если просто соединить красную и зеленую ногу на один gpio :)

Так ведь иногда нужно светить только зеленым или только красным...

Dead ★★★★
() автор топика

В ядре есть gpio trigger. Назначаешь на один цвет таймер, а на другой gpio trigger и указываешь номер ноги первого. Не проверял но вроде должно сработать.

pftBest ★★★★
()

Так вот зачем нужно риалтаймовое ядро!

CYB3R ★★★★★
()
Ответ на: комментарий от pftBest

В ядре есть gpio trigger. Назначаешь на один цвет таймер, а на другой gpio trigger и указываешь номер ноги первого. Не проверял но вроде должно сработать.

Простите, не до конца уловил вашу мысль... Что-то не могу распарсить :)

Dead ★★★★
() автор топика
Ответ на: комментарий от Andrey_Utkin

Вроде диодами такое разруливается.

Схематику мне поменять весьма проблематично. Но как я понимаю, все равно нужны две управляющие ноги. Иначе как закодировать три цвета?

Dead ★★★★
() автор топика
Ответ на: комментарий от Dead

Иначе как закодировать три цвета?

В твоем случае если делать на диодах, то нужны 3 gpio ножки, двух не хватит.

Что-то не могу распарсить

echo "timer" > /sys/class/leds/red/trigger
echo "1000" > /sys/class/leds/red/delay_on
echo "1000" > /sys/class/leds/red/delay_off

echo "gpio" > /sys/class/leds/green/trigger
echo "245" > /sys/class/leds/green/gpio

Где 245 - номер ноги на которой сидит красный.

pftBest ★★★★
()
Последнее исправление: pftBest (всего исправлений: 1)
Ответ на: комментарий от pftBest

В твоем случае если делать на диодах, то нужны 3 gpio ножки, двух не хватит.

Спасибо! Теперь понял. Однако схему мне поменять не дадут. Да и gpio уже заканчиваются.
Наверное, для оранжевого цвета напишу моргание через userspace. Как частный случай пойдет.

Dead ★★★★
() автор топика
Ответ на: комментарий от xterro

Дожили, для моргания светодиодом драйвер ядра нужен...

А вы попробуйте из юзерспейса поморгать светодиодом так, чтобы отображать сетевую активность или использование накопителя. Не спорю, можно и изгольнуться и накостылить свое решение. Но проще использовать готовую подсистему led со всем набором «вкусных» триггеров.

Dead ★★★★
() автор топика
Ответ на: комментарий от Dead

Спасибо! Теперь понял.

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

pftBest ★★★★
()
Ответ на: комментарий от Morin

ну так и моргай одновременно двумя цветами, или я что-то в этой жизни пропустил?

Ээээ.... вы подсистему led в ядре использовали/смотрели?

Dead ★★★★
() автор топика
Ответ на: комментарий от pftBest

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

Вот теперь на самом деле понял :)
Красный, моргая, будет дергать триггер у зеленого светодиода.
А это Мысль! :)

Dead ★★★★
() автор топика
Ответ на: комментарий от Dead

блин, ну давай с тремя пинами, раз с счетчиками не как гонки не убрать. С общим катодом, как пример, баласты к катодам, два порта цветов к баластам. Синхро делаем анодом, к аноду третий порт, в неактивном состоянии на аноде +, выставляем нужное состояние на катодах, после этого опускаем ногу анода в -.

Morin ★★★★
()
Ответ на: комментарий от Morin

Блин, намутил конечно баласты к анодам а синхро катод

Спасибо, я примерно понял. Но схему менять по этому поводу мне навряди дадут. Так как теоретически в софте все сделать можно.

Dead ★★★★
() автор топика
Ответ на: комментарий от Dead

при негарантированном времени отклика? ну я прям не знаю, а что менять в схеме? оторвать землю и перевесить на порт? ну прям скажем совсем простая модификация

Morin ★★★★
()
Ответ на: комментарий от Morin

оторвать землю и перевесить на порт?

С портами напряг :)
Нужны веские основания, чтобы использовать еще один порт.

Dead ★★★★
() автор топика
Ответ на: комментарий от Dead

Хорошо что сработало!
P.S. Может у вас есть свободные вакансии? Ищу сейчас работу в минске, а обьявлений про embedded что-то не видать.

pftBest ★★★★
()
Ответ на: комментарий от pftBest

P.S. Может у вас есть свободные вакансии? Ищу сейчас работу в минске, а обьявлений про embedded что-то не видать.

Могу посодействовать. отпишитесь на musor.trash собака gmail.com

Dead ★★★★
() автор топика
Ответ на: комментарий от Dead

все равно нужны две управляющие ноги.

Добавив совсем немного рассыпухи можно и на три выхода повесить (на каждый цвет свой goip канал).

beastie ★★★★★
()

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

exception13 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.