Anwendung Soft-PWM

Gast #1029582
Lesenswert?

Hi, ich hab gerade nen Verstaendnisproblem mit dem Soft-Pwm hier aus dem 
Forum:
ich hab vorher meinen Soft-PWM so laufen lassen:
1
ISR(TIMER1_COMPA_vect)
2
{
3
  static uint8_t in_pwm = 0;
4
  uint8_t temp = 0;
5
  OCR1A += (uint16_t) T_PWM;
6
  
7
  if(pwm_aktiv == 1)
8
  {
9
    if(in_pwm < Red )     temp |= 0x12;
10
    if(in_pwm < Green )   temp |= 0x24;
11
    if(in_pwm < Blue )    temp |= 0x9;
12
    PORTA = temp;
13
  }
14
    
15
  if(in_pwm == (uint8_t) (PWM_Steps-1))
16
  {
17
    in_pwm = 0;
18
  }else
19
  {
20
    in_pwm++;
21
  }
22
}
jetzt hab ich mir mal den den Code hier aus dem Forum genommen:
http://www.mikrocontroller.net/articles/Soft-PWM#Intelligenter_L.C3.B6sungsansatz
nun hab ich das Problem, das ich nicht verstehe wie ich meinen vorhanden 
code da jetzt reinportiere, läuft das dann wieder so:
1
ISR(TIMER1_COMPA_vect) {
2
    static uint8_t pwm_cnt;
3
    uint8_t tmp;
4
 
5
    OCR1A += isr_ptr_time[pwm_cnt];
6
    tmp    = isr_ptr_mask[pwm_cnt];
7
    
8
    if (pwm_cnt < Red) {
9
        PWM_PORT = tmp;                         // Ports setzen zu Begin der PWM
10
        pwm_cnt++;
11
    }
12
    else {
13
        PWM_PORT &= tmp;                        // Ports löschen
14
        if (pwm_cnt == pwm_cnt_max) {
15
            pwm_sync = 1;                       // Update jetzt möglich
16
            pwm_cnt  = 0;
17
        }
18
        else pwm_cnt++;
19
    }
20
}
aber wo muessen dann die PORTA-Werte fuer die jeweilige Farbe 
(Red=0x12;Green=0x24,Blue=0x9) hin?
Danke schon mal
Peter
#1029601
Lesenswert?

@ Peter (Gast)


>    if (pwm_cnt < Red) {

Was soll das dämliche Red hier? Lass den Code einfach wie er ist, so ist 
er nämlich gut.

>aber wo muessen dann die PORTA-Werte fuer die jeweilige Farbe
>(Red=0x12;Green=0x24,Blue=0x9) hin?

Die schreibst du in den Array pwm_settings und rufst die Funktion 
pwm_update() auf, wie im Beispiel.

MFG
Falk
Gast #1029634
Lesenswert?

Danke fuer die fixe Antwort,
Sorry wenn ich mich gerade nen bissel blöd anstelle, kurz ausgeholt, ich 
will mit dem PWM, mehrere RGB-Led's ansteuern.
Wenn ich das richtig verstanden habe, kommt in pwm_settings der 
jeweilige rgb-wert, und in pwm_mask dann der jeweilige Pin von r oder g 
oder b zur Ausgabe.
Seh ich das jetzt richtig oder steh ich immer noch auf dem Schlauch.

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