Таймер Т0 - Параллельное И Поочередное Включение/отключение Канала А И В

15-04-2013, 13:26 От: admin Посмотрели: 745
Собственно вопрос в желании включения и выключения независимо друг от друга двух каналов Таймера 0 (АТтини2313)

написал вот такой код

(Logic1 и Logic2 - это включение каждого канала ШИМ)

(Logic3 и Logic4 - это выключение каждого канала ШИМ)



Проблема: каналы работаю нормально, если оба включаеются в одно и тоже время и выключаются в одно и тоже время, если же отдельно включить и выключить один из каналов - скажем запустить Logic1 и Logic3, то после этого два канала ШИМ будут иметь какюто пульсацию (светодиод имеет малое свечение)

Хотелось бы поставить правильное значение OCR0A и OCR0В, дабы все работало правильно, вот только не совсем понял, какие значения поставить)

//---------------------------------------------------------------------------

void Logic1 (void)

{

if (zz==2) {}

if (OCR0A>=255 && zz==1)

{

OCR0A=0xFF;

zz=2;

time3=0;

}

if (zz==1 && OCR0A<=254)

{

MK=MB;

if (time3<=MK) {time3++;}

else {time3=0;

//плавно увеличиваем ШИМ

OCR0A=OCR0A+1;}

}

if ( zz==0)

{    

//включааем ШИМ

TCCR0A=0xA3;

OCR0A=0x00;

zz=1;

}

}



void Logic2 (void)

{

if (z==2) {}

if (OCR0B>=255 && z==1)

{

OCR0B=0xFF;

z=2;

time=0;

}

if (z==1 && OCR0B<=254)

{

MK=MB;

if (time<=MK) {

time++;}

else {time=0;

//плавно увеличиваем ШИМ

OCR0B=OCR0B+1;}

}

if ( z==0)

{    

//включааем ШИМ

TCCR0B=0x02;

OCR0B=0x00;

z=1;

}

}



void Logic3 (void)



{

if (zz==2)

{

//включааем ШИМ

TCCR0A=0xA3;

OCR0A=0xFF;

zz=1;

}

if (zz==1 && OCR0A>=1)

{

MK=MB;

if (time2<=MK) {

time2++;}

else {time2=0;



//плавно уменьшаем ШИМ

OCR0A=OCR0A-1;}

}

if (OCR0A==0 && zz==1)

{

TCCR0A=0x21;

OCR0A=0x00;

zz=0;

time2=0;

}

}



void Logic4 (void)



{

if (z==2)

{

//включааем ШИМ

TCCR0B=0x02;

OCR0B=0xFF;

z=1;

}

if (z==1 && OCR0B>=1)

{

MK=MB;

if (time1<=MK) {

time1++;}

else {time1=0;



//плавно уменьшаем ШИМ

OCR0B=OCR0B-1;}

}

if (OCR0B==0 && z==1)

{

TCCR0B=0x03;

OCR0B=0x00;

z=0;

time1=0;

}

//---------------------------------------------------------------------------

Флуд и прочее приветствуется
Раздел: Песочница или Вопрос-Ответ

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться, либо войти на сайт под своим именем.

Обсудить на форуме


На момент добавления Таймер Т0 - Параллельное И Поочередное Включение/отключение Канала А И В все ссылки были рабочие.
Все публикации статей, книг и журналов, представлены на этом сайте, исключительно для ознакомления,
авторские права на эти публикации принадлежат авторам статей, книг и издательствам журналов!
Подробно тут | Жалоба
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.


Опрос

Ваши предпочтения в TRX


Одинарное преобразование
Двойное преобразование
Прямое преобразование
SDR
Другое
Мне всё равно

Популярные новости
Календарь новостей
«    Май 2024    »
ПнВтСрЧтПтСбВс
 12345
6789101112
13141516171819
20212223242526
2728293031