From: R. Steve McKown Date: Wed, 30 Nov 2011 23:49:33 +0000 (-0700) Subject: Alter PWM in small increments X-Git-Tag: 1.0~69 X-Git-Url: https://oss.titaniummirror.com/gitweb?p=rgblamp.git;a=commitdiff_plain;h=40d9cdd17ca886222d3a5df6ed1a2f8958f92f6c Alter PWM in small increments * Use unsigned char, as unsigned short is a 16-bit value * Increment and decrement PWM value by 1 instead of 16 * Alternate fixed LED state based on increasing/decreasing PWM duty * Ignore /funclist file --- diff --git a/.gitignore b/.gitignore index 2247d5f..b17204d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /build /dist +/funclist diff --git a/funclist b/funclist deleted file mode 100644 index e7ebb3d..0000000 --- a/funclist +++ /dev/null @@ -1,8 +0,0 @@ -_led_init: CODE, 1847 0 11 -_pwm_set: CODE, 1858 0 11 -_pic_init: CODE, 1837 0 10 -_delay: CODE, 1912 0 28 -_led_set: CODE, 1869 0 16 -_main: CODE, 1940 0 108 -_pwm_init: CODE, 1885 0 27 -Total: 211 \ No newline at end of file diff --git a/main.c b/main.c index 3e8a52d..f062b41 100644 --- a/main.c +++ b/main.c @@ -9,8 +9,6 @@ #include #define RUNAT32MHZ /* else 16 MHz */ -#define BRIGHT_STEP 16 /* starts at 0 */ -#define BRIGHT_STEPS 16 /* includes 0 */ #define LEDBIT 0x01 /* PORTB.3 */ #if defined(RUNAT32MHZ) @@ -66,7 +64,7 @@ void led_init() TRISB &= ~LEDBIT; } -void led_set(unsigned short led) +void led_set(unsigned char led) { if (led) PORTB |= LEDBIT; @@ -74,43 +72,42 @@ void led_set(unsigned short led) PORTB &= ~LEDBIT; } -void pwm_set(unsigned short step) +void pwm_set(unsigned char step) { - CCPR1L = step * BRIGHT_STEP; + CCPR1L = step; } void delay() { - for (unsigned counter = 0; counter < 50000; counter++); + for (unsigned counter = 0; counter < 10000; counter++); } int main(void) { - unsigned short fwd = 1; - short int step = 0; - short int led = 0; + unsigned char fwd = 1; + unsigned char step = 0; pic_init(); led_init(); pwm_init(); while (1) { - led = 1 - led; - led_set(led); pwm_set(step); if (fwd == 0) { step--; - if (step == -1) { + if (step == 0xff) { /* rollover */ + led_set(0); fwd = 1; - step++; + step = 0; } } else /* fwd == 1 */ { step++; - if (step == BRIGHT_STEPS) { + if (step == 0) { /* rollover */ + led_set(1); fwd = 0; - step--; + step = 0xff; } } - delay(); delay(); + delay(); } return 0; }