Hallo zusammen,
ich versuche mich seit zwei Tagen in den LPC1769 einzuarbeiten und gehe
dazu die ganzen Beispiele die es dazu gibt durch und versuche diese zu
verstehen bzw. zu ergänzen.
Soweit klappt dass eigentlich auch schon ganz gut (zumindest mit den
I/O's, ADC, DAC und UART).
Momentan versuche ich mich gerade am PWM-Beispiel und habe damit ein
bischen Probleme, wo ich hoffe dass ihr mir kurz auf die Sprünge helfen
könnt.
Ich habe das vorhandene Beispiel verwendet und mache nun einen Sweep
über das Tastverhältnis (zumindes habe ich das gedacht).
1 | if ( match_counter1 >= 20 ) //10 Perioden ausgeführt
|
2 | {
|
3 | if(cycle<100)
|
4 | cycle=PWM_CYCLE; //Duty auf Standardwert
|
5 |
|
6 | PWM_Set( CHANNEL_NUM, cycle, offset );
|
7 | cycle--; //Dutycycle verringern
|
8 | match_counter1 = 0; //Flag aus ISR zurücksetzen
|
9 |
|
10 | }
|
Aber anstatt das Tastverhältnis zu verändern verändert sich die
Frequenz.
In der Funktion PWM_Set() wird hierzu nur der Cyclewert verändert und
aktualisiert:
1 | LPC_PWM1->MR0 = cycle; /* set PWM cycle */
|
2 | LPC_PWM1->LER = LER0_EN | LER1_EN | LER2_EN | LER3_EN | LER4_EN | LER5_EN | LER6_EN;
|
Bei den ATMELs wurde ja auch nur durch den Prescaler oder OC1A die
Frequenz eingestellt und durch den OC1A/B das Tastverhältnis.
Habe ich da irgendwie einen Denkfehler?
Danke für eure Hilfe.
Grüße
N.Müller