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

Обсуждаем контроллеры компании Atmel.
loginoff07
Открыл глаза
Сообщения: 51
Зарегистрирован: Пт апр 12, 2013 21:21:11
Откуда: Симферополь

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

Сообщение loginoff07 »

Потребовалось создать плавную бегущую волну на 3 канала.Раньше выходил из положения имеющимся RGB контроллером на PIC12F629 с програмным ШИМ и прошивкой с исходником скачанными года 3 назад уже не помню откуда.
Исходник был на C с удобными коментами,т.е. можно было меняя константу и заново компилируя менять скорость переключения.Сейчас накрылся комп с COM-портом и естественно нечем шить PIC.Но есть программатор на FT232 и в наличии Attiny13. В интернете есть куча примеров RGB на Attiny13,но не нашел ни одного чтоб был только один эффект плавного перехода R-G-B,без кнопок,ДУ,сенсоров,случайного выбора цвета,UART-а и прочих наворотов.Может у кого есть прошивка с одним единственным эффектом ШИМ R-G-B на Attiny13 ?Чтоб можно было сделать скорость переключения каналов примерно 2 Гц. Помогите пожалуйста.
Аватара пользователя
igor-x
Мудрый кот
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

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

Сообщение igor-x »

.Сейчас накрылся комп с COM-портом

купите USB-COM адаптер. и будет у вас счастье
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

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

Сообщение shads »

loginoff07 писал(а):?Чтоб можно было сделать скорость переключения каналов примерно 2 Гц. Помогите пожалуйста.
2 секунды - это время между максимумами яркости соседних каналов?
Т.е. красный на максимуме, ч-з 2 секунды синий на максимуме, ч-з 2 секунды зеленый на максимуме и т.д.....
Я правильно понял?
loginoff07
Открыл глаза
Сообщения: 51
Зарегистрирован: Пт апр 12, 2013 21:21:11
Откуда: Симферополь

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

Сообщение loginoff07 »

Пол-секунды между максимумами.
loginoff07
Открыл глаза
Сообщения: 51
Зарегистрирован: Пт апр 12, 2013 21:21:11
Откуда: Симферополь

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

Сообщение loginoff07 »

Вот исходник на С для PIC12F629 ,как его изменить для Attiny13? Компилятор у меня MicroC for AVR есть.
Вложения
qwert1.c
(1.16 КБ) 415 скачиваний
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

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

Сообщение shads »

Ща поморокую.....
Аватара пользователя
tom1101
Вымогатель припоя
Сообщения: 581
Зарегистрирован: Чт янв 15, 2009 18:57:12

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

Сообщение tom1101 »

Такая штука разобрана у dihalt'а здесь. Тебе нужны три ШИМ-генератора, по одному на цвет. Все три можно завести на один таймер. Далее из программы по определенному закону (в твоем случае - синус или косинус со сдвинутыми градусов на 45..90 фазами) нужно время от времени менять значение ШИМ-генераторов.
[img]http://ub.imgfiles.ru/2.png[/img]
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

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

Сообщение 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);
}
 


Изображение
Вложения
sh1.gif
(39.87 КБ) 1317 скачиваний
loginoff07
Открыл глаза
Сообщения: 51
Зарегистрирован: Пт апр 12, 2013 21:21:11
Откуда: Симферополь

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

Сообщение loginoff07 »

Спасибо большое,что откликнулись. У меня что-то компилятор обругался.Видимо из-за того,что первоначально составлено на ассемблере .Сейчас скачаю AVRStudio.Если не сложно ,можно ещё попросить у Вас ассемблеровский вариант.
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

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

Сообщение shads »

Установи сначала WinAVR, потом AVRStudio4, и будет компилится...
Ну можно и один AVRStudio4, тогда переделаю на асм....
loginoff07
Открыл глаза
Сообщения: 51
Зарегистрирован: Пт апр 12, 2013 21:21:11
Откуда: Симферополь

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

Сообщение loginoff07 »

Блин,качаю какую-то 6.1beta с сайта Atmel она не подойдёт?Огромная...
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

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

Сообщение shads »

Пойдет, просто 6-ка чересчур тяжелая..... ну если уже качаеш, то докачай, помоему к ней ничего не надо лепить (как компилятор WinAVR к 4-ке)
loginoff07
Открыл глаза
Сообщения: 51
Зарегистрирован: Пт апр 12, 2013 21:21:11
Откуда: Симферополь

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

Сообщение loginoff07 »

Установил.Пока ничего не переделывайте,скомпилил hex,сейчас в протеусе крутну.
loginoff07
Открыл глаза
Сообщения: 51
Зарегистрирован: Пт апр 12, 2013 21:21:11
Откуда: Симферополь

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

Сообщение loginoff07 »

Вроде пошел проект ,надо сейчас в железе посмотреть ,как визуально это будет выглядеть и добавить скорости.Ещё раз спасибо.
loginoff07
Открыл глаза
Сообщения: 51
Зарегистрирован: Пт апр 12, 2013 21:21:11
Откуда: Симферополь

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

Сообщение loginoff07 »

Идет сильное мерцание герц так 10 на фоне этого мерцания идет волна,похоже очень низкая частота шим получилась,как её поднять? генератор выставлен в фузах внутренний RC 9,6 МГц
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

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

Сообщение shads »

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

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

Сообщение loginoff07 »

Точно!Мерцание исчезло.Внешне сигнал напоминает плавную бегущую тень.Можно ли программно инвертировать выходы?
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

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

Сообщение shads »

Инвертирование ничего не изменит, т.к. сигнал симметричен, как его не крути, он визуально такой же останется. Просто поменяется направление движения волны.....
Чтобы эффекта бегущей тени не было, можно попробовать, не до конца гасить светики.....
loginoff07
Открыл глаза
Сообщения: 51
Зарегистрирован: Пт апр 12, 2013 21:21:11
Откуда: Симферополь

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

Сообщение loginoff07 »

Да в принципе нормально ,инвертировать не нужно ,наоборот такой эффект как солнце ,отраженое от ряби на поверхности.Спасибо за помощь. Видео http://youtu.be/0LzH_2RNoCo
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

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

Сообщение shads »

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

Кажется скорость большеватая..... Ощущение что простые бегущие огни...
Да и увеличить количество сегментов волны можно, прикольнее будет...
У меня простенькая демо платка есть со светиками, ща попробую.....
Ответить

Вернуться в «AVR»