Страница 3 из 6
Re: Светодиоды c пиксельной адресацией WS2812B
Добавлено: Сб окт 22, 2016 12:45:39
СКАЗОЧНИК
akl писал(а):Нет. Разбираться не стал
Там просто у ЮАРТа особенность в том, что он линию по умолчанию перевернутой держит. И для его использования, надо внешний инвертор ставить. Любой.
я думаю какой-нибудь p-n-p транзистор с общим эмиттером что ли . )))

Re: Светодиоды c пиксельной адресацией WS2812B
Добавлено: Сб окт 22, 2016 12:46:55
akl
Я в курсе.
Re: Светодиоды c пиксельной адресацией WS2812B
Добавлено: Сб окт 22, 2016 13:01:15
Z_h_e
akl писал(а):Программа на UART чёто не пошла.
Я погляжу на следующей неделе. Дописывал ее в неком тумане. Но вроде как на выход то что-то выдавало и вроде как по делу.
Re: Светодиоды c пиксельной адресацией WS2812B
Добавлено: Вс окт 23, 2016 08:21:06
akl
Заснял работу программы пересылки кодов $95 $81 $33 WS2812B

собственно макет

начало передачи $95

конец передачи кода $33.
Re: Светодиоды c пиксельной адресацией WS2812B
Добавлено: Вс окт 23, 2016 08:36:08
Z_h_e
akl писал(а):Заснял работу программы пересылки кодов $95 $81 $33 WS2812B
Это Вы со своим кодом провели эксперемент?
Проверил свой уартовский код в протеусе . Работает. Была одна ошибка, инкрементирование Z было заремарчено и количество байт в X должно быть двойным значением. Но все равно выдавать что-то должен был. Обратите внимание, что в обработчике прерывания не сохраняются флаги.
Спойлер
Код: Выделить всё
.equ eMaskData=~0x24
//---------------------------------------
.def zero=R1
.def buf=R16
.def MaskData =R17 //флаг что надо передавать старшую половину байта
.def DataSend=R18 //текущие отправляемые данные
.def RegSum=R19
//---------------------
.org 0
rjmp RESET ; Reset Handler
reti// rjmp INT0 ; External Interrupt0 Handler
reti// rjmp INT1 ; External Interrupt1 Handler
reti// rjmp TIM1_CAPT ; Timer1 Capture Handler
reti// rjmp TIM1_COMPA ; Timer1 CompareA Handler
reti// rjmp TIM1_OVF ; Timer1 Overflow Handler
reti// rjmp TIM0_OVF ; Timer0 Overflow Handler
reti// rjmp USART0_RXC ; USART0 RX Complete Handler
rjmp USART0_DRE ; USART0,UDR Empty Handler
reti// rjmp USART0_TXC ; USART0 TX Complete Handler
reti// rjmp ANA_COMP ; Analog Comparator Handler
reti// rjmp PCINT0 ; PCINT0 Handler
reti// rjmp TIMER1_COMPB ; Timer1 Compare B Handler
reti// rjmp TIMER0_COMPA ; Timer0 Compare A Handler
reti// rjmp TIMER0_COMPB ; Timer0 Compare B Handler
reti// rjmp USI_START ; USI Start Handler
reti// rjmp USI_OVERFLOW ; USI Overflow Handler
reti// rjmp EE_READY ; EEPROM Ready Handler
reti// rjmp WDT_OVERFLOW ; Watchdog Overflow Handler
reti// rjmp PCINT1 ; PCINT1 Handler
reti// rjmp PCINT2 ; PCINT2 Handler
//*************************************************************************
//--------------------------------------------
USART0_DRE:
clr RegSum
//--------
brts HiData
lpm DataSend,Z+
swap DataSend
set
rjmp mask
HiData:
lpm DataSend,Z
clt
mask:
ldi MaskData,eMaskData
rol DataSend
BrCc PC+3
andi MaskData,~(1<<0)
inc RegSum
rol DataSend
BrCC PC+3
andi MaskData,~(1<<3)
inc RegSum
rol DataSend
BrCC PC+3
andi MaskData,~(1<<6)
inc RegSum
sbrc DataSend,7
inc RegSum
sbrc RegSum,0
ldi buf,(1<<UPM1)|(1<<UPM0)|(1<<UCSZ1)|(1<<UCSZ0) // (1<<UPM0) нечетность
sbrs RegSum,0
ldi buf,(1<<UPM1)|(0<<UPM0)|(1<<UCSZ1)|(1<<UCSZ0) // (0<<UPM0) четность
out UCSRC,buf
//ldi MaskData,0xFF
out UDR,MaskData
sbiw X,1
brne pc+3
ldi buf,(0<<UDRIE)|(1<<TXEN)|(1<<UCSZ2) //запррешить прерывания пустого буфера
out UCSRB,buf
reti
//------------------------
//***************************************************************************
RESET: //
ldi buf,low(RAMEND)
out SPL, buf
//ldi buf,High(RAMEND)
//out SPH,buf
//настройка UART
ldi buf,1<<U2X
out UCSRA,buf
ldi buf,(0<<UDRIE)|(1<<TXEN)|(1<<UCSZ2)|(1<<TXB8)
out UCSRB,buf
ldi buf,(1<<UPM1)|(1<<UCSZ1)|(1<<UCSZ0)
out UCSRC,buf
ldi buf,0x00
out UBRRL,buf
sei
//*****************************************************
//Запуск передачи
ldi Zl,Low(Data*2) //откуда
ldi Zh,high(Data*2)
ldi Xl,Low(8) //сколько *2
ldi Xh,high(8)
SET
ldi buf,(1<<UDRIE)|(1<<TXEN)|(1<<UCSZ2) //разрешить прерывания пустого буфера
out UCSRB,buf
//****************************************************
loop:
rjmp loop
//*********************8
Data:
.db 0x51,0x00,0xA1,0x00
Re: Светодиоды c пиксельной адресацией WS2812B
Добавлено: Вс окт 23, 2016 09:22:30
akl
Да, своим. Ваш код начал работать, но с лапы PD1/TxD через инвертор идет такой сигнал. По мне, не очень похоже.

