Start using pdata area for less-frequently used data
[fw/altos] / ao_timer.c
index 9583a388d26983e01b0b9bdb2788ba3073d06f43..8b485cc26f5568efdb97647c8445adbb947f0399 100644 (file)
@@ -21,12 +21,10 @@ static volatile __data uint16_t ao_tick_count;
 
 uint16_t ao_time(void)
 {
-       volatile bit ea_save;
-       __data uint16_t ret;
-       
-       ea_save = EA;
-       ret = ao_tick_count;
-       EA = ea_save;
+       uint16_t ret;
+       __critical {
+               ret = ao_tick_count;
+       }
        return ret;
 }
 
@@ -42,10 +40,16 @@ ao_delay(uint16_t ticks)
 #define T1_CLOCK_DIVISOR       8       /* 24e6/8 = 3e6 */
 #define T1_SAMPLE_TIME         30000   /* 3e6/30000 = 100 */
 
+__data uint8_t ao_adc_interval = 1;
+__data uint8_t ao_adc_count;
+
 void ao_timer_isr(void) interrupt 9
 {
        ++ao_tick_count;
-       ao_adc_poll();
+       if (++ao_adc_count >= ao_adc_interval) {
+               ao_adc_count = 0;
+               ao_adc_poll();
+       }
        ao_wakeup(DATA_TO_XDATA(&ao_tick_count));
 }