]> oss.titaniummirror.com Git - rgblamp.git/commitdiff
Closer to a full featured setup
authorR. Steve McKown <rsmckown@gmail.com>
Sun, 4 Dec 2011 22:57:55 +0000 (15:57 -0700)
committerR. Steve McKown <rsmckown@gmail.com>
Sun, 4 Dec 2011 22:57:55 +0000 (15:57 -0700)
Rocker switch is power switch.

* Off: lamp is off, PWM off, CPU in sleep
* On (right): Random time to fade between colors, with a random time
  staying in each color.
* Off (left): No fade between colors, with a random time in each color.

The push button speeds up fade and incolor times by a factor of 8.

buttons.c [new file with mode: 0644]
buttons.h [new file with mode: 0644]
main.c
nbproject/Makefile-default.mk
nbproject/Makefile-genesis.properties
nbproject/configurations.xml
nbproject/project.xml
picinit.c [new file with mode: 0644]
picinit.h [new file with mode: 0644]
rgb.c [new file with mode: 0644]
rgb.h [new file with mode: 0644]

diff --git a/buttons.c b/buttons.c
new file mode 100644 (file)
index 0000000..e97f8bf
--- /dev/null
+++ b/buttons.c
@@ -0,0 +1,20 @@
+/*
+ * File:   buttons.c
+ *
+ * Button control
+ */
+
+
+#include <htc.h>
+#include "buttons.h"
+
+void buttons_sleep()
+{
+    if ((buttons_read() & (IN_ROCKERA | IN_ROCKERB)) == 0) {
+        IOCBF4 = 0;
+        IOCBF5 = 0;
+        IOCIE = 1;
+        SLEEP();
+        IOCIE = 0;
+    }
+}
diff --git a/buttons.h b/buttons.h
new file mode 100644 (file)
index 0000000..3138ecc
--- /dev/null
+++ b/buttons.h
@@ -0,0 +1,40 @@
+/*
+ * File:   buttons.h
+ *
+ * Button control
+ */
+
+
+#ifndef _BUTTONS_H
+#define _BUTTONS_H
+
+#include <htc.h>
+
+#define IN_MASK     0b00110001
+#define IN_ROCKERA  0b00100000
+#define IN_ROCKERB  0b00010000
+#define IN_PUSHBTN  0b00000001
+
+/* Initialize the buttons.  RB0 is the push button.  RB4 and RB5 are the
+ * rocker switch positions.
+ */
+#define buttons_init() do { \
+    IOCBN4 = 1; \
+    IOCBN5 = 1; \
+    TRISB |= IN_MASK; \
+    ANSELB &= ~IN_MASK; \
+} while (0)
+
+/* Read all the buttons at once, returning a mask of IN_xxx bits */
+#define buttons_read() ((PORTB ^ IN_MASK) & IN_MASK)
+
+/* Return the rocker button position as a mask of IN_xxx bits */
+#define buttons_on() ((PORTB ^ IN_MASK) & (IN_ROCKERA | IN_ROCKERB))
+
+/* Return the pushbutton state */
+#define buttons_push() ((PORTB ^ IN_MASK) & IN_PUSHBTN)
+
+/* Sleep until the rocker is in one of the non-off positions */
+void buttons_sleep();
+
+#endif
diff --git a/main.c b/main.c
index 7fa14f2fab32eb238dd7f46eefd16f91731e43d6..abf109814c0e2d93a2fb47f12806bd34f8c2976e 100644 (file)
--- a/main.c
+++ b/main.c
  * Created on August 16, 2010, 12:09 PM
  */
 
-
-#include <htc.h>
-//#include <pic16f1827.h>
-
 #define RUNAT32MHZ /* else 16 MHz */
-#define LEDBIT          0x01 /* Port RB0 */
-#define RED_CHAN    1
-#define GRN_CHAN    2
-#define BLU_CHAN    4
-#define WHT_CHAN    8
-#define ALL_CHAN    15
-
-#if defined(RUNAT32MHZ)
-__CONFIG(WDTE_OFF & FOSC_INTOSC);
-__CONFIG(LVP_OFF & PLLEN_ON);
-#else
-__CONFIG(WDTE_OFF);
-__CONFIG(LVP_OFF);
-#endif
-
-void pic_init()
-{
-#if defined(RUNAT32MHZ)
-    OSCCON = 0b11110000;
-#else /* 16 MHz */
-    OSCCON = 0b01111010;
-#endif
-
-    /* OSCSTAT.HFIOFL is set when oscillator is locked (accurate within 2%) */
-    while (!HFIOFL);
-}
-
-void pwm_init()
-{
-    /* Initialize PWM
-     * CCP1 on RB3, CCP2 on RA7, CCP3 on RA3, CCP4 on RA4
-     * - Fosc = 32MHz
-     * - Prescale = 16
-     * - PRx value = 0xff
-     * = f(pwm) = 1.95 kHz
-     */
-
-    /* Disable output on PWM Rxn pins */
-    TRISA |= 0b10011000;
-    TRISB |= 0b00001000;
-
-    /* Configure ECCP1 */
-    CCP1CON = 0b00001100;
-    CCPR1L = 0; /* Initial PWM value; only using 8 LSBs */
-
-    /* Configure ECCP2 */
-    APFCON0 |= 0b00001000; /* Use alternate output pin RA7 */
-    CCP2CON = 0b00001100;
-    CCPR2L = 0; /* Initial PWM value; only using 8 LSBs */
-
-    /* Configure CCP3 */
-    CCP3CON = 0b00001100;
-    CCPR3L = 0; /* Initial PWM value; only using 8 LSBs */
-
-    /* Configure CCP4 */
-    CCP4CON = 0b00001100;
-    CCPR4L = 0; /* Initial PWM value; only using 8 LSBs */
-
-    /* Configure Timer2 */
-    CCPTMRS = 0; /* All CCPx use Timer 2 */
-    TMR2IF = 0;
-    PR2 = 0xff;
-    T2CON = 0b00000111;
-
-    /* Enable PWM outputs after Timer 2 overflows */
-    while (!TMR2IF);
-    TRISA &= ~0b10011000;
-    TRISB &= ~0b00001000;
-}
-
-void led_init()
-{
-    PORTB &= ~LEDBIT; /* Led is RB0 */
-    TRISB &= ~LEDBIT;
-}
 
-void led_set(unsigned char led)
-{
-    if (led)
-        PORTB |= LEDBIT;
-    else
-        PORTB &= ~LEDBIT;
-}
-
-void pwm_set(unsigned char channels, unsigned char step)
-{
-    if (channels & RED_CHAN)
-        CCPR1L = step;
-    if (channels & GRN_CHAN)
-        CCPR2L = step;
-    if (channels & BLU_CHAN)
-        CCPR3L = step;
-    if (channels & WHT_CHAN)
-        CCPR4L = step;
-}
-
-void delay()
-{
-    for (unsigned counter = 0; counter < 10000; counter++);
-}
-
-void ramp_up(unsigned char channels)
-{
-    unsigned char step = 0;
-
-    do {
-        pwm_set(channels, step++);
-        delay();
-    } while (step != 0);
-}
-
-void ramp_down(unsigned char channels)
-{
-    unsigned char step = 255;
-
-    do {
-        pwm_set(channels, step--);
-        delay();
-    } while (step != 255);
-}
+#include <htc.h>
+#include <stdlib.h>
+#include "picinit.h"
+#include "buttons.h"
+#include "rgb.h"
 
-void ramp_up_down(unsigned char channels)
-{
-    ramp_up(channels);
-    ramp_down(channels);
-}
+#define random_rgb()        (rand() >> 7)    /* 0...255 */
+#define random_time()       (rand() >> 5)  /* 0...1024 */
+#define min_incolor_time()  512
+#define min_fade_time()     512
 
 int main(void)
 {
-    unsigned char fwd = 1;
-    unsigned char step = 0;
+    unsigned char red = 0, grn = 0, blu = 0; //, wht = 0;
+    char fadestep_red, fadestep_grn, fadestep_blu; //, fadestep_wht;
+    unsigned char incolor_time = 0;
+    unsigned char fade_time = 0;
+    unsigned char fast = 0;
 
     pic_init();
-    led_init();
-    pwm_init();
+    buttons_init();
+    rgb_init();
+
+    if (buttons_on()) {
+      rgb_on();
+      red = random_rgb();
+      grn = random_rgb();
+      blu = random_rgb();
+      //wht = random_rgb();
+      rgb_set(red, grn, blu, 0); //wht);
+    }
+
     while (1) {
-        ramp_up(RED_CHAN);
-        ramp_up(GRN_CHAN);
-        ramp_down(RED_CHAN);
-        ramp_up(BLU_CHAN);
-        ramp_down(GRN_CHAN);
-        ramp_up(RED_CHAN);
-        ramp_up(GRN_CHAN + BLU_CHAN);
-        ramp_down(ALL_CHAN);
-        ramp_up_down(WHT_CHAN);
+        unsigned char buttons = buttons_read();
+
+        if ((buttons & (IN_ROCKERA | IN_ROCKERB))) {
+            if (buttons & IN_PUSHBTN) {
+              if (!fast) {
+                incolor_time = 0;
+                fade_time = 0;
+                fast = 1;
+              } else
+                fast = 0;
+            }
+
+            if (fade_time) {
+              red += fadestep_red;
+              grn += fadestep_grn;
+              blu += fadestep_blu;
+              //wht += fadestep_wht;
+              rgb_set(red, grn, blu, 0); // wht);
+              fade_time--;
+            } else if (incolor_time)
+              incolor_time--;
+            else /* fade_time == 0 && incolor_time == 0 */ {
+              unsigned char newr, newg, newb, neww;
+
+              /* Determine next color state */
+              newr = random_rgb();
+              newg = random_rgb();
+              newb = random_rgb();
+              //neww = random_rgb();
+
+              /* Calculate new incolor_time and fade_time */
+              if (buttons & IN_ROCKERA) {
+                incolor_time = 1 + random_time();
+                fade_time = 1;
+              } else /* (buttons & IN_ROCKERB) */ {
+                incolor_time = min_incolor_time() + random_time() / 2;
+                fade_time = min_fade_time() + random_time() / 2;
+              }
+
+              if (fast) {
+                incolor_time = 1 + incolor_time / 8;
+                fade_time = 1 + fade_time / 8;
+              }
+
+              fadestep_red = ((int)newr - red) / fade_time;
+              fadestep_grn = ((int)newg - red) / fade_time;
+              fadestep_blu = ((int)newb - red) / fade_time;
+              //fadestep_wht = ((int)neww - red) / fade_time;
+            }
+            __delay_ms(10);
+        } else {
+            rgb_off();
+            buttons_sleep();
+            incolor_time = 0;
+            fade_time = 0;
+            rgb_on();
+        }
     }
     return 0;
 }
index c82e3ab067eb961342bfd30ed0aaa2abf98c1fcc..81155a30a9e18f636b3447e7a874d711d720c563 100644 (file)
@@ -35,10 +35,10 @@ OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE}
 DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE}
 
 # Object Files Quoted if spaced
-OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/main.p1
+OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/_ext/2115883622/buttons.p1 ${OBJECTDIR}/_ext/2115883622/picinit.p1 ${OBJECTDIR}/_ext/2115883622/rgb.p1 ${OBJECTDIR}/main.p1
 
 # Object Files
-OBJECTFILES=${OBJECTDIR}/main.p1
+OBJECTFILES=${OBJECTDIR}/_ext/2115883622/buttons.p1 ${OBJECTDIR}/_ext/2115883622/picinit.p1 ${OBJECTDIR}/_ext/2115883622/rgb.p1 ${OBJECTDIR}/main.p1
 
 
 CFLAGS=
@@ -72,7 +72,7 @@ MP_AR_DIR="/usr/hitech/picc/9.82/bin"
 .build-conf:  ${BUILD_SUBPROJECTS}
        ${MAKE}  -f nbproject/Makefile-default.mk dist/${CND_CONF}/${IMAGE_TYPE}/picdimmy.${IMAGE_TYPE}.cof
 
-MP_PROCESSOR_OPTION=16LF1827
+MP_PROCESSOR_OPTION=16F1827
 # ------------------------------------------------------------------------------------
 # Rules for buildStep: assemble
 ifeq ($(TYPE_IMAGE), DEBUG_RUN)
@@ -82,19 +82,67 @@ endif
 # ------------------------------------------------------------------------------------
 # Rules for buildStep: compile
 ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+${OBJECTDIR}/_ext/2115883622/picinit.p1: ../picbuttons/picinit.c  nbproject/Makefile-${CND_CONF}.mk
+       @${MKDIR} ${OBJECTDIR}/_ext/2115883622 
+       ${MP_CC} --pass1 ../picbuttons/picinit.c $(MP_EXTRA_CC_PRE) -q --chip=$(MP_PROCESSOR_OPTION) -P  --outdir=${OBJECTDIR}/_ext/2115883622 -D__PICCPRO__ -N31 --warn=0 --runtime=default,+clear,+init,-keep,+osccal,-resetbits,-download,+stackcall,+clib --summary=default,-psect,-class,+mem,-hex --opt=default,+asm,-asmfile,+speed,-space,-debug,-9 -D__DEBUG --debugger=pickit3  --double=24 --float=24 --addrqual=ignore --mode=lite -g --asmlist "--errformat=%f:%l: error: %s" "--msgformat=%f:%l: advisory: %s" "--warnformat=%f:%l warning: %s"
+       ${MP_CC} --scandep --pass1 ../picbuttons/picinit.c $(MP_EXTRA_CC_PRE) -q --chip=$(MP_PROCESSOR_OPTION) -P  --outdir=${OBJECTDIR}/_ext/2115883622 -D__PICCPRO__ -N31 --warn=0 --runtime=default,+clear,+init,-keep,+osccal,-resetbits,-download,+stackcall,+clib --opt=default,+asm,-asmfile,+speed,-space,-debug,-9 -D__DEBUG --debugger=pickit3  --double=24 --float=24 --addrqual=ignore --mode=lite -g --asmlist "--errformat=%f:%l: error: %s" "--msgformat=%f:%l: advisory: %s" "--warnformat=%f:%l warning: %s"
+       @echo ${OBJECTDIR}/_ext/2115883622/picinit.p1: > ${OBJECTDIR}/_ext/2115883622/picinit.p1.d
+       @cat ${OBJECTDIR}/_ext/2115883622/picinit.dep >> ${OBJECTDIR}/_ext/2115883622/picinit.p1.d
+       @${FIXDEPS} "${OBJECTDIR}/_ext/2115883622/picinit.p1.d" $(SILENT) -ht 
+       
+${OBJECTDIR}/_ext/2115883622/rgb.p1: ../picbuttons/rgb.c  nbproject/Makefile-${CND_CONF}.mk
+       @${MKDIR} ${OBJECTDIR}/_ext/2115883622 
+       ${MP_CC} --pass1 ../picbuttons/rgb.c $(MP_EXTRA_CC_PRE) -q --chip=$(MP_PROCESSOR_OPTION) -P  --outdir=${OBJECTDIR}/_ext/2115883622 -D__PICCPRO__ -N31 --warn=0 --runtime=default,+clear,+init,-keep,+osccal,-resetbits,-download,+stackcall,+clib --summary=default,-psect,-class,+mem,-hex --opt=default,+asm,-asmfile,+speed,-space,-debug,-9 -D__DEBUG --debugger=pickit3  --double=24 --float=24 --addrqual=ignore --mode=lite -g --asmlist "--errformat=%f:%l: error: %s" "--msgformat=%f:%l: advisory: %s" "--warnformat=%f:%l warning: %s"
+       ${MP_CC} --scandep --pass1 ../picbuttons/rgb.c $(MP_EXTRA_CC_PRE) -q --chip=$(MP_PROCESSOR_OPTION) -P  --outdir=${OBJECTDIR}/_ext/2115883622 -D__PICCPRO__ -N31 --warn=0 --runtime=default,+clear,+init,-keep,+osccal,-resetbits,-download,+stackcall,+clib --opt=default,+asm,-asmfile,+speed,-space,-debug,-9 -D__DEBUG --debugger=pickit3  --double=24 --float=24 --addrqual=ignore --mode=lite -g --asmlist "--errformat=%f:%l: error: %s" "--msgformat=%f:%l: advisory: %s" "--warnformat=%f:%l warning: %s"
+       @echo ${OBJECTDIR}/_ext/2115883622/rgb.p1: > ${OBJECTDIR}/_ext/2115883622/rgb.p1.d
+       @cat ${OBJECTDIR}/_ext/2115883622/rgb.dep >> ${OBJECTDIR}/_ext/2115883622/rgb.p1.d
+       @${FIXDEPS} "${OBJECTDIR}/_ext/2115883622/rgb.p1.d" $(SILENT) -ht 
+       
+${OBJECTDIR}/_ext/2115883622/buttons.p1: ../picbuttons/buttons.c  nbproject/Makefile-${CND_CONF}.mk
+       @${MKDIR} ${OBJECTDIR}/_ext/2115883622 
+       ${MP_CC} --pass1 ../picbuttons/buttons.c $(MP_EXTRA_CC_PRE) -q --chip=$(MP_PROCESSOR_OPTION) -P  --outdir=${OBJECTDIR}/_ext/2115883622 -D__PICCPRO__ -N31 --warn=0 --runtime=default,+clear,+init,-keep,+osccal,-resetbits,-download,+stackcall,+clib --summary=default,-psect,-class,+mem,-hex --opt=default,+asm,-asmfile,+speed,-space,-debug,-9 -D__DEBUG --debugger=pickit3  --double=24 --float=24 --addrqual=ignore --mode=lite -g --asmlist "--errformat=%f:%l: error: %s" "--msgformat=%f:%l: advisory: %s" "--warnformat=%f:%l warning: %s"
+       ${MP_CC} --scandep --pass1 ../picbuttons/buttons.c $(MP_EXTRA_CC_PRE) -q --chip=$(MP_PROCESSOR_OPTION) -P  --outdir=${OBJECTDIR}/_ext/2115883622 -D__PICCPRO__ -N31 --warn=0 --runtime=default,+clear,+init,-keep,+osccal,-resetbits,-download,+stackcall,+clib --opt=default,+asm,-asmfile,+speed,-space,-debug,-9 -D__DEBUG --debugger=pickit3  --double=24 --float=24 --addrqual=ignore --mode=lite -g --asmlist "--errformat=%f:%l: error: %s" "--msgformat=%f:%l: advisory: %s" "--warnformat=%f:%l warning: %s"
+       @echo ${OBJECTDIR}/_ext/2115883622/buttons.p1: > ${OBJECTDIR}/_ext/2115883622/buttons.p1.d
+       @cat ${OBJECTDIR}/_ext/2115883622/buttons.dep >> ${OBJECTDIR}/_ext/2115883622/buttons.p1.d
+       @${FIXDEPS} "${OBJECTDIR}/_ext/2115883622/buttons.p1.d" $(SILENT) -ht 
+       
 ${OBJECTDIR}/main.p1: main.c  nbproject/Makefile-${CND_CONF}.mk
        @${MKDIR} ${OBJECTDIR} 