Чтобы как-то синхронизироваться, добавил несколько строчек в Вашу программу
Спойлер
Код: Выделить всё
.include "tn2313def.inc"
.equ eMaskData=~0x24
//---------------------------------------
.def zero=R1
.def buf=R16
.def MaskData =R17 //флаг что надо передавать старшую половину байта
.def DataSend=R18 //текущие отправляемые данные
.def RegSum=R19
//---------------------
.org 0
rjmp RESET ; Reset Handler
reti// rjmp INT0 ; External Interrupt0 Handler
reti// rjmp INT1 ; External Interrupt1 Handler
reti// rjmp TIM1_CAPT ; Timer1 Capture Handler
reti// rjmp TIM1_COMPA ; Timer1 CompareA Handler
reti// rjmp TIM1_OVF ; Timer1 Overflow Handler
reti// rjmp TIM0_OVF ; Timer0 Overflow Handler
reti// rjmp USART0_RXC ; USART0 RX Complete Handler
rjmp USART0_DRE ; USART0,UDR Empty Handler
reti// rjmp USART0_TXC ; USART0 TX Complete Handler
reti// rjmp ANA_COMP ; Analog Comparator Handler
reti// rjmp PCINT0 ; PCINT0 Handler
reti// rjmp TIMER1_COMPB ; Timer1 Compare B Handler
reti// rjmp TIMER0_COMPA ; Timer0 Compare A Handler
reti// rjmp TIMER0_COMPB ; Timer0 Compare B Handler
reti// rjmp USI_START ; USI Start Handler
reti// rjmp USI_OVERFLOW ; USI Overflow Handler
reti// rjmp EE_READY ; EEPROM Ready Handler
reti// rjmp WDT_OVERFLOW ; Watchdog Overflow Handler
reti// rjmp PCINT1 ; PCINT1 Handler
reti// rjmp PCINT2 ; PCINT2 Handler
//*************************************************************************
//--------------------------------------------
USART0_DRE:
clr RegSum
//--------
brts HiData
lpm DataSend,Z+
swap DataSend
set
rjmp mask
HiData:
lpm DataSend,Z
clt
mask:
ldi MaskData,eMaskData
rol DataSend
BrCc PC+3
andi MaskData,~(1<<0)
inc RegSum
rol DataSend
BrCC PC+3
andi MaskData,~(1<<3)
inc RegSum
rol DataSend
BrCC PC+3
andi MaskData,~(1<<6)
inc RegSum
sbrc DataSend,7
inc RegSum
sbrc RegSum,0
ldi buf,(1<<UPM1)|(1<<UPM0)|(1<<UCSZ1)|(1<<UCSZ0) // (1<<UPM0) нечетность
sbrs RegSum,0
ldi buf,(1<<UPM1)|(0<<UPM0)|(1<<UCSZ1)|(1<<UCSZ0) // (0<<UPM0) четность
out UCSRC,buf
//ldi MaskData,0xFF
out UDR,MaskData
sbiw X,1
brne pc+3
ldi buf,(0<<UDRIE)|(1<<TXEN)|(1<<UCSZ2) //запррешить прерывания пустого буфера
out UCSRB,buf
reti
//------------------------
//***************************************************************************
RESET: //
ldi buf,low(RAMEND)
out SPL, buf
//ldi buf,High(RAMEND)
//out SPH,buf
SBI DDRB,7
SBI PINB,7
CLR YH
CLR YL
//настройка UART
ldi buf,1<<U2X
out UCSRA,buf
ldi buf,(0<<UDRIE)|(1<<TXEN)|(1<<UCSZ2)|(1<<TXB8)
out UCSRB,buf
ldi buf,(1<<UPM1)|(1<<UCSZ1)|(1<<UCSZ0)
out UCSRC,buf
ldi buf,0x00
out UBRRL,buf
sei
//*****************************************************
//Запуск передачи
ldi Zl,Low(Data*2) //откуда
ldi Zh,high(Data*2)
ldi Xl,Low(8) //сколько *2
ldi Xh,high(8)
SET
ldi buf,(1<<UDRIE)|(1<<TXEN)|(1<<UCSZ2) //разрешить прерывания пустого буфера
out UCSRB,buf
//****************************************************
loop:
SBIW Y,1
BRNE LOOP
; rjmp loop
RJMP RESET
//*********************8
Data:
.db 0x51,0x00,0xA1,0x00
.exit
Re: Светодиоды c пиксельной адресацией WS2812B
Добавлено: Вс окт 23, 2016 09:47:20
Z_h_e
Тогда Вы забыли добавить сохранение флагов.
akl писал(а):По мне, не очень похоже.
Придется попросить СКАЗОЧНИКА протестировать на реальных светодиодах. Тайминги то не идеальные.
Добавлено after 14 minutes 45 seconds:
Кстати, на 16МГц то не получится так делать. На 20МГц предделитель нулевой, плюс двойная скорость.
Re: Светодиоды c пиксельной адресацией WS2812B
Добавлено: Ср окт 26, 2016 17:48:12
СКАЗОЧНИК
Доброго всем дня.
Вопрос тут меня мучает. Чем питать такие светодиоды? Если их 72 штуки, то при белом свете они будут жрать примерно 60 мА * 72 = 4,32 Ампера.
Питаются они от 5 Вольт.
Какой использовать ДС-ДС с 24 Вольта на 5 Вольт с таким током?
Re: Светодиоды c пиксельной адресацией WS2812B
Добавлено: Ср окт 26, 2016 20:58:15
Mishany
Две lm2596 с двух сторон ленты. Будет до 6А в пике
Добавлено after 2 minutes 17 seconds:
Вы если что кидайте мне прошивку потестю на 8меге у меня есть 5м этих диодов, и логический анализатор
Re: Светодиоды c пиксельной адресацией WS2812B
Добавлено: Ср окт 26, 2016 21:02:26
СКАЗОЧНИК
У меня есть 34063 много... Они дешево обошлись. Смотрю сейчас реализацию на них...
У меня не лента, а колечко 15 см в диаметре с этими светодиодами в два ряда. Хотелось бы обойтись одним блоком питания, даже если и подключать его с двух сторон.
Добавлено after 3 minutes 2 seconds:
И вроде тестить мне есть на чем, и логический анализатор тоже есть. Да у меня и прошивка работает, которая меня пока устраивает. Еще надо бы прошивку с ЮАРТом проверить, которую выше выкладывали.
А у меня стопор возник. Т.к. контроллер и светодиоды я питаю тупо с 7805, то она естественно, ахриневает от такой наглости.

