Danke für die schnelle Antwort!
Gerade weil sie spät kam (23:29)^^
Läuft jetzt alles. Hab mir bei der Gelegenheit auch gleich angewöhnt, für Zahlen <= 255 CHAR zu nehmen.
Hier mal der Rumpf:
Code:
#include <avr/io.h>
#include <avr/interrupt.h>
volatile unsigned char zyklus;
volatile unsigned char helligkeit; //stellt ein gemeinsames Vielfaches für die
//jew. Anteile da
SIGNAL (SIG_OVERFLOW2){
zyklus++;
if (zyklus >= helligkeit) PORTB |= (1<<PB0);
else PORTB &= (0<<PB0);
}
void init(){
DDRB = 0b00001111;
TIMSK = 0b01000000;
TCNT1 = 254;// vorladen von TCNT1, damit T1 und T2 nacher synchron laufen
ICR1 = 255;
//***********************
// Anteile der Farben
OCR1A = 255;
OCR1B = 255;
OCR2 = 255;
//************************
TCCR1A |= (1<<COM1A1)|(1<<COM1A0)|(1<<COM1B1)|(1<<COM1B0)|(1<<WGM11);
TCCR1B |= (1<<WGM13)|(1<<WGM12)|(1<<CS10);
TCCR2 |= (1<<WGM20)|(1<<COM21)|(1<<COM20)|(1<<WGM21)|(1<<CS20);
sei();
}
int main(void)
{
int schleife;
init();
main2:
for (schleife=0;schleife==250;schleife++){
}
goto main2;
return 0;
}
Lesezeichen