He conectado cuatro módulos WS2812B que obtuve de eBay a mi AtMega8 y traté de usar el libra light_ws2812 para controlarlos.
Conecté el cable utilizado para la comunicación al Pin PC5 en mi ATMega y escribí el siguiente programa para controlar los cuatro LED.
#include <util/delay.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include "light_ws2812.h"
struct cRGB led[4];
int main(void)
{
led[0].r=255;led[0].g=00;led[0].b=0;
led[1].r=255;led[1].g=00;led[1].b=0;
led[2].r=255;led[2].g=00;led[2].b=0;
led[3].r=255;led[3].g=00;led[3].b=0;
ws2812_setleds(led,4);
while(1)
{
}
}
Seguí el Ejemplo de Libray dado para escribir el Código. Mientras trataba de descubrir el error y reescribía un poco mi código, de alguna manera conseguí que el primer LED se iluminara completamente en verde. Cuando borré la memoria flash completa de la ATMega, el LED seguía encendido.
Por eso estoy bastante seguro de que mi problema está relacionado con el software, pero no sé cómo solucionarlo.