Сильно греется, начинает дымить канифолью и приходится все выключать, чтобы остыла...

Re: Светодиоды c пиксельной адресацией WS2812B
Добавлено: Ср окт 26, 2016 21:33:02
Z_h_e
СКАЗОЧНИК писал(а):Еще надо бы прошивку с ЮАРТом проверить
Флаги не забудьте сохранять и при необходимости регистры. Кстати, заметьте. В одном кадре у меня передаются 4 значащих бита. Просто я видел в одном месте описание как использовать УАРТ, там предлагают только 3 бита за кадр. Что явно не удобно. Для 4 бит пришлось задействовать бит четности и длину данных 9 бит.
СКАЗОЧНИК писал(а):я питаю тупо с 7805, то она естественно, ахриневает от такой наглости.
Возмите помощнее транзюк. Выход 7805 сразу на базу, нагрузку на эммитер. На коллектор напряжение поближе к 5в, чтобы меньшую мощность рассеивать.
Вот, первая попавшаяся картинка эмиттерного повторителя.
Спойлер

Добавлено after 10 minutes 42 seconds:
.def MaskData =R17 из исходника можно выкинуть, остался как аппендикс.
Re: Светодиоды c пиксельной адресацией WS2812B
Добавлено: Ср окт 26, 2016 21:47:20
СКАЗОЧНИК
Z_h_e писал(а):Кстати, заметьте. В одном кадре у меня передаются 4 значащих бита.
К своему стыду и сожалению

ни разу не пользовался ЮАРТом в своей жизни. Просто как-то не надо было. Лишь поверхностно читал и понимаю его работу. RS-232 это тоже ЮАРТ? Или я чего-то путаю?
Z_h_e писал(а): На коллектор напряжение поближе к 5в,
Вот это хрен знает как обеспечить... ибо есть только входящие 24-26 Вольт (борт сеть УРАЛа)

и понизить их и стоит задача.
Z_h_e писал(а): первая попавшаяся картинка эмиттерного повторителя.
Это под что? После КРЕНки? Чет я не понимаю. Спать пора идти... 4 утра уже.

Re: Светодиоды c пиксельной адресацией WS2812B
Добавлено: Ср окт 26, 2016 21:57:53
Z_h_e
СКАЗОЧНИК писал(а):. RS-232 это тоже ЮАРТ?
Он и есть. Еще поправка к программе UART. Изначально, с какого-то перепугу, я указал что выход на ноге PB4. Само собой на PB1, именно там Tx.
СКАЗОЧНИК писал(а):ибо есть только входящие 24-26 Вольт
Это жестоко так понижать до 5 В. Но если кренка держит такой режим, то мощный транзистор тоже должен. Какой-нибудь в дубовом корпусе из металла

на радиатор. Лампочку еще можно повесить между + питания и коллектором.
СКАЗОЧНИК писал(а):Это под что? После КРЕНки? Чет я не понимаю.
Выход кренки напрямую на базу, коллектор или сразу на + "Урала" или через лампочку, питание светодиодов на эммитер. Все тепло будет уже рассеиваться на транзисторе.
Re: Светодиоды c пиксельной адресацией WS2812B
Добавлено: Ср окт 26, 2016 22:01:26
СКАЗОЧНИК
Z_h_e писал(а):Но если кренка держит такой режим, то мощный транзистор тоже должен.
Вот тут заминка.

