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

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

Сообщение loginoff07 »

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

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

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

Сообщение shads »

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

Сообщение loginoff07 »

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

Сообщение loginoff07 »

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

Сообщение shads »

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

Сообщение tom1101 »

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

Сообщение 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 КБ) 1326 скачиваний
Открыл глаза
Сообщения: 51
Зарегистрирован: Пт апр 12, 2013 21:21:11
Откуда: Симферополь

Сообщение loginoff07 »

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

Сообщение shads »

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

Сообщение loginoff07 »

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

Сообщение shads »

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

Сообщение loginoff07 »

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

Сообщение loginoff07 »

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

Сообщение loginoff07 »

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

Сообщение shads »

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

Сообщение loginoff07 »

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

Сообщение shads »

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

Сообщение loginoff07 »

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

Сообщение shads »

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

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