Страница 1 из 2

Плавная волна на Attiny13

Добавлено: Пт апр 12, 2013 21:33:50
loginoff07
Потребовалось создать плавную бегущую волну на 3 канала.Раньше выходил из положения имеющимся RGB контроллером на PIC12F629 с програмным ШИМ и прошивкой с исходником скачанными года 3 назад уже не помню откуда.
Исходник был на C с удобными коментами,т.е. можно было меняя константу и заново компилируя менять скорость переключения.Сейчас накрылся комп с COM-портом и естественно нечем шить PIC.Но есть программатор на FT232 и в наличии Attiny13. В интернете есть куча примеров RGB на Attiny13,но не нашел ни одного чтоб был только один эффект плавного перехода R-G-B,без кнопок,ДУ,сенсоров,случайного выбора цвета,UART-а и прочих наворотов.Может у кого есть прошивка с одним единственным эффектом ШИМ R-G-B на Attiny13 ?Чтоб можно было сделать скорость переключения каналов примерно 2 Гц. Помогите пожалуйста.

Re: Плавная волна на Attiny13

Добавлено: Пт апр 12, 2013 21:58:58
igor-x
.Сейчас накрылся комп с COM-портом
купите USB-COM адаптер. и будет у вас счастье

Re: Плавная волна на Attiny13

Добавлено: Пт апр 12, 2013 22:02:47
shads
loginoff07 писал(а):?Чтоб можно было сделать скорость переключения каналов примерно 2 Гц. Помогите пожалуйста.
2 секунды - это время между максимумами яркости соседних каналов?
Т.е. красный на максимуме, ч-з 2 секунды синий на максимуме, ч-з 2 секунды зеленый на максимуме и т.д.....
Я правильно понял?

Re: Плавная волна на Attiny13

Добавлено: Пт апр 12, 2013 22:06:37
loginoff07
Пол-секунды между максимумами.

Re: Плавная волна на Attiny13

Добавлено: Пт апр 12, 2013 22:31:21
loginoff07
Вот исходник на С для PIC12F629 ,как его изменить для Attiny13? Компилятор у меня MicroC for AVR есть.

Re: Плавная волна на Attiny13

Добавлено: Пт апр 12, 2013 22:43:59
shads
Ща поморокую.....

Re: Плавная волна на Attiny13

Добавлено: Пт апр 12, 2013 23:13:41
tom1101
Такая штука разобрана у dihalt'а здесь. Тебе нужны три ШИМ-генератора, по одному на цвет. Все три можно завести на один таймер. Далее из программы по определенному закону (в твоем случае - синус или косинус со сдвинутыми градусов на 45..90 фазами) нужно время от времени менять значение ШИМ-генераторов.

Re: Плавная волна на Attiny13

Добавлено: Сб апр 13, 2013 00:38:08
shads
С пиковской прошивкой в принципе то же самое, но чет в основном цикле я не совсем разобрался, сделал по своему...
Писал в AVRStudio +GCC

Код: Выделить всё

#define F_CPU 9600000
#include <util/delay.h>
#include <avr/io.h>
#include <avr/interrupt.h>
volatile uint8_t blue=0,red=42,green=42+64,counter,dir;
int main (void)
{
    DDRB = 0xff;//линии порта на вывод
    TCCR0A = 0x02;//режим таймера - CTC
    TCCR0B = 0x02;//предделителя таймера - деление на 8
    TIMSK0 = 0x04;//счетчика по совпадению с OCR0A
    OCR0A = 120;//регистр сравнения = 120 (прерывание 10khz)
    sei ();                                        
    while(1){
        _delay_ms (10);//скорость изминения
        if (blue++ & 0x40)     blue -= 2;
        if (blue == 0x40)     blue = 0;
        if (blue == 0x3f)     blue = 0x7f;
        if (green++ & 0x40) green -= 2;
        if (green == 0x40)     green = 0;
        if (green == 0x3f)     green = 0x7f;
        if (red++ & 0x40)     red -= 2;
        if (red == 0x40)     red = 0;
        if (red == 0x3f)     red = 0x7f;
    }
}
ISR (TIM0_COMPA_vect)
{    
    if (++counter == 64)    counter = 0;
    if ((blue & 0x3f)>=counter)    PORTB |= (1<<0);
    else PORTB &= ~(1<<0);
    if ((red & 0x3f)>=counter)    PORTB |= (1<<1);
    else PORTB &= ~(1<<1);
    if ((green & 0x3f)>=counter) PORTB |= (1<<2);
    else PORTB &= ~(1<<2);
}
 
Изображение

Re: Плавная волна на Attiny13

Добавлено: Сб апр 13, 2013 07:25:02
loginoff07
Спасибо большое,что откликнулись. У меня что-то компилятор обругался.Видимо из-за того,что первоначально составлено на ассемблере .Сейчас скачаю AVRStudio.Если не сложно ,можно ещё попросить у Вас ассемблеровский вариант.

Re: Плавная волна на Attiny13

Добавлено: Сб апр 13, 2013 07:37:14
shads
Установи сначала WinAVR, потом AVRStudio4, и будет компилится...
Ну можно и один AVRStudio4, тогда переделаю на асм....

Re: Плавная волна на Attiny13

Добавлено: Сб апр 13, 2013 07:52:53
loginoff07
Блин,качаю какую-то 6.1beta с сайта Atmel она не подойдёт?Огромная...

Re: Плавная волна на Attiny13

Добавлено: Сб апр 13, 2013 08:30:42
shads
Пойдет, просто 6-ка чересчур тяжелая..... ну если уже качаеш, то докачай, помоему к ней ничего не надо лепить (как компилятор WinAVR к 4-ке)

Re: Плавная волна на Attiny13

Добавлено: Сб апр 13, 2013 09:07:03
loginoff07
Установил.Пока ничего не переделывайте,скомпилил hex,сейчас в протеусе крутну.

Re: Плавная волна на Attiny13

Добавлено: Сб апр 13, 2013 09:18:26
loginoff07
Вроде пошел проект ,надо сейчас в железе посмотреть ,как визуально это будет выглядеть и добавить скорости.Ещё раз спасибо.

Re: Плавная волна на Attiny13

Добавлено: Сб апр 13, 2013 12:18:50
loginoff07
Идет сильное мерцание герц так 10 на фоне этого мерцания идет волна,похоже очень низкая частота шим получилась,как её поднять? генератор выставлен в фузах внутренний RC 9,6 МГц

Re: Плавная волна на Attiny13

Добавлено: Сб апр 13, 2013 12:27:04
shads
loginoff07 писал(а):Идет сильное мерцание герц так 10 на фоне этого мерцания идет волна,похоже очень низкая частота шим получилась,как её поднять? генератор выставлен в фузах внутренний RC 9,6 МГц
Надо выключить делитель на 8, он по умолчанию включен.....

Re: Плавная волна на Attiny13

Добавлено: Сб апр 13, 2013 13:17:52
loginoff07
Точно!Мерцание исчезло.Внешне сигнал напоминает плавную бегущую тень.Можно ли программно инвертировать выходы?

Re: Плавная волна на Attiny13

Добавлено: Сб апр 13, 2013 13:48:16
shads
Инвертирование ничего не изменит, т.к. сигнал симметричен, как его не крути, он визуально такой же останется. Просто поменяется направление движения волны.....
Чтобы эффекта бегущей тени не было, можно попробовать, не до конца гасить светики.....

Re: Плавная волна на Attiny13

Добавлено: Сб апр 13, 2013 15:26:57
loginoff07
Да в принципе нормально ,инвертировать не нужно ,наоборот такой эффект как солнце ,отраженое от ряби на поверхности.Спасибо за помощь. Видео http://youtu.be/0LzH_2RNoCo

Re: Плавная волна на Attiny13

Добавлено: Сб апр 13, 2013 15:51:26
shads
loginoff07 писал(а):Да в принципе нормально ,инвертировать не нужно ,наоборот такой эффект как солнце ,отраженое от ряби на поверхности.Спасибо за помощь. Видео http://youtu.be/0LzH_2RNoCo
Кажется скорость большеватая..... Ощущение что простые бегущие огни...
Да и увеличить количество сегментов волны можно, прикольнее будет...
У меня простенькая демо платка есть со светиками, ща попробую.....