Я тестирую схему на столе и подаю на КРЕНку 10 Вольт всего. Однако же вроде на них можно до 30 Вольт подавать, но следить за током...
Z_h_e писал(а):питание светодиодов на эммитер.
Так КРЕНка будет выступать в роли стабилизатора - стабилитрона? Попробую конечно.
А зачем тогды в схеме нарисован Rн?
Re: Светодиоды c пиксельной адресацией WS2812B
Добавлено: Ср окт 26, 2016 22:07:18
Z_h_e
Кстати. На том же МК, можно сделать ШИМ 1/3. Подать на ключ, который будет заряжать кондер приличной емкости. Если его правильно подобрать, то при включенной нагрузке на нем будет около 1/3 напряжения. Это же будет проще стабилизировать в 5. А когда нагрузки не будет, то пускай он заряжается до максимума, нет тока - нет тепла.
Добавлено after 43 seconds:
Rн - это ваши светодиоды.
Добавлено after 3 minutes 24 seconds:
30 Вольт подавать, но следить за током...
Кроме этого, надо еще следить за рассеиваемой мощностью. Подали 11, на выход 5. Значит на ней упало 6 В. Предположим ток 1,5А. Надо рассеять тепла 9Вт. Поглядите в ДШ сколько допустимо.
Re: Светодиоды c пиксельной адресацией WS2812B
Добавлено: Ср окт 26, 2016 22:08:53
СКАЗОЧНИК
Z_h_e писал(а):надо еще следить за рассеиваемой мощностью. Подали 11, на выход 5. Значит на ней упало 6 В. П
Ну, я то и имел ввиду.

Чем больше разница во входном и выходном, тем все хуже и сложнее...
Re: Светодиоды c пиксельной адресацией WS2812B
Добавлено: Ср окт 26, 2016 22:15:05
Z_h_e
Если имеет значение, то еще и очень низкий КПД. Больше будет воздух греть, чем светить
Добавлено after 4 minutes 28 seconds:
Проще что-нибудь
такое.
У китайцев поди еще за 3 рубля за кучку можно взять

Re: Светодиоды c пиксельной адресацией WS2812B
Добавлено: Ср окт 26, 2016 22:17:36
СКАЗОЧНИК
Это мало. У китайцев смотрел. В районе 200 рублей за штуку. А мне надо две таких. И светодиодов еще 100 штук надо и уже почти 1000 рублей получается... Дорого.
А дома есть 34063 целая куча. Думал, может из них чего замутить.
http://c2.at.ua/load/skhemy_na_mikroskh ... 3/13-1-0-8
Re: Светодиоды c пиксельной адресацией WS2812B
Добавлено: Чт окт 27, 2016 02:08:52
akl
Z_h_e писал(а):к программе UART... Изначально, с какого-то перепугу, я указал что выход на ноге PB4. Само собой на PB1, именно там Tx...
Наверно имелся ввиду PD1. У какого контроллера TxD сидит на PB1 не нашел.
СКАЗОЧНИК писал(а):А дома есть 34063 целая куча. Думал, может из них чего замутить.
Можно посмотреть в сторону разветвления питания. Эти микрухи имеют довольно мощный выход. Если с каждого стаба снимать 1А, потребуется всего 5 штук для светиков.
Re: Светодиоды c пиксельной адресацией WS2812B
Добавлено: Чт окт 27, 2016 05:12:03
Z_h_e
akl писал(а):Наверно имелся ввиду PD1. У какого контроллера TxD сидит на PB1 не нашел.
Наверное
