roboforum.ru

Технический форум по робототехнике.
Текущее время: 26 ноя 2024, 19:20

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: помогите разобраться с ШИМ в микропаскаль для АТмега16
СообщениеДобавлено: 17 май 2013, 09:44 
Не в сети

Зарегистрирован: 17 май 2013, 09:18
Сообщения: 5
необходимо создать программу "комета". светодиоды должны загораться в такой последовательности:
1 такт. загорается светодиод 1(самый яркий) .
2 такт. самым ярким загорается светодиод 2, светодиод 1 имеет меньшую яркость,чем светодиод 2.
3 такт. самый яркий - светодиод 3, светодиод 2 имеет такую же яркость, как светодиод 1 в такте 2, светодиод 1 -самый тусклый .
и так далее, пока все огоньки не пройдут до конца.

пытаюсь разобраться как уменьшать и увеличивать яркость светодиодов. вот код в микропаскаль, но в VMLab он не работает, так как светодиод просто загорается и ничего не меняется. в чем может быть ошибка?

program gasnet;
var
f: byte;
procedure SHIM; org OVF0addr;
begin
OCR2:=0x00;
if (OCR2<0xff) then f:=0;
if (OCR2>0x00) then f:=1;
if f=0 then OCR2:=OCR2+0x01;
if f=1 then OCR2:=OCR2-0x01;
end;
begin
PORTB:=0x00;
DDRB:=0x08;
DDRD:=0xff;

TCCR1A.WGM13:=0;
TCCR1A.WGM12:=1;
TCCR1A.WGM11:=0;
TCCR1A.WGM10:=1;
TCCR1A.COM1A1:=1;
TCCR1A.COM1A0:=0;
TCNT2:=0x00;
OCR2:=50;

while (true) do
begin

end;
end.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобраться с ШИМ в микропаскаль для АТмега16
СообщениеДобавлено: 17 май 2013, 23:37 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
вместо светика включите резистор и конденсатор - RC фильтр - и на кондере измеряйте напряжение, оно должно быть пропорционально ШИМ.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобраться с ШИМ в микропаскаль для АТмега16
СообщениеДобавлено: 19 май 2013, 08:38 
Не в сети

Зарегистрирован: 17 май 2013, 09:18
Сообщения: 5
Зачем подключать RC-фильтр, если в OCR2 можно задавать яркость светодиода (то есть саму ширину импульса)?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобраться с ШИМ в микропаскаль для АТмега16
СообщениеДобавлено: 19 май 2013, 11:04 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
думать.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобраться с ШИМ в микропаскаль для АТмега16
СообщениеДобавлено: 19 май 2013, 12:22 
Не в сети

Зарегистрирован: 03 янв 2012, 12:55
Сообщения: 3298
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...
Вообще для такого эффекта 3 светика мало, выглядеть будет всё не красиво (размаха нет), даже возможно у вас всё работает корректно, только как раз проблема в этом. Я делал как то просто на 4-х светодиодах эффекта аля мерцание звездного неба (так, типа "hello world"), каждый светодиод плавно мигал с разным периодом, выглядело отлично.

В вашем случае алгоритм имеет простую логику:

1. есть массив значений;
2. каждая следующая ячейка на N-раз имеет меньше значение чем предыдущее (коэффициент можно подобрать, рассчитать относительно используемых каналов) и всё это рассчитывается один раз (ДО отображения ШИМом), как шаблон/маска;
3. в один раз/шаг (в 1 единицу времени) все значения в массиве сдвигаются в сторону большего числа (т.е. просто перемещаются по ячейкам массива по условию "roll" (циклично));
4. далее просто отображаем из каждой ячейки массива значение в ШИМ (т.к. ячейки массива ровны количеству каналов/светиков);
5. всё повторяется с пункта N3.

Можно создать разные шаблоны масок и выводить их...универсально.

зы: ШИМ используется как правило 8-бит (т.е. значения от 0 до 255, а не 0 и 1).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобраться с ШИМ в микропаскаль для АТмега16
СообщениеДобавлено: 19 май 2013, 20:44 
Не в сети

Зарегистрирован: 17 май 2013, 09:18
Сообщения: 5
у меня будет 8 светодиодов. Идея организации алгоритма мне очень понравилась, спасибо. Думаю, что так и буду реализовывать. Но остается еще проблема - при запуске программы (как например в коде выше)светодиод загорается и не меняет интенсивность. В чем может быть ошибка?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобраться с ШИМ в микропаскаль для АТмега16
СообщениеДобавлено: 19 май 2013, 21:06 
Не в сети

Зарегистрирован: 03 янв 2012, 12:55
Сообщения: 3298
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...
вообще у Меги16 всего 4 ШИМа - это значит, что аппаратно сделать можно только 4 канала, а у вас 8, значит придется делать программный шим или брать специализированные чипы или МК семейства AT90PWMххх (или более мощные АВРки)

зы: если проблема с Си, то юзайте Bascom (значительно проще).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобраться с ШИМ в микропаскаль для АТмега16
СообщениеДобавлено: 19 май 2013, 21:09 
Не в сети

Зарегистрирован: 17 май 2013, 09:18
Сообщения: 5
я пишу на микропаскаль :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO