mikrocontroller.net

Forum: Compiler & IDEs Anwendung Soft-PWM


Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, ich hab gerade nen Verstaendnisproblem mit dem Soft-Pwm hier aus dem 
Forum:
ich hab vorher meinen Soft-PWM so laufen lassen:
ISR(TIMER1_COMPA_vect)
{
  static uint8_t in_pwm = 0;
  uint8_t temp = 0;
  OCR1A += (uint16_t) T_PWM;
  
  if(pwm_aktiv == 1)
  {
    if(in_pwm < Red )     temp |= 0x12;
    if(in_pwm < Green )   temp |= 0x24;
    if(in_pwm < Blue )    temp |= 0x9;
    PORTA = temp;
  }
    
  if(in_pwm == (uint8_t) (PWM_Steps-1))
  {
    in_pwm = 0;
  }else
  {
    in_pwm++;
  }
}
jetzt hab ich mir mal den den Code hier aus dem Forum genommen:
http://www.mikrocontroller.net/articles/Soft-PWM#I...
nun hab ich das Problem, das ich nicht verstehe wie ich meinen vorhanden 
code da jetzt reinportiere, läuft das dann wieder so:
ISR(TIMER1_COMPA_vect) {
    static uint8_t pwm_cnt;
    uint8_t tmp;
 
    OCR1A += isr_ptr_time[pwm_cnt];
    tmp    = isr_ptr_mask[pwm_cnt];
    
    if (pwm_cnt < Red) {
        PWM_PORT = tmp;                         // Ports setzen zu Begin der PWM
        pwm_cnt++;
    }
    else {
        PWM_PORT &= tmp;                        // Ports löschen
        if (pwm_cnt == pwm_cnt_max) {
            pwm_sync = 1;                       // Update jetzt möglich
            pwm_cnt  = 0;
        }
        else pwm_cnt++;
    }
}
aber wo muessen dann die PORTA-Werte fuer die jeweilige Farbe 
(Red=0x12;Green=0x24,Blue=0x9) hin?
Danke schon mal
Peter

Autor: Falk Brunner (falk)
Datum:

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

Autor: Peter (Gast)
Datum:

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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Peter (Gast)

>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.

Ja.

MfG
Falk

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kay dann herzlichen dank

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.