Hallo,
ich möchte eine Variable:
unsigned int duty_cycle
die die Werte von 0 bis 1023 annehmen kann in folgende Register
schreiben:
CCPR1L für die höherwertigen 8 Bits und CCP1CON, wobei die Bits
0b00xx0000 die zwei LSBs sind.
wie mache ich das jetzt am geschicktesten?
bisher habe ich es so:
1 | CCPR1L = duty_cycle >> 2;
|
2 | CCP1CON = ( 16 * (duty_cycle - (CCPR1L << 2))) //duty cycle 2 LSBs
|
3 | | ( 1 * PWM_MODE );
|
den PWM Mode möchte man ja eigentlich nicht jedes mal neu einstellen.
Nur wie schreib ich die Bits da rein ohne die anderen Bits zu verändern?