www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PWM Fehler blinkt


Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: LordZiu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In welchem Kontext wird das ausgeführt, wie sind deine 
Timereinstellungen?

Und bitte die CODE TAGS verwenden!

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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;

Autor: LordZiu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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
[C]
 davor und
[/C]
 dahinter und fertig.

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

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann es sein, dass der selektierte Modus gar nicht das ICR1 als Counter 
Endwert akzeptiert?
ist das überahupt ein 16bit Counter?

wenn man den µC wüsste wär das hilfreich.

Autor: LordZiu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vlad Tepesch schrieb:
> ist das überahupt ein 16bit Counter?

Hab ich auch schon dran gedacht, aber meist ist Timer 1 doch ein 16bit 
Timer, oder!?

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab den fehler grad selbst gefunden vielen Dank =) sonst hätt ich alles 
nicht nochmal so genau durchgesehen =)

Autor: LordZiu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Willst du die Lösung vielleicht KNAPP erklären? Dann können andere 
Leute, die ein ähnliches Problem haben und dieses Forum durchsuchen auch 
davon profitieren.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.