-       ${MP_CC} --pass1 main.c $(MP_EXTRA_CC_PRE) -q --chip=$(MP_PROCESSOR_OPTION) -P  --outdir=${OBJECTDIR} -N31 --warn=0 --runtime=default,+clear,+init,-keep,+osccal,-resetbits,-download,+stackcall,+clib --summary=default,-psect,-class,+mem,-hex --opt=default,+asm,-asmfile,+speed,-space,-debug,-9 -D__DEBUG --debugger=pickit3  --double=24 --float=24 --addrqual=ignore --mode=lite -g --asmlist "--errformat=%f:%l: error: %s" "--msgformat=%f:%l: advisory: %s" "--warnformat=%f:%l warning: %s"
-       ${MP_CC} --scandep --pass1 main.c $(MP_EXTRA_CC_PRE) -q --chip=$(MP_PROCESSOR_OPTION) -P  --outdir=${OBJECTDIR} -N31 --warn=0 --runtime=default,+clear,+init,-keep,+osccal,-resetbits,-download,+stackcall,+clib --opt=default,+asm,-asmfile,+speed,-space,-debug,-9 -D__DEBUG --debugger=pickit3  --double=24 --float=24 --addrqual=ignore --mode=lite -g --asmlist "--errformat=%f:%l: error: %s" "--msgformat=%f:%l: advisory: %s" "--warnformat=%f:%l warning: %s"
+       ${MP_CC} --pass1 main.c $(MP_EXTRA_CC_PRE) -q --chip=$(MP_PROCESSOR_OPTION) -P  --outdir=${OBJECTDIR} -D__PICCPRO__ -N31 --warn=0 --runtime=default,+clear,+init,-keep,+osccal,-resetbits,-download,+stackcall,+clib --summary=default,-psect,-class,+mem,-hex --opt=default,+asm,-asmfile,+speed,-space,-debug,-9 -D__DEBUG --debugger=pickit3  --double=24 --float=24 --addrqual=ignore --mode=lite -g --asmlist "--errformat=%f:%l: error: %s" "--msgformat=%f:%l: advisory: %s" "--warnformat=%f:%l warning: %s"
+       ${MP_CC} --scandep --pass1 main.c $(MP_EXTRA_CC_PRE) -q --chip=$(MP_PROCESSOR_OPTION) -P  --outdir=${OBJECTDIR} -D__PICCPRO__ -N31 --warn=0 --runtime=default,+clear,+init,-keep,+osccal,-resetbits,-download,+stackcall,+clib --opt=default,+asm,-asmfile,+speed,-space,-debug,-9 -D__DEBUG --debugger=pickit3  --double=24 --float=24 --addrqual=ignore --mode=lite -g --asmlist "--errformat=%f:%l: error: %s" "--msgformat=%f:%l: advisory: %s" "--warnformat=%f:%l warning: %s"
        @echo ${OBJECTDIR}/main.p1: > ${OBJECTDIR}/main.p1.d
        @cat ${OBJECTDIR}/main.dep >> ${OBJECTDIR}/main.p1.d
        @${FIXDEPS} "${OBJECTDIR}/main.p1.d" $(SILENT) -ht 
        
 else
