PWM Fehler blinkt

Gast #1604017
Lesenswert?

Hallo,
ich versuche mich gerade an der PWM programmierung, zu der Funktion ich 
lege an einen Pin ein Signal an und sobald dieses Signal da ist, soll 
die entsprechende RGB-LED hoch gedimmt werden sobald das Signal wegfällt 
sollen die LEDs heruntergedimmt werden.

if ( (u8_rot == 1) || (u8_gelb==1) )
{
  if(OCR1A < 256)
 {
  OCR1A = OCR1A+5;
  _delay_ms(70);
  }
}

else
{
  if (OCR1A > 0)
  {
  OCR1A = OCR1A-5;
  _delay_ms(50);
  }
}

Leider blinken jedoch meine LEDs sobald ich das Signal anlege und dimmen 
nicht hoch und bleiben dann eingeschaltet.
Wechsel ich das signal, so dimmen sie herunter und die richtige andere 
Farbe z.b. grün erscheint jedoch wenn sie ganz grün sind gehen die roten 
LEDs wieder an und es dimmt wieder herunter dieser Vorgang geschieht 2 
mal und dann bleiben die LEDs grün.

Die Anweisung für die grünen LEDs ist identisch mit der der roten LEDs 
nur, dass ich hier mit dem OCR1B Register arbeite.

Für Hilfe wäre ich sehr dankbar
Gast #1604039
Lesenswert?

TCCR1A = _BV(WGM11);       //  PWM, phase correct
TCCR1B =_BV(CS10) | _BV(CS11);   // clock select clk/64
ICR1 = 0xFF;      // Endwert Counter

/* OC1A als PWM-Port setzen */
    TCCR1A |= _BV(COM1A1);
    OCR1A = 0;

/* OC1B als PWM-Port setzen */
    TCCR1A |= _BV(COM1B1);
    OCR1B = 0;
Gast #1604065
Lesenswert?

Und weiter? Wie ist die Taktung? Ohne die, kann man nur erraten, wie 
schnell die PWM ist.

Außerdem hatte ich nach dem Kontext des zuerst geposteten Codes 
gefragt-> WO und WANN wird das ausgeführt? In einer ISR oder in der 
main?

Und, schau doch mal bitte, wenn du Code postest unter "Formatierung" und 
nimm Code-Tags.
#1604068
Lesenswert?

Mach dir doch nicht soviel Arbeit damit, dass du aussuchst welchen Code 
du zeigen willst und welchen nicht.
Übertrage mittels Copy&Paste einfach alles hier ins Forum

a) vermindert das die lästigen Nachfragen nach Details
b) sehen die Helfer hier alles und kriegen den Gesamtüberblick
c) sitzt der Fehler des öfteren ganz woanders als du vermutest
d) hast du weniger Arbeit:
   Im Editor Strg+A (für alles markieren), dann Strg+C (für kopieren)
   ins Forum wechseln, Strg+V (füer einfügen)
   Noch
1
[C]
 davor und
1
[/C]
 dahinter und fertig.

Lauter gute Gründe, warum sich das ausschnittweise posten von Code bis 
zu einer gewissen Codegröße einfach nicht lohnt

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren