]> oss.titaniummirror.com Git - rgblamp.git/commitdiff
Alter PWM in small increments
authorR. Steve McKown <rsmckown@gmail.com>
Wed, 30 Nov 2011 23:49:33 +0000 (16:49 -0700)
committerR. Steve McKown <rsmckown@gmail.com>
Wed, 30 Nov 2011 23:51:30 +0000 (16:51 -0700)
* 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

.gitignore
funclist [deleted file]
main.c

index 2247d5f95a7193c7221b9464debe167763b4fae3..b17204d45ad1ad004266be46f1d0819fa9a75f63 100644 (file)
@@ -1,2 +1,3 @@
 /build
 /dist
+/funclist
diff --git a/funclist b/funclist
deleted file mode 100644 (file)
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 3e8a52d12cb75e375ce71b767fd62fe338a73ab0..f062b41ff05a5dd3e67a6a36fb666c51e7252836 100644 (file)
--- a/main.c
+++ b/main.c
@@ -9,8 +9,6 @@
 #include <pic16f1827.h>
 
 #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;
 }