+${OBJECTDIR}/_ext/2115883622/picinit.p1: ../picbuttons/picinit.c  nbproject/Makefile-${CND_CONF}.mk
+       @${MKDIR} ${OBJECTDIR}/_ext/2115883622 
+       ${MP_CC} --pass1 ../picbuttons/picinit.c $(MP_EXTRA_CC_PRE) -q --chip=$(MP_PROCESSOR_OPTION) -P  --outdir=${OBJECTDIR}/_ext/2115883622 -D__PICCPRO__ -N31 --warn=0 --runtime=default,+clear,+init,-keep,+osccal,-resetbits,-download,+stackcall,+clib --summary=default,-psect,-class,+mem,-hex --opt=default,+asm,-asmfile,+speed,-space,-debug,-9  --double=24 --float=24 --addrqual=ignore --mode=lite -g --asmlist "--errformat=%f:%l: error: %s" "--msgformat=%f:%l: advisory: %s" "--warnformat=%f:%l warning: %s"
+       ${MP_CC} --scandep --pass1 ../picbuttons/picinit.c $(MP_EXTRA_CC_PRE) -q --chip=$(MP_PROCESSOR_OPTION) -P  --outdir=${OBJECTDIR}/_ext/2115883622 -D__PICCPRO__ -N31 --warn=0 --runtime=default,+clear,+init,-keep,+osccal,-resetbits,-download,+stackcall,+clib --opt=default,+asm,-asmfile,+speed,-space,-debug,-9  --double=24 --float=24 --addrqual=ignore --mode=lite -g --asmlist "--errformat=%f:%l: error: %s" "--msgformat=%f:%l: advisory: %s" "--warnformat=%f:%l warning: %s"
+       @echo ${OBJECTDIR}/_ext/2115883622/picinit.p1: > ${OBJECTDIR}/_ext/2115883622/picinit.p1.d
+       @cat ${OBJECTDIR}/_ext/2115883622/picinit.dep >> ${OBJECTDIR}/_ext/2115883622/picinit.p1.d
+       @${FIXDEPS} "${OBJECTDIR}/_ext/2115883622/picinit.p1.d" $(SILENT) -ht 
+       
+${OBJECTDIR}/_ext/2115883622/rgb.p1: ../picbuttons/rgb.c  nbproject/Makefile-${CND_CONF}.mk
+       @${MKDIR} ${OBJECTDIR}/_ext/2115883622 
+       ${MP_CC} --pass1 ../picbuttons/rgb.c $(MP_EXTRA_CC_PRE) -q --chip=$(MP_PROCESSOR_OPTION) -P  --outdir=${OBJECTDIR}/_ext/2115883622 -D__PICCPRO__ -N31 --warn=0 --runtime=default,+clear,+init,-keep,+osccal,-resetbits,-download,+stackcall,+clib --summary=default,-psect,-class,+mem,-hex --opt=default,+asm,-asmfile,+speed,-space,-debug,-9  --double=24 --float=24 --addrqual=ignore --mode=lite -g --asmlist "--errformat=%f:%l: error: %s" "--msgformat=%f:%l: advisory: %s" "--warnformat=%f:%l warning: %s"
+       ${MP_CC} --scandep --pass1 ../picbuttons/rgb.c $(MP_EXTRA_CC_PRE) -q --chip=$(MP_PROCESSOR_OPTION) -P  --outdir=${OBJECTDIR}/_ext/2115883622 -D__PICCPRO__ -N31 --warn=0 --runtime=default,+clear,+init,-keep,+osccal,-resetbits,-download,+stackcall,+clib --opt=default,+asm,-asmfile,+speed,-space,-debug,-9  --double=24 --float=24 --addrqual=ignore --mode=lite -g --asmlist "--errformat=%f:%l: error: %s" "--msgformat=%f:%l: advisory: %s" "--warnformat=%f:%l warning: %s"
+       @echo ${OBJECTDIR}/_ext/2115883622/rgb.p1: > ${OBJECTDIR}/_ext/2115883622/rgb.p1.d
+       @cat ${OBJECTDIR}/_ext/2115883622/rgb.dep >> ${OBJECTDIR}/_ext/2115883622/rgb.p1.d
+       @${FIXDEPS} "${OBJECTDIR}/_ext/2115883622/rgb.p1.d" $(SILENT) -ht 
+       
+${OBJECTDIR}/_ext/2115883622/buttons.p1: ../picbuttons/buttons.c  nbproject/Makefile-${CND_CONF}.mk
+       @${MKDIR} ${OBJECTDIR}/_ext/2115883622 
+       ${MP_CC} --pass1 ../picbuttons/buttons.c $(MP_EXTRA_CC_PRE) -q --chip=$(MP_PROCESSOR_OPTION) -P  --outdir=${OBJECTDIR}/_ext/2115883622 -D__PICCPRO__ -N31 --warn=0 --runtime=default,+clear,+init,-keep,+osccal,-resetbits,-download,+stackcall,+clib --summary=default,-psect,-class,+mem,-hex --opt=default,+asm,-asmfile,+speed,-space,-debug,-9  --double=24 --float=24 --addrqual=ignore --mode=lite -g --asmlist "--errformat=%f:%l: error: %s" "--msgformat=%f:%l: advisory: %s" "--warnformat=%f:%l warning: %s"
+       ${MP_CC} --scandep --pass1 ../picbuttons/buttons.c $(MP_EXTRA_CC_PRE) -q --chip=$(MP_PROCESSOR_OPTION) -P  --outdir=${OBJECTDIR}/_ext/2115883622 -D__PICCPRO__ -N31 --warn=0 --runtime=default,+clear,+init,-keep,+osccal,-resetbits,-download,+stackcall,+clib --opt=default,+asm,-asmfile,+speed,-space,-debug,-9  --double=24 --float=24 --addrqual=ignore --mode=lite -g --asmlist "--errformat=%f:%l: error: %s" "--msgformat=%f:%l: advisory: %s" "--warnformat=%f:%l warning: %s"
+       @echo ${OBJECTDIR}/_ext/2115883622/buttons.p1: > ${OBJECTDIR}/_ext/2115883622/buttons.p1.d
+       @cat ${OBJECTDIR}/_ext/2115883622/buttons.dep >> ${OBJECTDIR}/_ext/2115883622/buttons.p1.d
+       @${FIXDEPS} "${OBJECTDIR}/_ext/2115883622/buttons.p1.d" $(SILENT) -ht 
+       
 ${OBJECTDIR}/main.p1: main.c  nbproject/Makefile-${CND_CONF}.mk
        @${MKDIR} ${OBJECTDIR} 
