www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Soft PWM für RGB LEDs


Autor: Marco M. (marco1987)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich suche..

ein Beispielcode für eine Soft PWM, habe hier im Forum schon danach 
gesucht und sogar schon das Tutorial SOFT pwm versucht, aber leider geht 
der Sourcecode nicht.(hatte ich auch schon hier gepostet)

prinzip habe ich schon etwa verstanden

aber habe bisher kein schönes Beispiel gefunden.

was ich brächte wäre halt ein Ansatz, womit ich eine Variable habe und 
mit dieser kann ich dann die helligkeit der LED bestimmen.
Das ganz soll auf einem Atmega16 laufen

Danke

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Marco M. (marco1987)

>aber habe bisher kein schönes Beispiel gefunden.

Das Tutorial ist kein schönes Beispiel? Hmmmmm...

>was ich brächte wäre halt ein Ansatz, womit ich eine Variable habe und
>mit dieser kann ich dann die helligkeit der LED bestimmen.

Genau das macht der Code im Tutorial.

MFG
Falk

Autor: Christoph S. (mixer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.mikrocontroller.net/articles/AVR-Tutori...

Mit diesem Programm können 6 Ausgänge per PWM gedimmt werden. Die 
"variablen" musst du dann nur in die ocr-Register schreiben.
Wenn du nur 3 für eine RGB-LED benötigst kannst du ja das Programm 
dementsprechend abspecken!

MFG Mixer

Autor: Marco M. (marco1987)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mixer S. wrote:
> http://www.mikrocontroller.net/articles/AVR-Tutori...
>
> Mit diesem Programm können 6 Ausgänge per PWM gedimmt werden. Die
> "variablen" musst du dann nur in die ocr-Register schreiben.
> Wenn du nur 3 für eine RGB-LED benötigst kannst du ja das Programm
> dementsprechend abspecken!
>
> MFG Mixer

Danke für die Antwort, ich vergaß, wäre gut wenn dies in C gemacht 
werden würde

>Das Tutorial ist kein schönes Beispiel? Hmmmmm...

doch da ist schon ein Beispiel aber dies geht öeider nicht da der 
compiöer winavr an dem mprog oder sowas rummeckert

Autor: Marco M. (marco1987)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was spricht gegen diesen Code?


for(tmp=255; tmp>=0; tmp--){

 OCR1B = tmp;
 OCR1A = tmp;
 OCR2 = tmp;
 _delay_ms(2);

}

hiermit werden  OCR1B und OCR1A gleichmäßig gedimmt, nur leider OCR2 
nicht der flackert immer liegt es an dem Unterschied 8 bit, 16 bit 
timer?

MFG

Autor: Marco M. (marco1987)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab eine neue version für soft pwm angeblich soll man damit dimmen 
können aber irgendwie eflackern meine leds neoch ziemlich schnell



#define F_CPU 8000000L
 

#include <avr/io.h>
#include <util/delay.h>

#include <avr/interrupt.h>
 

uint8_t PWM_Counter;
uint8_t PWM1=50;
uint8_t PWM2=150;
uint8_t PWM3=250;



int main(){

DDRB=0xFF;
  TCCR0 = ( 1 << CS02 ) | ( 1 << CS00 ); // Teiler: 1024
  TIMSK = ( 1 << TOIE0 );         // Overflow Interrupt einschalten
sei();

for(;;){}

}




ISR(TIMER0_OVF_vect )
{
  PWM_Counter++;
PORTB^=PORTB | (1<<PB3);

  if( PWM_Counter < PWM1 )
    PORTB=PORTB | (0<<PB0);   //LED1_ausschalten; 
  else
    PORTB=PORTB | (1<<PB0);   //LED1_einschalten; 

  if( PWM_Counter < PWM2 )
      PORTB=PORTB | (0<<PB1);  // LED2_ausschalten;
  else
   PORTB=PORTB | (1<<PB1);    // LED2_einschalten; 

  if( PWM_Counter < PWM3 )
     PORTB=PORTB | (0<<PB2);    // LED3_ausschalten;
  else
    PORTB=PORTB | (1<<PB2);     // LED3_einschalten; 
}




Autor: Michael H* (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
läuft dein µC überhaupt mit 8mhz? verstehst du den quelltext?
dein voriger post ist übrigens hardware-pwm.

Autor: Marco M. (marco1987)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hab eine neue version für soft pwm angeblich soll man damit dimmen
>können aber irgendwie eflackern meine leds neoch ziemlich schnell

geht daraus icht hervor das es JETZT software ist und vorher was anderes 
waer:-) bleibt ja dann nur noch die hardware pwm übrig wa^^


warum  sollte der nicht mit dem internen 8mhz takt laufen? na klar


naja verstehen schon von der syntax her nur im allgemeinen nicht, wie 
daraus ein dimmen passieeren soll.

MFG

Autor: Marco M. (marco1987)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok also das mit dem dimmen klappt nuer wenn ich für pwm1 2e oder so 
eeine 0 einsetzte leuchtet die led sehr schwach wie bekomme ich die mit 
dieser methode ganz aus

Autor: Christoph S. (mixer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau das PWM-Signal mal bei verschiedenen Dimmstufen mit dem 
Oszilloskop an, und probiere die Software mal in nem Simulator dann 
erkennst du das Prinzip der SW-PWM!

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.