]> oss.titaniummirror.com Git - rgblamp.git/blobdiff - main.c
Alter PWM in small increments
[rgblamp.git] / main.c
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;
 }