try this-and add to it calling a function in between-as discussed in comments that gives a visible delay-note I increased the delays as its probably going too fast
uint8_t fade_seq=1;
void setup() {
DDRD |= (1<<DDD6)|(1<<DDD5);
TCCR0A = 0xF1;
}
void loop() {
fade_seq++;
if (fade_seq==1)
{
fade_red(1);
}
if (fade_seq==2)
{
fade_green(1);
}
if (fade_seq==3)
{
fade_seq=0;
}
}
void fade_red(uint8_t cnt)
{
uint8_t i,k;
for (k=0;k<cnt;k++)
{
OCR0A+=1;
_delay_ms(100);
if (OCR0A == 255)
{
for (i=0;i<255;i++)
{
OCR0A--;
_delay_ms(100);
}
}
}
}
void fade_green(uint8_t cnt)
{
uint8_t i,k;
for (k=0;k<cnt;k++)
{
OCR0B+=1;
_delay_ms(1-0);
if (OCR0B == 255)
{
for (i=0;i<255;i++)
{
OCR0B--;
_delay_ms(100);
}
}
}
}