diff options
Diffstat (limited to 'keyboard')
| -rw-r--r-- | keyboard/hhkb_rn42/MEMO.txt | 7 | ||||
| -rw-r--r-- | keyboard/hhkb_rn42/rn42/battery.c | 12 | 
2 files changed, 19 insertions, 0 deletions
| diff --git a/keyboard/hhkb_rn42/MEMO.txt b/keyboard/hhkb_rn42/MEMO.txt index 11f64b8c4..2f61574c3 100644 --- a/keyboard/hhkb_rn42/MEMO.txt +++ b/keyboard/hhkb_rn42/MEMO.txt @@ -15,12 +15,19 @@ Power saving:  - deep sleep MCU and BT module(keyboard is not used for long time)  - deep sleep MCU and turn off BT module(keyboard is not used and not connected)  - Battery ADC; switching, high resistance +    - switching gnd end of divider with PF4 +    - high resistor 100K/1M? +        capacitor   10nF +        http://www.eevblog.com/forum/beginners/measuring-battery-voltage-without-consuming-current/  Improving:  - BT LED; connecting, linked, sleeping, deep sleeping  - Battry LED; blink(using timer?)  - move rn42 to protocol directory when it becomes reusable stack  - LUFA sendchar should be buffered and serial_uart.c buffur size is too large(256). +- ADC resolution +    AVR120 +    AVR32138  Testing:  - Factroy reset doesn't work; need to **test again** 10K pull-up is too high? diff --git a/keyboard/hhkb_rn42/rn42/battery.c b/keyboard/hhkb_rn42/rn42/battery.c index c6988fe33..0320e1baf 100644 --- a/keyboard/hhkb_rn42/rn42/battery.c +++ b/keyboard/hhkb_rn42/rn42/battery.c @@ -21,6 +21,10 @@ void battery_init(void)      ADMUX = (1<<REFS1) | (1<<REFS0);      ADCSRA = (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);      ADCSRA |= (1<<ADEN); + +    // ADC disable voltate divider(PF4) +    DDRF  |=  (1<<4); +    PORTF &= ~(1<<4);  }  // Indicator for battery @@ -79,6 +83,10 @@ bool battery_charging(void)  // Returns voltage in mV  uint16_t battery_voltage(void)  { +    // ADC disable voltate divider(PF4) +    DDRF  |=  (1<<4); +    PORTF |=  (1<<4); +      volatile uint16_t bat;      //ADCSRA |= (1<<ADEN); @@ -98,6 +106,10 @@ uint16_t battery_voltage(void)      //ADCSRA &= ~(1<<ADEN); +    // ADC disable voltate divider(PF4) +    DDRF  |=  (1<<4); +    PORTF &= ~(1<<4); +      return (bat - BATTERY_ADC_OFFSET) * BATTERY_ADC_RESOLUTION;  } | 
