Soft PWM für RGB LEDs

OP #954482
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
#954506
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
OP #954812
Lesenswert?

Mixer S. wrote:
> http://www.mikrocontroller.net/articles/AVR-Tutorial:_PWM#PWM_in_Software
>
> 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
OP #954893
Lesenswert?

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

1
#define F_CPU 8000000L
2
 
3

4
#include <avr/io.h>
5
#include <util/delay.h>
6

7
#include <avr/interrupt.h>
8
 
9

10
uint8_t PWM_Counter;
11
uint8_t PWM1=50;
12
uint8_t PWM2=150;
13
uint8_t PWM3=250;
14

15

16

17
int main(){
18

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

24
for(;;){}
25

26
}
27

28

29

30

31
ISR(TIMER0_OVF_vect )
32
{
33
  PWM_Counter++;
34
PORTB^=PORTB | (1<<PB3);
35

36
  if( PWM_Counter < PWM1 )
37
    PORTB=PORTB | (0<<PB0);   //LED1_ausschalten; 
38
  else
39
    PORTB=PORTB | (1<<PB0);   //LED1_einschalten; 
40

41
  if( PWM_Counter < PWM2 )
42
      PORTB=PORTB | (0<<PB1);  // LED2_ausschalten;
43
  else
44
   PORTB=PORTB | (1<<PB1);    // LED2_einschalten; 
45

46
  if( PWM_Counter < PWM3 )
47
     PORTB=PORTB | (0<<PB2);    // LED3_ausschalten;
48
  else
49
    PORTB=PORTB | (1<<PB2);     // LED3_einschalten; 
50
}
OP #954907
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

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