PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme: RGB LED per PWM ansteuern



Unregistriert
24.01.2015, 17:01
Hallo,

ich bin ein Anfänger und möchte an meinen Atmel (Atmega168) an 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.

021aet04
28.01.2015, 09:40
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