Re: Фоновая подсветка телевизора Ambilight
Цитата:
Сообщение от
SBorovkov
я так устроен, что пробовать как работает железка без железки не могу :-).
Это проходит ;)
Цитата:
В удовольствие, по крайней мере. А есть малоногие микрухи программируемой логики? Паяемое без фена, типа TQFP64, не больше.
Да, конечно. Но там мало регистров. MAX3000
http://www.altera.com/products/devic...-overview.html
Или MaxII (интереснее, в нём есть внутренний генератор и небольшая EEPROM)
http://www.altera.com/products/devic...-overview.html
Но минимум 100 ножек.
Единственно, что для них ещё надо будет делать самому программатор через параллельный порт или покупать готовый для USB баксов за 40-50. И получается, что проще потратить $120 и иметь гораздо более мощный чип с кучкой периферии, чем собирать самому.
Re: Фоновая подсветка телевизора Ambilight
Собрал на 24 каналана макетке, все работает отлично, иногда при динамичных сценах наблюдается легкое оставание подсветки...
и, кстати бок с просвечиванием некоторых диодов проявился только на 1 канале, тоесть проблема в качестве УЛН-ок
Уважаемый SBorovkov, а не могли бы Вы выложить платку на 42 канала в лайауте? а то не хочется что-то руками перерисовывать... :)
Re: Фоновая подсветка телевизора Ambilight
IgorSokol, я выложил в том, что было - eagle, в этом http://www.compcar.ru/forum/showpost...&postcount=315 сообщении. Как преобразовать в spring layout - не знаю. И даже не знаю существует ли такая операция.
Eagle - более продвинутая программа, чем spring layout и позволяет сначала нарисовать схему, а потом по ней рисовать плату. И даже более того, любое изменение в схеме сразу отражается на плате. Поэтому более-менее сложные схемы, в которых легко ошибиться, я предпочитаю рисовать в eagle.
Честно говоря не знаю, удастся ли загрузить эту плату в бесплатную версию eagle (у бесплатной версии ограничения - размер платы и только два слоя, верхний и нижний).
Re: Фоновая подсветка телевизора Ambilight
Цитата:
Сообщение от
SBorovkov
IgorSokol, я выложил в том, что было - eagle, в этом
http://www.compcar.ru/forum/showpost...&postcount=315 сообщении. Как преобразовать в spring layout - не знаю. И даже не знаю существует ли такая операция.
Честно говоря не знаю, удастся ли загрузить эту плату в бесплатную версию eagle (у бесплатной версии ограничения - размер платы и только два слоя, верхний и нижний).
скачал бесплатную версию, открыл, вроде все ок. спасибо.
Re: Фоновая подсветка телевизора Ambilight
Цитата:
Сообщение от
IgorSokol
Собрал на 24 каналана макетке, все работает отлично
не могли бы выложить готовый скетч для Nano плиз
удалось собрать на транзисторах на 8 каналов на транзисторах (спасибо Chip-у),
хочу попробывать 24 канала на микрухах уже.
Re: Фоновая подсветка телевизора Ambilight
Цитата:
Сообщение от
denns
не могли бы выложить готовый скетч для Nano плиз, хочу попробывать 24 канала на микрухах уже
PHP код:
#define TCNT2_Const 250 //256-9
#define BrightnessSize 24 //число каналов
unsigned long blank=0; //таймер простоя
uint8_t volatile PWM_Counter=0;
uint8_t Brightness[BrightnessSize];
void setup()
{
pinMode(10, OUTPUT); //SS SPI вывод для управления защелкой
pinMode(11, OUTPUT); // SPI DATA
pinMode(13, OUTPUT); // SPI Clock
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(13,LOW);
SPSR = (1<<SPI2X); // SPI set clock rate fck/2
SPCR = (1<<SPE)|(1<<MSTR); // Enable SPI, Master
for (int i=0;i<BrightnessSize;i++) //обнулить массив
{
Brightness[i]=0;
}
Serial.begin(115200);
TIMSK2 &= ~(1<<TOIE2); //разрешения прерывания по переполнению таймера/счетчика Т2
TCCR2A &= ~((1<<WGM21) | (1<<WGM20));// Режим работы таймера/счетчика
TCCR2B &= ~(1<<WGM22);// Режим работы таймера/счетчика
TCCR2B |= (1<<CS22); //установка предделителя 64
ASSR &= ~(1<<AS2); //Выбор источника синхронизации таймера если AS2=0 от системного генератора
TCNT2 = TCNT2_Const; // 16000000/256/100/64=8 tcnt2=256-8=248.
TIMSK2 |= (1<<TOIE2);//Разрешение прерывания по переполнению Т2.
sei();
}
void loop()
{
if (Serial.available() > BrightnessSize)
{
if (Serial.read() == 255) //проверка прификса
{
for (int i = 0; i < BrightnessSize; i++)
{
Brightness[i] = Serial.read(); // прочитать данные о цветах из порта в массив
}
blank=0;
}
} else {
if(blank>100000) { blank=0; for (byte i = 0; i < BrightnessSize; i++) Brightness[i] = 15;}
blank++;
}
}
SIGNAL(TIMER2_OVF_vect)
{
uint8_t PWM_Counter_v=PWM_Counter; // поскольку PWM_Counter объявлена как valotile, обращение к ней - всегда обращение в память. Поэтому создаем локальную копию, она будет храниться в регистре.
TCNT2 = TCNT2_Const;
uint8_t i = 0;
uint8_t byte_shift;
uint8_t nbit; // делаем переменную для хранения сдвинутого бита, чтобы у компилятора не возникало желания каждый раз в цикле сдвигать 1 на bt бит влево
byte_shift = 0;
for (uint8_t bt=0; bt<8; bt++)
{
byte_shift = byte_shift<<1;
if(Brightness[i]>PWM_Counter_v) byte_shift|= 1; // тут соответственно использщуем nbit
i++;
}
SPDR = byte_shift; //отправляем в шину SPI
//**************************************
byte_shift = 0;
for (uint8_t bt=0; bt<8; bt++)
{
byte_shift = byte_shift<<1;
if(Brightness[i]>PWM_Counter_v) byte_shift|= 1; // тут соответственно использщуем nbit
i++;
}
SPDR = byte_shift; //отправляем в шину SPI
//**************************************
byte_shift = 0;
for (uint8_t bt=0; bt<8; bt++)
{
byte_shift = byte_shift<<1;
if(Brightness[i]>PWM_Counter_v) byte_shift|= 1; // тут соответственно использщуем nbit
i++;
}
SPDR = byte_shift; //отправляем в шину SPI
PORTB |= (1<<PIN2); //формируем положительный импульс защелки
PWM_Counter++;
while(!(SPSR & (1<<SPIF))); // Ожидание завершения передачи данных
PORTB &= ~(1<<PIN2);
}
это оно по SPI ?????
Re: Фоновая подсветка телевизора Ambilight
да, в сдвиговые регистры грузятся данные по SPI
Re: Фоновая подсветка телевизора Ambilight
Вложений: 2
Re: Фоновая подсветка телевизора Ambilight
v.1.0.7
+ горячие клавиши вкл/выкл
v1.0.8
fix: пересчет размеров зон при смене разрешения
ps исходники для linux можно взять здесь
Вложений: 1
Re: Фоновая подсветка телевизора Ambilight
v1.1.1
+ режимы работы:
эмбилайт,
подсветка,
лампа настроения :)