Плавная волна на Attiny13
-
loginoff07
- Открыл глаза
- Сообщения: 51
- Зарегистрирован: Пт апр 12, 2013 21:21:11
- Откуда: Симферополь
Плавная волна на Attiny13
Потребовалось создать плавную бегущую волну на 3 канала.Раньше выходил из положения имеющимся RGB контроллером на PIC12F629 с програмным ШИМ и прошивкой с исходником скачанными года 3 назад уже не помню откуда.
Исходник был на C с удобными коментами,т.е. можно было меняя константу и заново компилируя менять скорость переключения.Сейчас накрылся комп с COM-портом и естественно нечем шить PIC.Но есть программатор на FT232 и в наличии Attiny13. В интернете есть куча примеров RGB на Attiny13,но не нашел ни одного чтоб был только один эффект плавного перехода R-G-B,без кнопок,ДУ,сенсоров,случайного выбора цвета,UART-а и прочих наворотов.Может у кого есть прошивка с одним единственным эффектом ШИМ R-G-B на Attiny13 ?Чтоб можно было сделать скорость переключения каналов примерно 2 Гц. Помогите пожалуйста.
Исходник был на C с удобными коментами,т.е. можно было меняя константу и заново компилируя менять скорость переключения.Сейчас накрылся комп с COM-портом и естественно нечем шить PIC.Но есть программатор на FT232 и в наличии Attiny13. В интернете есть куча примеров RGB на Attiny13,но не нашел ни одного чтоб был только один эффект плавного перехода R-G-B,без кнопок,ДУ,сенсоров,случайного выбора цвета,UART-а и прочих наворотов.Может у кого есть прошивка с одним единственным эффектом ШИМ R-G-B на Attiny13 ?Чтоб можно было сделать скорость переключения каналов примерно 2 Гц. Помогите пожалуйста.
Re: Плавная волна на Attiny13
.Сейчас накрылся комп с COM-портом
купите USB-COM адаптер. и будет у вас счастье
Re: Плавная волна на Attiny13
2 секунды - это время между максимумами яркости соседних каналов?loginoff07 писал(а):?Чтоб можно было сделать скорость переключения каналов примерно 2 Гц. Помогите пожалуйста.
Т.е. красный на максимуме, ч-з 2 секунды синий на максимуме, ч-з 2 секунды зеленый на максимуме и т.д.....
Я правильно понял?
-
loginoff07
- Открыл глаза
- Сообщения: 51
- Зарегистрирован: Пт апр 12, 2013 21:21:11
- Откуда: Симферополь
Re: Плавная волна на Attiny13
Пол-секунды между максимумами.
-
loginoff07
- Открыл глаза
- Сообщения: 51
- Зарегистрирован: Пт апр 12, 2013 21:21:11
- Откуда: Симферополь
Re: Плавная волна на Attiny13
Вот исходник на С для PIC12F629 ,как его изменить для Attiny13? Компилятор у меня MicroC for AVR есть.
- Вложения
-
- qwert1.c
- (1.16 КБ) 415 скачиваний
Re: Плавная волна на Attiny13
Ща поморокую.....
Re: Плавная волна на Attiny13
Такая штука разобрана у dihalt'а здесь. Тебе нужны три ШИМ-генератора, по одному на цвет. Все три можно завести на один таймер. Далее из программы по определенному закону (в твоем случае - синус или косинус со сдвинутыми градусов на 45..90 фазами) нужно время от времени менять значение ШИМ-генераторов.
[img]http://ub.imgfiles.ru/2.png[/img]
Re: Плавная волна на Attiny13
С пиковской прошивкой в принципе то же самое, но чет в основном цикле я не совсем разобрался, сделал по своему...
Писал в AVRStudio +GCC