-       ${MP_CC} --pass1 main.c $(MP_EXTRA_CC_PRE) -q --chip=$(MP_PROCESSOR_OPTION) -P  --outdir=${OBJECTDIR} -N31 --warn=0 --runtime=default,+clear,+init,-keep,+osccal,-resetbits,-download,+stackcall,+clib --summary=default,-psect,-class,+mem,-hex --opt=default,+asm,-asmfile,+speed,-space,-debug,-9  --double=24 --float=24 --addrqual=ignore --mode=lite -g --asmlist "--errformat=%f:%l: error: %s" "--msgformat=%f:%l: advisory: %s" "--warnformat=%f:%l warning: %s"
-       ${MP_CC} --scandep --pass1 main.c $(MP_EXTRA_CC_PRE) -q --chip=$(MP_PROCESSOR_OPTION) -P  --outdir=${OBJECTDIR} -N31 --warn=0 --runtime=default,+clear,+init,-keep,+osccal,-resetbits,-download,+stackcall,+clib --opt=default,+asm,-asmfile,+speed,-space,-debug,-9  --double=24 --float=24 --addrqual=ignore --mode=lite -g --asmlist "--errformat=%f:%l: error: %s" "--msgformat=%f:%l: advisory: %s" "--warnformat=%f:%l warning: %s"
+       ${MP_CC} --pass1 main.c $(MP_EXTRA_CC_PRE) -q --chip=$(MP_PROCESSOR_OPTION) -P  --outdir=${OBJECTDIR} -D__PICCPRO__ -N31 --warn=0 --runtime=default,+clear,+init,-keep,+osccal,-resetbits,-download,+stackcall,+clib --summary=default,-psect,-class,+mem,-hex --opt=default,+asm,-asmfile,+speed,-space,-debug,-9  --double=24 --float=24 --addrqual=ignore --mode=lite -g --asmlist "--errformat=%f:%l: error: %s" "--msgformat=%f:%l: advisory: %s" "--warnformat=%f:%l warning: %s"
+       ${MP_CC} --scandep --pass1 main.c $(MP_EXTRA_CC_PRE) -q --chip=$(MP_PROCESSOR_OPTION) -P  --outdir=${OBJECTDIR} -D__PICCPRO__ -N31 --warn=0 --runtime=default,+clear,+init,-keep,+osccal,-resetbits,-download,+stackcall,+clib --opt=default,+asm,-asmfile,+speed,-space,-debug,-9  --double=24 --float=24 --addrqual=ignore --mode=lite -g --asmlist "--errformat=%f:%l: error: %s" "--msgformat=%f:%l: advisory: %s" "--warnformat=%f:%l warning: %s"
        @echo ${OBJECTDIR}/main.p1: > ${OBJECTDIR}/main.p1.d
        @cat ${OBJECTDIR}/main.dep >> ${OBJECTDIR}/main.p1.d
        @${FIXDEPS} "${OBJECTDIR}/main.p1.d" $(SILENT) -ht 
@@ -106,12 +154,12 @@ endif
 ifeq ($(TYPE_IMAGE), DEBUG_RUN)
 dist/${CND_CONF}/${IMAGE_TYPE}/picdimmy.${IMAGE_TYPE}.cof: ${OBJECTFILES}  nbproject/Makefile-${CND_CONF}.mk
        @${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} 
-       ${MP_LD} $(MP_EXTRA_LD_PRE) -odist/${CND_CONF}/${IMAGE_TYPE}/picdimmy.${IMAGE_TYPE}.cof -mdist/${CND_CONF}/${IMAGE_TYPE}/picdimmy.${IMAGE_TYPE}.map --summary=default,-psect,-class,+mem,-hex --chip=$(MP_PROCESSOR_OPTION) -P --runtime=default,+clear,+init,-keep,+osccal,-resetbits,-download,+stackcall,+clib --summary=default,-psect,-class,+mem,-hex --opt=default,+asm,-asmfile,+speed,-space,-debug,-9 -D__DEBUG --debugger=pickit3 -N31 --warn=0  --double=24 --float=24 --addrqual=ignore --mode=lite --output=default,-inhx032 -g --asmlist "--errformat=%f:%l: error: %s" "--msgformat=%f:%l: advisory: %s" "--warnformat=%f:%l warning: %s" ${OBJECTFILES_QUOTED_IF_SPACED}  
+       ${MP_LD} $(MP_EXTRA_LD_PRE) -odist/${CND_CONF}/${IMAGE_TYPE}/picdimmy.${IMAGE_TYPE}.cof -mdist/${CND_CONF}/${IMAGE_TYPE}/picdimmy.${IMAGE_TYPE}.map --summary=default,-psect,-class,+mem,-hex --chip=$(MP_PROCESSOR_OPTION) -P --runtime=default,+clear,+init,-keep,+osccal,-resetbits,-download,+stackcall,+clib --summary=default,-psect,-class,+mem,-hex --opt=default,+asm,-asmfile,+speed,-space,-debug,-9 -D__DEBUG --debugger=pickit3 -D__PICCPRO__ -N31 --warn=0  --double=24 --float=24 --addrqual=ignore --mode=lite --output=default,-inhx032 -g --asmlist "--errformat=%f:%l: error: %s" "--msgformat=%f:%l: advisory: %s" "--warnformat=%f:%l warning: %s" ${OBJECTFILES_QUOTED_IF_SPACED}  
        @${RM} dist/${CND_CONF}/${IMAGE_TYPE}/picdimmy.${IMAGE_TYPE}.hex
 else
 dist/${CND_CONF}/${IMAGE_TYPE}/picdimmy.${IMAGE_TYPE}.cof: ${OBJECTFILES}  nbproject/Makefile-${CND_CONF}.mk
        @${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} 
