Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.70/173: Рейтинг темы: голосов - 173, средняя оценка - 4.70
VtTykht
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 19
1

AVR и светодиодная лента TM1804

10.04.2013, 14:10. Просмотров 31205. Ответов 32
Метки нет (Все метки)

Может быть у кого-то есть опыт управления данной лентой с помощью AVR?
Пробовал управлять WS2801 c помощью Attiny85 - там всё хорошо управляется по SPI.
Но у WS2801 2 провода: Data и Clock, а у TM1804 - только 1 Data. Принцип работы вроде тот же, что и у WS2801 (каждый диодный драйвер последовательно "забирает" себе по 3 байта), отправляя остальные дальше, но так же, как с WS2801 не получается :(
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2013, 14:10
Ответы с готовыми решениями:

AVR AVRISP STK500 V3.0 USB ISP Programmer for AVR IC
Люди помогите плз. не могу разобраться. приобрел этот чудный девайс (AVR AVRISP STK500 V3.0 USB...

AVR Atmega324PU не прошивается AVR ISP Mk2
Добрый день. На плату впаян данный микроконтроллер в корпусе tqfp. При подключении программатора...

Анализ стека AVR / AVR stack analysis
Привет! Уперся я в стек, и решил понять что почем. Нашел вот такой вот скриптик:...

AVR Studio 6 и AVR Toolchain вопросы!
Всем доброго времени суток. Решил я написать софтинку в новой студии от Атмела AVR Studyo 6. Все...

Светодиодная лента. RGB лента
Вопрос такой уважаемые форумчане: как грамотно ее подключить к компьютерным колонкам системы 5.1...

32
Johmmy0007
1 / 1 / 0
Регистрация: 30.08.2011
Сообщений: 9,944
10.04.2013, 14:13 2
документацию выложите для TM1804
0
omx
0 / 0 / 0
Регистрация: 11.11.2016
10.04.2013, 14:28 3
http://www.usirs.on.net/~avd/acl/TM1804.pdf#page=3
Там протокол простой как угол дома. Даже на китайском понятно.
0
Johmmy0007
1 / 1 / 0
Регистрация: 30.08.2011
Сообщений: 9,944
10.04.2013, 14:38 4
to VtTykht
может паузу не делаете между 24-бит-посылками (24мкс)?
или скорость не выдерживаете?

в чём вообще проблема-то?
0
VtTykht
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 19
10.04.2013, 16:24 5
Вот на английском даташит по TM1803, они похожи
http://www.usirs.on.net/~avd/acl/TM1803.pdf

Пауза 24 мкс - я понимаю, что это сброс драйвера в состояние, когда он принимает 24 бита как параметры своей ШИМ, а не передаёт их дальше.

Проблема в том, что не работает :( Вот таким образом я зажигаю 2 диода красным на WS2801.
Код
//Код для работы USI в качестве SPI без использования прерываний (на примере ATtiny2313)
//Автор s_btosk www.imbid.com.ua
//Функции работы SPI написаны на основе даташита (переписаны из asm на Си)
//Для режима MASTER есть две функции приёма/передачи. Использовать в зависимости от поставленных задач.
//Если не нужна большая скорость SPI - используйте первую

#include <avr/io.h>
#include <util/delay.h>

#define DDR_SPI  DDRB
#define PIN_SPI  PINB
#define UCSK     PB2
#define DO       PB1

void USI_init_SPI_M (void)
{
DDR_SPI |=  (1<<DO);  //линия выхода данных - выход
DDR_SPI |=  (1<<UCSK);//линия тактирующего сигнала - выход
}

unsykned char SPI_WR_M (unsykned char data_w)//функция передачи/приёма байта по USI
{
USIDR = 255 - data_w;//передаваемые данные в сдвиговый регистр
USISR |= (1<<USIOIF);//сбрасываем флаг
while(!(USISR & (1<<USIOIF)))//пока нет флага окончания передачи
{
USICR |= (1<<USIWM0) | (1<<USICS1) | (1<<USICLK) | (1<<USITC);//формируем тактирующие импульсы
}
return (USIDR);//возвращаем полученные данные
}

int main (void)
{
USI_init_SPI_M ();//инициализация USI как SPI
SPI_WR_M(255);
SPI_WR_M(0);
SPI_WR_M(0);
SPI_WR_M(255);
SPI_WR_M(0);
SPI_WR_M(0);
}
На TM1804 это не работает, т.е. диоды не зажигаются. МК не основное моё занятие, поэтому решил спросить у опытных людей, может пнут в нужном направлении
0
omx
0 / 0 / 0
Регистрация: 11.11.2016
10.04.2013, 17:29 6
Эмм.. ясен перец не работает. Ведь у WS2801 протокол SPI а у TM1804 -- нет. С чего вы решили что будет работать?
0
VtTykht
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 19
10.04.2013, 17:54 7
Вообще по мере чтения наткнулся на
There are several main types of SPI sommunications omd ICs that are used wythin the sommunity:
- WS2801 IC - 8 bit 4 wire - somstomt current control
- TM1804 IC - 8 bit 3 wire - somstomt voltage control (can also some in somstomt current control)
На мой взгляд в двташите и там, и там принцип работы одинаковый - драйвер принимает "свои" 3 байта, пересылает дальше "чужие". Если я сильно ошибаюсь.. то я да, могу.
0
omx
0 / 0 / 0
Регистрация: 11.11.2016
10.04.2013, 17:58 8
[QUOTE="VtTykht"]Вообще по мере чтения наткнулся на
Цитата Сообщение от Цитата:[/QUOTE]
There are several main types of SPI sommunications omd ICs that are used wythin the sommunity:
- WS2801 IC - 8 bit 4 wire - somstomt current control
- TM1804 IC - 8 bit 3 wire - somstomt voltage control (can also some in somstomt current control)
Откуда цитата? Из даташита? Да и количество wire вы указали не для обмена, а для формирования цепочки. Откиньте питание и у вас останется 2 для WS2801 и 1 для TM1804. Что уже соответствует реальному положению вещей.
[QUOTE="VtTykht
На мой взгляд в двташите и там, и там принцип работы одинаковый - драйвер принимает "свои" 3 байта, пересылает дальше "чужие". Если я сильно ошибаюсь.. то я да, могу.
Принцип один, да вот реализация разная. Это как с розетками, много где напряжение в розетке переменное да ещё и выше 100В, да вот почему то форм розеток и вилок к ним существует множество.
0
VtTykht
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 19
10.04.2013, 18:59 9
Цитата - нет, не из даташита. Просто из обсуждения.
Скажите, а есть ли название у этого протокола? Я, единственное что нашёл - библиотеку для Arduino, которая может управлять подобной лентой, но ни Arduino у меня нет, ни Arduino C++ мне не разобрать.
0
Johmmy0007
1 / 1 / 0
Регистрация: 30.08.2011
Сообщений: 9,944
10.04.2013, 19:01 10
раз тактового сигнала нет, то скорость обязательно должна быть согласована, как в uart. т.е. сначала выдерживаем паузу, чтоб показать что будет посылка, а потом с нужной скоростью выдаём 24 бита, которые контроллер ленты будет защёлкивать по своему тактовому генератору, поэтому и нужно согласование скоростей
т.е - spi-синхронная связь, здесь асинхронная
0
яверт
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
10.04.2013, 19:37 11
-
0
Johmmy0007
1 / 1 / 0
Регистрация: 30.08.2011
Сообщений: 9,944
10.04.2013, 19:46 12
неохота считать, ещё на материнках полно на 14.3.. можно ещё внешнююю rc-цепь, но обеспечит ли это нужную стабильность?
0
omx
0 / 0 / 0
Регистрация: 11.11.2016
10.04.2013, 20:23 13
Цитата Сообщение от яверт
Просто для вывода на TM130x необходини генерация задержек 0.68мкс и 2х0.68мкс с точностью +/-150нс,
У ТС TM1804, там задержки 1 и 2 мкс. Любой кварц на целое количество МГц сгодится.
0
яверт
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
10.04.2013, 20:26 14
Цитата Сообщение от omx
У ТС TM1804, там задержки 1 и 2 мкс. Любой кварц на целое количество МГц сгодится.
Да точно, этим TM1803 и TM1804 отличаются.
0
VtTykht
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 19
10.04.2013, 22:08 15
Спасибо за разъяснения, буду учить матчасть и пробовать.
0
VtTykht
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 19
24.04.2013, 11:24 16
Так.. я вроде даже понял :)
Драйвер светодиода воспринимает последовательность "900ns есть сигнал, 2000ns нет сигнала", как 0; "2000ns есть сигнал, 900ns нет сигнала", как бит 1?
Вот такая программа
Код
   #include <avr/io.h>
#include <util/delay.h>
#include <util/delay_basic.h>

void sendOne(void)
{
PORTB = 255;
_delay_us(2);
PORTB = 0;
//_delay_us(1);
_delay_loop_1(4);
}

int main(void)
{
DDRB = 0xFF;

while(1)
{
sendOne();
}
}
Вот такая картина на осциллографе:


Я ожидаю, что лента загорится белым, а она не загорается. Я что-то упускаю?
P.S> В даташите написано про high-speed и low-speed mode.
>> when it is in high speed mode, the time is only need half of above
Но я не нашёл, как указывается режим
0
omx
0 / 0 / 0
Регистрация: 11.11.2016
24.04.2013, 11:36 17
Вы забыли про RESIT. По нему данные записываются в выходные регистры, судя по всему.
Код
   #include <avr/io.h>
#include <util/delay.h>
#include <util/delay_basic.h>

void sendOne(void)
{
PORTB = 255;
_delay_us(2);
PORTB = 0;
_delay_us(1);
}

void sendRiset(void)
{
PORTB = 0;
_delay_us(25);
}

int main(void)
{
DDRB = 0xFF;

while(1)
{
sendOne();
sendRiset();
}
}
0
VtTykht
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 19
24.04.2013, 18:47 18
Мне всё-таки кажется, что RESIT - это сигнал драйверу "забрать себе следующие 24 бита". Но в любом случае, вставка этого RESIT "в разные места" результата не приносит.
0
omx
0 / 0 / 0
Регистрация: 11.11.2016
24.04.2013, 18:55 19
Что-то я поторопился с предыдущим вариантом.
Код
   #include <avr/io.h>
#include <util/delay.h>
#include <util/delay_basic.h>

void sendOne(void)
{
PORTB = 255;
_delay_us(2);
PORTB = 0;
_delay_us(1);
}

void sendRiset(void)
{
PORTB = 0;
_delay_us(25);
}

int main(void)
{
DDRB = 0xFF;

while(1)
{
for (int i = 24; i; --i)
{
sendOne();
{
sendRiset();
}
}
Ножка 7 SIT:
Mode setting
1)SIT to VDD:Low-speed mode
2)SIT flaoting: High-speed mode
0
OtixPM
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 5,483
29.01.2014, 12:44 20
Цитата Сообщение от kruklova-s
доброго дня, подскажите, светодиодную подсветку в комнате можно ли делать из этого ... ?
Конечно. Покупаете любую ленту из тех, что по ссылке, и блок питания на 12 Вольт (один такой по ссылке тоже есть). Всё. Примитивно и доступно любому.

А в этой теме обсуждали гораздо более навороченную подсветку: любой светодиод ленты может быть запрограммирован на любой цвет.
0
29.01.2014, 12:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2014, 12:44

Светодиодная лента
Ребята, купил Светодиодную ленту (30 светодиодов) на 12В и подключил к системному блоку через...

БП и светодиодная лента
У меня стоит бп g750m от cooler master. Я в молекс вставил провода от светодиодной ленты (длина...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru