]> oss.titaniummirror.com Git - rgblamp.git/blobdiff - adc_random.c
Extend candle flicker in most modes
[rgblamp.git] / adc_random.c
index 05450f4f87f767947c1149db0d807be1ca2466dc..133fc86221a7c740eab3fc8de4fa04b15335e3db 100644 (file)
@@ -6,29 +6,29 @@
  */
 
 #include <htc.h>
-#include "timer.h"
+#include "tmr.h"
 
 unsigned char adc_random()
 {
-    unsigned char save_ansela;
-    unsigned char save_trisa;
+    static bit save_ansa0;
+    static bit save_trisa0;
     unsigned char accumulate = 0;
 
     /* Turn on the FVR, configured for 1.024V to the ADC */
     FVRCON = 0b10000001;
     while (!FVRRDY); /* wait for ready signal */
 
-    /* Configure RA2 (AN2) for ADC input */
-    save_ansela = ANSELA;
-    ANSELA |= 4;
-    save_trisa = TRISA;
-    TRISA |= 4;
+    /* Configure RA0 (AN0) for ADC input */
+    save_ansa0 = ANSA0;
+    ANSA0 = 1;
+    save_trisa0 = TRISA0;
+    TRISA0 = 1;
     ADCON1 = 0b11110011; /* Right justified result, Frc clk, FVR/Vss refs */
-    ADCON0 = 0b00001001; /* Enable channel AN2, enable ADC */
+    ADCON0 = 0b00000001; /* Enable channel AN0, enable ADC */
 
     /* Sample the ADC several times, accumulating the LSB of the result */
     for (unsigned i = 0; i < 128; i++) {
-        timer_uwait(10); /* Sampling time */
+        tmr_uwait(10); /* Sampling time */
         ADGO = 1; /* Start the conversion */
         while (ADGO); /* wait for completion */
         accumulate += ADRESL;
@@ -37,8 +37,8 @@ unsigned char adc_random()
     /* Turn off ADC, FVR, and revert PORTA changes */
     ADON = 0;
     FVREN = 0;
-    TRISA = save_trisa;
-    ANSELA = save_ansela;
+    TRISA0 = save_trisa0;
+    ANSA0 = save_ansa0;
 
     /* Return the result */
     return accumulate;