-       ${MP_LD} $(MP_EXTRA_LD_PRE) -odist/${CND_CONF}/${IMAGE_TYPE}/picdimmy.${IMAGE_TYPE}.cof -mdist/${CND_CONF}/${IMAGE_TYPE}/picdimmy.${IMAGE_TYPE}.map --summary=default,-psect,-class,+mem,-hex --chip=$(MP_PROCESSOR_OPTION) -P --runtime=default,+clear,+init,-keep,+osccal,-resetbits,-download,+stackcall,+clib --summary=default,-psect,-class,+mem,-hex --opt=default,+asm,-asmfile,+speed,-space,-debug,-9 -N31 --warn=0  --double=24 --float=24 --addrqual=ignore --mode=lite --output=default,-inhx032 -g --asmlist "--errformat=%f:%l: error: %s" "--msgformat=%f:%l: advisory: %s" "--warnformat=%f:%l warning: %s" ${OBJECTFILES_QUOTED_IF_SPACED}  
+       ${MP_LD} $(MP_EXTRA_LD_PRE) -odist/${CND_CONF}/${IMAGE_TYPE}/picdimmy.${IMAGE_TYPE}.cof -mdist/${CND_CONF}/${IMAGE_TYPE}/picdimmy.${IMAGE_TYPE}.map --summary=default,-psect,-class,+mem,-hex --chip=$(MP_PROCESSOR_OPTION) -P --runtime=default,+clear,+init,-keep,+osccal,-resetbits,-download,+stackcall,+clib --summary=default,-psect,-class,+mem,-hex --opt=default,+asm,-asmfile,+speed,-space,-debug,-9 -D__PICCPRO__ -N31 --warn=0  --double=24 --float=24 --addrqual=ignore --mode=lite --output=default,-inhx032 -g --asmlist "--errformat=%f:%l: error: %s" "--msgformat=%f:%l: advisory: %s" "--warnformat=%f:%l warning: %s" ${OBJECTFILES_QUOTED_IF_SPACED}  
 endif
 
 
index 398baa5cc107ad9e75bfaffc1362327d01ebb77f..b65ef7b1ac1c2c9decd5aa22dae6f1f1a68aa3f5 100644 (file)
@@ -1,5 +1,5 @@
 #
-#Fri Dec 02 19:43:02 MST 2011
+#Sun Dec 04 15:10:45 MST 2011
 default.languagetoolchain.dir=/usr/hitech/picc/9.82/bin
 com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=11bb82e71763925c87fa30f6c65473b1
 default.languagetoolchain.version=9.82
index 97462d3a111ccc9197cc6f931c3bd0a0acc13c43..558d55c0e4aea2b6ffae5ec7db4eed2268de9d1c 100644 (file)
     <logicalFolder name="SourceFiles"
                    displayName="Source Files"
                    projectFiles="true">
+      <itemPath>../picbuttons/buttons.c</itemPath>
+      <itemPath>../picbuttons/buttons.h</itemPath>
       <itemPath>main.c</itemPath>
+      <itemPath>../picbuttons/picinit.c</itemPath>
+      <itemPath>../picbuttons/picinit.h</itemPath>
+      <itemPath>../picbuttons/rgb.c</itemPath>
+      <itemPath>../picbuttons/rgb.h</itemPath>
     </logicalFolder>
     <logicalFolder name="ExternalFiles"
                    displayName="Important Files"
@@ -29,7 +35,7 @@
     <conf name="default" type="2">
       <toolsSet>
         <developmentServer>localhost</developmentServer>
-        <targetDevice>PIC16LF1827</targetDevice>
+        <targetDevice>PIC16F1827</targetDevice>
         <targetHeader></targetHeader>
         <platformTool>PICkit3PlatformTool</platformTool>
         <languageToolchain>hi-tech-picc</languageToolchain>
         <makeCustomizationUserID>makeCustomizationUserID</makeCustomizationUserID>
       </makeCustomizationType>
       <HI-TECH-COMP>
+        <property key="extra-include-directories" value=""/>
+        <property key="what-to-do" value="ignore"/>
+        <property key="define-macros" value="__PICCPRO__"/>
+        <property key="what-to-do-ex" value="ignore"/>
+        <property key="optimization-assembler-files" value="false"/>
+        <property key="warning-level" value="0"/>
+        <property key="verbose" value="false"/>
+        <property key="optimization-level" value="-9"/>
+        <property key="optimization-debug" value="false"/>
+        <property key="preprocess-assembler" value="false"/>
+        <property key="optimization-global" value="true"/>
+        <property key="identifier-length" value="31"/>
+        <property key="optimization-set" value="default"/>
+        <property key="undefine-macros" value=""/>
+        <property key="optimization-speed" value="true"/>
+        <property key="optimization-assembler" value="true"/>
+        <property key="operation-mode" value="lite"/>
       </HI-TECH-COMP>
       <HI-TECH-LINK>
       </HI-TECH-LINK>
         <property key="programoptions.preserveprogramrange.start" value="0x0"/>
         <property key="voltagevalue" value="5.0"/>
         <property key="programoptions.preserveprogramrange" value="false"/>
-        <property key="memories.programmemory.start" value="0x0"/>
         <property key="programoptions.eraseb4program" value="true"/>
+        <property key="memories.programmemory.start" value="0x0"/>
         <property key="memories.programmemory.end" value="0xfff"/>
-        <property key="poweroptions.powerenable" value="true"/>
+        <property key="poweroptions.powerenable" value="false"/>
       </PICkit3PlatformTool>
     </conf>
   </confs>
index 7e803f19323e880d72979b0c746abc501e308de4..f62232d3d2970a71c96e4827b95efa30c1f8fca3 100644 (file)
@@ -8,7 +8,7 @@
             <make-project-type>0</make-project-type>
             <c-extensions>c</c-extensions>
             <cpp-extensions/>
-            <header-extensions/>
+            <header-extensions>h</header-extensions>
             <sourceEncoding>ISO-8859-1</sourceEncoding>
             <make-dep-projects/>
         </data>
diff --git a/picinit.c b/picinit.c
new file mode 100644 (file)
index 0000000..40843b2
--- /dev/null
+++ b/picinit.c
@@ -0,0 +1,30 @@
+/*
+ * File:   picinit.c
+ *
+ * Initialize the CPU
+ */
+
+
+#include <htc.h>
+
+#define RUNAT32MHZ /* else 16 MHz */
+
+#if defined(RUNAT32MHZ)
+__CONFIG(WDTE_OFF & FOSC_INTOSC);
+__CONFIG(LVP_OFF & PLLEN_ON);
+#else
+__CONFIG(WDTE_OFF);
+__CONFIG(LVP_OFF);
+#endif
+
+void pic_init()
+{
+#if defined(RUNAT32MHZ)
+    OSCCON = 0b11110000;
+#else /* 16 MHz */
+    OSCCON = 0b01111010;
+#endif
+
+    /* OSCSTAT.HFIOFL is set when oscillator is locked (accurate within 2%) */
+    while (!HFIOFL);
+}
diff --git a/picinit.h b/picinit.h
new file mode 100644 (file)
index 0000000..c349b9c
--- /dev/null
+++ b/picinit.h
@@ -0,0 +1,18 @@
+/*
+ * File:   picinit.h
+ *
+ * Initialize the CPU
+ */
+
+#ifndef _PICINIT_H
+#define _PICINIT_H
+
+#if defined(RUNAT32MHZ)
+#define _XTAL_FREQ 32000000
+#else
+#define _XTAL_FREQ 16000000
+#endif
+
+void pic_init();
+
+#endif
diff --git a/rgb.c b/rgb.c
new file mode 100644 (file)
index 0000000..5fb2849
--- /dev/null
+++ b/rgb.c
@@ -0,0 +1,60 @@
+/*
+ * File:   rgb.c
+ *
+ * RGB led control
+ */
+
+#include <htc.h>
+
+#define PINS_PORTA  0b10011000
+#define PINS_PORTB  0b00001000
+
+void rgb_init()
+{
+    /* Initialize rgb
+     * CCP1 on RB3, CCP2 on RA7, CCP3 on RA3, CCP4 on RA4
+     * - Fosc = 32MHz
+     * - Prescale = 16
+     * - PRx value = 0xff
+     * = f(rgb) = 1.95 kHz
+     */
+
+    /* Set rgb Rxn pins as outputs. */
+    PORTA &= ~PINS_PORTA;
+    TRISA &= ~PINS_PORTA;
+    PORTB &= ~PINS_PORTB;
+    TRISB &= ~PINS_PORTB;
+
+    /* Configure ECCP1 */
+    CCP1CON = 0b00001100;
+    CCPR1L = 0; /* Initial rgb value; only using 8 LSBs */
+
+    /* Configure ECCP2 */
+    APFCON0 |= 0b00001000; /* Use alternate output pin RA7 */
+    CCP2CON = 0b00001100;
+    CCPR2L = 0; /* Initial rgb value; only using 8 LSBs */
+
+    /* Configure CCP3 */
+    CCP3CON = 0b00001100;
+    CCPR3L = 0; /* Initial rgb value; only using 8 LSBs */
+
+    /* Configure CCP4 */
+    CCP4CON = 0b00001100;
+    CCPR4L = 0; /* Initial rgb value; only using 8 LSBs */
+
+    /* Configure Timer2.  Start it to set 0 outputs, then stop it. */
+    CCPTMRS = 0; /* All CCPx use Timer 2 */
+    TMR2IF = 0;
+    PR2 = 0xff;
+    T2CON = 0b00000011;
+}
+
+void rgb_off()
+{
+    if (TMR2ON) {
+        CCPR1L = CCPR2L = CCPR3L = CCPR4L = 0;
+        TMR2IF = 0;
+        while (!TMR2IF);
+        TMR2ON = 0;
+    }
+}
diff --git a/rgb.h b/rgb.h
new file mode 100644 (file)
index 0000000..663e189
--- /dev/null
+++ b/rgb.h
@@ -0,0 +1,28 @@
+/*
+ * File:   rgb.h
+ *
+ * RGB led control
+ */
+
+
+#ifndef _RGB_H
+#define _RGB_H
+
+/* Initialize the RGB LED assembly.  Outputs are zero, PWM is off. */
+void rgb_init();
+
+/* Turn on the rgb.  Outputs are zero, or last values set by rgb_set(). */
+#define rgb_on() do { TMR2ON = 1; } while (0)
+
+/* Turn off the rgb, first setting outputs to zero. */
+void rgb_off();
+
+/* Set a PWM value for each color LED.  0=off, 255=full on. */
+#define rgb_set(red, grn, blu, wht) do { \
+    CCPR1L = (red); \
+    CCPR2L = (grn); \
+    CCPR3L = (blu); \
+    CCPR4L = (wht); \
+} while (0)
+
+#endif