blob: 9d95938ff9b7e69b0ea415211c391606f3960e52 [file] [log] [blame]
Marcin Bukat28d54c62010-04-26 21:40:16 +00001/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
Marcin Bukat082c7d32010-10-22 12:28:43 +00008 * $Id$
Marcin Bukat28d54c62010-04-26 21:40:16 +00009 *
10 * Copyright (C) 2010 Marcin Bukat
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
19 *
20 ****************************************************************************/
21
22#include "config.h"
23#include "adc.h"
24#include "powermgmt.h"
25
26const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] =
27{
Marcin Bukatd367ab42010-07-08 16:53:09 +000028 3600
Marcin Bukat28d54c62010-04-26 21:40:16 +000029};
30
31const unsigned short battery_level_shutoff[BATTERY_TYPES_COUNT] =
32{
Marcin Bukatd367ab42010-07-08 16:53:09 +000033 3500
Marcin Bukat28d54c62010-04-26 21:40:16 +000034};
35
36/* voltages (millivolt) of 0%, 10%, ... 100% when charging disabled */
37const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11] =
38{
Marcin Bukatd367ab42010-07-08 16:53:09 +000039 { 3500, 3566, 3597, 3619, 3644, 3676, 3732, 3806, 3868, 3937, 4004 }
Marcin Bukat28d54c62010-04-26 21:40:16 +000040};
41
42/* voltages (millivolt) of 0%, 10%, ... 100% when charging enabled */
43const unsigned short percent_to_volt_charge[11] =
44{
45 /* values measured over one full charging cycle */
Marcin Bukatd367ab42010-07-08 16:53:09 +000046 3386, 3872, 3904, 3942, 3996, 4029, 4033, 4036, 4038, 4039, 4041
Marcin Bukat28d54c62010-04-26 21:40:16 +000047};
48
49/* 3.33V as reference */
50#define BATTERY_SCALE_FACTOR 3330
51
52
53/* Returns battery voltage from ADC [millivolts] */
54unsigned int battery_adc_voltage(void)
55{
56 return (adc_read(ADC_BATTERY) * BATTERY_SCALE_FACTOR) >> 11;
57}
58