TCL5940 и прерывание
- Войдите на сайт для отправки комментариев
Сб, 30/05/2015 - 16:19
Всех приветствую!
Пытаюсь разобраться с прерыванием на драйвере светодиодов Tlc5940. Прерывание зажигает сразу все светодиоды с заданной яркостью.
Суть проблемы: после "снятия" прерывания цикл продолжается как-то с артефактами. Т.е. вместо того ,чтобы просто продолжиться с места ,когда началось прерывание, еще появляется бегущий огонек по всем светодиодам.
#include "Tlc5940.h"
int Leds = 8;
const int maxLight = 4095;
int delPWM = 10;
int stepPWM, stepPWMP;
byte intPin = 0;
void setup()
{
attachInterrupt(intPin,pause,LOW); //функция прерывания
Tlc.init();
}
void pause() {
Tlc.setAll(4000);
Tlc.update();
Tlc.clear () ;
Tlc.update();
}
void loop()
{
for (int i=Leds-1; i>=0; i--) {
stepPWMP=1;
for (int j=0; j<=maxLight; j=j+stepPWMP) {
Tlc.set(i,j);
Tlc.update();
delay(delPWM);
stepPWMP+=2;
}
}
for (int i=Leds-1; i>=0; i--)
{
stepPWM=stepPWMP;
for (int j=maxLight; j>=0; j=j-stepPWM)
{
Tlc.set(i,j);
Tlc.update();
delay(delPWM);
stepPWM-=2;
}
}
}
Неужели никто не сталкивался с такой проблемой?