Писал в 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
Спасибо большое,что откликнулись. У меня что-то компилятор обругался.Видимо из-за того,что первоначально составлено на ассемблере .Сейчас скачаю AVRStudio.Если не сложно ,можно ещё попросить у Вас ассемблеровский вариант.
Re: Плавная волна на Attiny13
Установи сначала WinAVR, потом AVRStudio4, и будет компилится...
Ну можно и один AVRStudio4, тогда переделаю на асм....
Ну можно и один AVRStudio4, тогда переделаю на асм....
-
loginoff07
- Открыл глаза
- Сообщения: 51
- Зарегистрирован: Пт апр 12, 2013 21:21:11
- Откуда: Симферополь
Re: Плавная волна на Attiny13
Блин,качаю какую-то 6.1beta с сайта Atmel она не подойдёт?Огромная...
Re: Плавная волна на Attiny13
Пойдет, просто 6-ка чересчур тяжелая..... ну если уже качаеш, то докачай, помоему к ней ничего не надо лепить (как компилятор WinAVR к 4-ке)
-
loginoff07
- Открыл глаза
- Сообщения: 51
- Зарегистрирован: Пт апр 12, 2013 21:21:11
- Откуда: Симферополь
Re: Плавная волна на Attiny13
Установил.Пока ничего не переделывайте,скомпилил hex,сейчас в протеусе крутну.
-
loginoff07
- Открыл глаза
- Сообщения: 51
- Зарегистрирован: Пт апр 12, 2013 21:21:11
- Откуда: Симферополь
Re: Плавная волна на Attiny13
Вроде пошел проект ,надо сейчас в железе посмотреть ,как визуально это будет выглядеть и добавить скорости.Ещё раз спасибо.
-
loginoff07
- Открыл глаза
- Сообщения: 51
- Зарегистрирован: Пт апр 12, 2013 21:21:11
- Откуда: Симферополь
Re: Плавная волна на Attiny13
Идет сильное мерцание герц так 10 на фоне этого мерцания идет волна,похоже очень низкая частота шим получилась,как её поднять? генератор выставлен в фузах внутренний RC 9,6 МГц
Re: Плавная волна на Attiny13
Надо выключить делитель на 8, он по умолчанию включен.....loginoff07 писал(а):Идет сильное мерцание герц так 10 на фоне этого мерцания идет волна,похоже очень низкая частота шим получилась,как её поднять? генератор выставлен в фузах внутренний RC 9,6 МГц
-
loginoff07
- Открыл глаза
- Сообщения: 51
- Зарегистрирован: Пт апр 12, 2013 21:21:11
- Откуда: Симферополь
Re: Плавная волна на Attiny13
Точно!Мерцание исчезло.Внешне сигнал напоминает плавную бегущую тень.Можно ли программно инвертировать выходы?
Re: Плавная волна на Attiny13
Инвертирование ничего не изменит, т.к. сигнал симметричен, как его не крути, он визуально такой же останется. Просто поменяется направление движения волны.....
Чтобы эффекта бегущей тени не было, можно попробовать, не до конца гасить светики.....
Чтобы эффекта бегущей тени не было, можно попробовать, не до конца гасить светики.....
-
loginoff07
- Открыл глаза
- Сообщения: 51
- Зарегистрирован: Пт апр 12, 2013 21:21:11
- Откуда: Симферополь
Re: Плавная волна на Attiny13
Да в принципе нормально ,инвертировать не нужно ,наоборот такой эффект как солнце ,отраженое от ряби на поверхности.Спасибо за помощь. Видео http://youtu.be/0LzH_2RNoCo
Re: Плавная волна на Attiny13
loginoff07 писал(а):Да в принципе нормально ,инвертировать не нужно ,наоборот такой эффект как солнце ,отраженое от ряби на поверхности.Спасибо за помощь. Видео http://youtu.be/0LzH_2RNoCo
Кажется скорость большеватая..... Ощущение что простые бегущие огни...
Да и увеличить количество сегментов волны можно, прикольнее будет...
У меня простенькая демо платка есть со светиками, ща попробую.....