Hallo,
ich bin ein Anfänger und möchte an meinen Atmel (Atmega16an 3Ports ein PWM Signal für eine RGB LED ausgeben.
Bei mir funktionieren momentan aber nur 2Ports (OCR0A=0; OCR0B=0). Was muss ich an dem PortB1 (OCR1A) einstellen,
damit ich auch diesen nutzen kann.
#define F_CPU 1600000
#include <avr/io.h>
#include <util/delay.h>
void wait (int i)
{
int n=0;
while (n<i)
{
_delay_us(50);
n++;
}
}
int main( void )
{
TCCR0A=0b10100011; TCCR0B =0b00000010; TCNT0=0x00; TIMSK0=0x00;
TCCR1A= (1<<COM1A1) | (1 << WGM10) | (1 << WGM11) | (1 << CS10);
OCR0A=0; OCR0B=0; OCR1A=0;
DDRD = 0b11100000;
DDRB = 0b00000011;
int a =1;
int b =1;
int c =1;
int min = 1;
int max = 255;
while( 1 )
{
while (a<250)
{
OCR0A = c;
wait(c);
a++;
}
while (c<max)
{
OCR1A = a;
wait(200);
c++;
}
while (b<max)
{
OCR0B = b;
wait (300);
b++;
}
while (b>min)
{
OCR0B=b;
wait(300);
b--;
}
while (a>min)
{
OCR0A=a;
wait(100);
a--;
}
while (c>min)
{
OCR1A=c;
wait(200);
c--;
}
}
}
vielen Dank im vorraus.
Hallo,
Was mir auffällt ist das das CS10 im falschen Register ist. Sollte TCCR1B sein. Ob es weitere Fehler gibt habe ich nicht geschaut.
PS: Für Quelltext ging es eigene Code Eingabefelder. Ist leichter zu lesen.
MfG Hannes
Lesezeichen