Hallo zusammen, ich steh völlig an...
Auch werd ich aus dem Datenblatt nicht schlau oder ich übersehe etwas. Ich möchte den Hardware PWM Ausgang von 1% bis 99% ansteigen lassen (vorerst nur zum testen).
Fast alles passt: PWM Frequenz stimmt mit der Berechnung (512µs) Aus irgendeinem Grund wird mein PWM Signal nie länger als ca. 100µs !!
Wenn ich einen fixen Wert einstelle passt alles (also ohne den duty zu erhöhen oder zu verändern). Da sind von 1% bis 99% konstant möglich.
Irgendwie nimmt er immer den ersten Startwert - inkrementiert und nach 100µS startet er wieder bei 512 (Hab es mit mehreren Weren getestet - immer gleiches Verhalten)
Ich hab keine Ahnung mehr...
Ich hoffe es kann mir jemand helfen, will es eher nicht mit SW PWM lösen. Danke und Grüße, Klaus
Hier der Code:
#include <xc.h>
#define _XTAL_FREQ 8000000
unsigned int duty = 512;
void init(void);
void main(void) {
init();
while (1) {
duty++;
__delay_ms(10);
if (duty > 1023)duty = 0;
PWM1DCH = duty >> 2;
PWM1DCL = (duty & 0x03) << 6;
}
}
void init(void) { OSCCON = 0b01110010; //Intern 8Mhz T2CON = 0b00000101; //T2 on, Prescaler = 1:4 PR2 = 0xFF; //
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
}
