roboforum.ru

Технический форум по робототехнике.


помогите разобраться с ШИМ в микропаскаль для АТмега16

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

помогите разобраться с ШИМ в микропаскаль для АТмега16

Сообщение paslenok » 17 май 2013, 09:44

необходимо создать программу "комета". светодиоды должны загораться в такой последовательности:
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.
paslenok
 
Сообщения: 5
Зарегистрирован: 17 май 2013, 09:18

Re: помогите разобраться с ШИМ в микропаскаль для АТмега16

Сообщение avr123.nm.ru » 17 май 2013, 23:37

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

Re: помогите разобраться с ШИМ в микропаскаль для АТмега16

Сообщение paslenok » 19 май 2013, 08:38

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

Re: помогите разобраться с ШИМ в микропаскаль для АТмега16

Сообщение avr123.nm.ru » 19 май 2013, 11:04

думать.
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: помогите разобраться с ШИМ в микропаскаль для АТмега16

Сообщение Madf » 19 май 2013, 12:22

Вообще для такого эффекта 3 светика мало, выглядеть будет всё не красиво (размаха нет), даже возможно у вас всё работает корректно, только как раз проблема в этом. Я делал как то просто на 4-х светодиодах эффекта аля мерцание звездного неба (так, типа "hello world"), каждый светодиод плавно мигал с разным периодом, выглядело отлично.

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

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

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

зы: ШИМ используется как правило 8-бит (т.е. значения от 0 до 255, а не 0 и 1).
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Re: помогите разобраться с ШИМ в микропаскаль для АТмега16

Сообщение paslenok » 19 май 2013, 20:44

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

Re: помогите разобраться с ШИМ в микропаскаль для АТмега16

Сообщение Madf » 19 май 2013, 21:06

вообще у Меги16 всего 4 ШИМа - это значит, что аппаратно сделать можно только 4 канала, а у вас 8, значит придется делать программный шим или брать специализированные чипы или МК семейства AT90PWMххх (или более мощные АВРки)

зы: если проблема с Си, то юзайте Bascom (значительно проще).
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Re: помогите разобраться с ШИМ в микропаскаль для АТмега16

Сообщение paslenok » 19 май 2013, 21:09

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


Вернуться в Микроконтроллеры

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

Сейчас этот форум просматривают: Google [Bot] и гости: 16