PWM-Fragen

  • 1
  • 2
  • Page 1 of 2
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2092
Registered: 03 / 2003
Subject:

PWM-Fragen

 · 
Posted: 21.02.2022 - 09:28  ·  #1
Hallo Zusammen,

bisher habe ich eigentlich nur SoftPWM verwendet und bisher hatte ich auch keine Probleme damit. Aktuell arbeite ich ja an der Ansteuerung eines 32x24-RGB-LED-Panels und habe diesem nun auch für die 3 Farbkanäle SoftPWM spendiert. Dabei habe ich festgestellt, daß wenn man die PWM von 100 auf 254 erhöht, die Datenübertragung zum Display merklich langsamer wird. Also HardwarePWM, 3 Kanäle. Da ich relativ viel UART-Datenverkehr auswerten muß, werde ich zu einem XMega wechseln, leider damit verbunden 5V<-->3.3V Pegelanpassung, ist aber nicht so schlimm. HardwarePWM hab ich mir im Handbuch schon mal angeschaut, aber so richtig verstehe ich es noch nicht.
- Welche Ports kann man dafür nehmen? (XMega)
- Wieviel Last bringt das mit sich?
- Wieso geht PWM eigentlich nicht bis 255, sondern bis 254? (beim SoftPWM festgestellt)

Ich würde das ja mal mit dem aktuell eingesetzten Mega644 ausprobieren, aber ich verstehs nicht.
Ok weiter lesen ..... PortD wäre noch komplett frei, geht das damit?

Gruss
Harry
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2092
Registered: 03 / 2003
Subject:

Re: PWM-Fragen

 · 
Posted: 21.02.2022 - 11:19  ·  #2
Ok ich habs hin bekommen :), aber eine Frage ist offen geblieben: Was bedeutet ein PWMpresc1 von 1, 8, oder 256? Ist das die PWM-Frequenz und von was leitet sich das ab?

Falls es mal einer braucht und auch keine Ahnung hat wie ich :D

[Edit]Hab grad festgestellt, daß das hoch-/runterdimmen der LEDs jetzt absolut flackerfrei ist. Ich bin begeistert :). Bei SoftPWM war das ganz anders .....
Code

Import SysTick, PWMport1A, PWMport1B, PWMport2B;

  PWMpresc1      = 256;                   { prescaler timer1                 }
  PWMres1        = 8;                     { resolution timer1                }
  PWMmode1       = fast, negative;        { optional define                  }

  PWMpresc2      = 256;                   { prescaler timer2                 }
  PWMres2        = 8;                     { resolution timer2                }
  PWMmode2       = fast, negative;        { optional define                  }

    DDRD:=DDRD or   %01110000;   // x OC2B OC1A OC1B x x x x

// Programm
    PWMPort1A:=2;
    PWMPort1B:=2;
    PWMPort2B:=2;
TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 67
Posts: 755
Registered: 06 / 2013
Subject:

Re: PWM-Fragen

 · 
Posted: 21.02.2022 - 12:33  ·  #3
Hallo Harry, soviel ich weiß ist das der vorteiler.

Gruß Frank
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2092
Registered: 03 / 2003
Subject:

Re: PWM-Fragen

 · 
Posted: 21.02.2022 - 12:38  ·  #4
Hallo Frank,

und welche PWM-Frequenz resultiert aus dem Teiler? Woher weiß ich/man das?
Mega644@20MHz --> ?

Und was bedeutet slow & fast beim PWMMode?

Gruss
Harry
TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 67
Posts: 755
Registered: 06 / 2013
Subject:

Re: PWM-Fragen

 · 
Posted: 21.02.2022 - 14:09  ·  #5
Hallo Harry, vor vielen Jahren habe ich damit mal was getestet.

Da gibts in der pdf Datei eine Formel.

Code

  PWMres1        = 10;  //10
  PWMpresc1      = 8;   // 8
  PWMmode1       = slow;



// f_pwm = f_clkio / (N * 256)
//
//    8 Bit 256
//    14.745.600 :  1    = 14,745.600 /  256 bit =    57.600 Hz   0,000.0173    17,3us
//    14.745.600 :  8    =  1,843.200 /  256 bit =     7,200 Hz
//    14.745.600 : 64    =    230.400 /  256 bit =       900 Hz
//    14.745.600 : 256   =     57.600 /  256 bit =

//    9 Bit 512
//    14.745.600 :  1    = 14,745.600 / 512 bit =    28.800 Hz    0,000.0347    34,7 us
//    14.745.600 :  8    =  1,843.200 / 512 bit =     3.600 Hz    0,000.277.   277,0 us
//    14.745.600 : 64    =    230.400 / 512 bit =       450 Hz
//    14.745.600 : 256   =     57.600 / 512 bit =

//    10 Bit 1024
//    14.745.600 :  1    = 14,745.600 / 1024 bit =   14,400 Hz    0,000.0694    69,4us
//    14.745.600 :  8    =  1,843.200 / 1024 bit =    1,800 Hz
//    14.745.600 : 64    =    230.400 / 1024 bit =
//    14.745.600 : 256   =     57.600 / 1024 bit =


Ich hoffe es hilft weiter


Gruß Frank
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2092
Registered: 03 / 2003
Subject:

Re: PWM-Fragen

 · 
Posted: 21.02.2022 - 14:48  ·  #6
Danke dir Frank, ich werde mal rechnen und zur Überprüfung mein Oszi anschliessen. Vertrauen ist gut, Kontrolle ist besser :D

Harry
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2092
Registered: 03 / 2003
Subject:

Re: PWM-Fragen

 · 
Posted: 22.02.2022 - 14:53  ·  #7
Hi Frank,

habs gemessen und mein Oszi sagt 305Hz .... gerechnet 20000000Hz÷(256×256)=305.17Hz
Wow :)

Hab immer noch nicht gefunden was slow/fast bewirkt.

Nochmals danke
Harry
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2092
Registered: 03 / 2003
Subject:

Re: PWM-Fragen

 · 
Posted: 05.03.2022 - 07:48  ·  #8
Hallo,

ich muß an dieser Stelle leider noch einmal nachhaken .....

In Franks Beispiel oben steht
Code

PWMres1        = 10;  //10 
  PWMpresc1      = 8;   // 8 
  PWMmode1       = slow; 

d.h. er benutzt Mode slow,. Ich komme mit Mode fast und obiger Formel genau auf die berechnete Frequenz, also würde ich das auch mit slow erreichen. Was ist denn nun der Unterschied zwischen slow und fast?

Gruss
Harry

PS: Meine neue Lötstation ist gestern gekommen :wav1: meine alte ist letzten Samstag übern Jordan gegangen, schon zum 2. mal. Ein Lötkolben der schmilzt, wo gibts sowas? Nie wieder RND!
  • 1
  • 2
  • Page 1 of 2
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   135   149 · Page-Gen-Time: 0.039628s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI