diff options
author | Dominik Wenger <domonoky@googlemail.com> | 2008-12-13 15:57:41 +0000 |
---|---|---|
committer | Dominik Wenger <domonoky@googlemail.com> | 2008-12-13 15:57:41 +0000 |
commit | a654946622ef18b9263d11ad7b751fbf584700f6 (patch) | |
tree | c61f7af2adc7b2162e5f7830b802dac6a1ee08b8 | |
parent | 2b7fa8736c537e1aa16103b81b09a9e61b1ebf22 (diff) | |
download | rockbox-a654946622ef18b9263d11ad7b751fbf584700f6.tar.gz rockbox-a654946622ef18b9263d11ad7b751fbf584700f6.zip |
correct battery readout for m200v4. Percentage is still uncalibrated.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19420 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | firmware/SOURCES | 2 | ||||
-rw-r--r-- | firmware/target/arm/as3525/sansa-m200v4/powermgmt-m200v4.c | 59 |
2 files changed, 60 insertions, 1 deletions
diff --git a/firmware/SOURCES b/firmware/SOURCES index 1fce6cfdb5..80fe3385ee 100644 --- a/firmware/SOURCES +++ b/firmware/SOURCES | |||
@@ -1095,7 +1095,7 @@ target/arm/as3525/powermgmt-as3525.c | |||
1095 | target/arm/lcd-ssd1815.c | 1095 | target/arm/lcd-ssd1815.c |
1096 | target/arm/as3525/sansa-m200v4/button-m200v4.c | 1096 | target/arm/as3525/sansa-m200v4/button-m200v4.c |
1097 | #ifndef BOOTLOADER | 1097 | #ifndef BOOTLOADER |
1098 | target/arm/as3525/powermgmt-as3525.c | 1098 | target/arm/as3525/sansa-m200v4/powermgmt-m200v4.c |
1099 | drivers/generic_i2c.c | 1099 | drivers/generic_i2c.c |
1100 | target/arm/as3525/fmradio-i2c-as3525.c | 1100 | target/arm/as3525/fmradio-i2c-as3525.c |
1101 | #endif /* !BOOTLOADER */ | 1101 | #endif /* !BOOTLOADER */ |
diff --git a/firmware/target/arm/as3525/sansa-m200v4/powermgmt-m200v4.c b/firmware/target/arm/as3525/sansa-m200v4/powermgmt-m200v4.c new file mode 100644 index 0000000000..cbd2c4bf27 --- /dev/null +++ b/firmware/target/arm/as3525/sansa-m200v4/powermgmt-m200v4.c | |||
@@ -0,0 +1,59 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * Copyright © 2008 Rafaël Carré | ||
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 "adc-target.h" | ||
25 | #include "powermgmt.h" | ||
26 | |||
27 | /* TODO | ||
28 | early uncalibrated values. But read-out value should be correct | ||
29 | */ | ||
30 | |||
31 | const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] = | ||
32 | { | ||
33 | /* TODO: this is just an initial guess */ | ||
34 | 900 | ||
35 | }; | ||
36 | |||
37 | const unsigned short battery_level_shutoff[BATTERY_TYPES_COUNT] = | ||
38 | { | ||
39 | /* TODO: this is just an initial guess */ | ||
40 | 1000 | ||
41 | }; | ||
42 | |||
43 | /* voltages (millivolt) of 0%, 10%, ... 100% when charging disabled */ | ||
44 | const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11] = | ||
45 | { | ||
46 | /* TODO: simple uncalibrated curve, linear except for first 10% */ | ||
47 | { 1000, 1050, 1100, 1150, 1200, 1250, 1300, 1350, 1400, 1450, 1500 } | ||
48 | }; | ||
49 | |||
50 | /* ADC should read 0x3ff=5.12V */ | ||
51 | #define BATTERY_SCALE_FACTOR 2562 | ||
52 | /* full-scale ADC readout (2^10) in millivolt */ | ||
53 | |||
54 | /* Returns battery voltage from ADC [millivolts] */ | ||
55 | unsigned int battery_adc_voltage(void) | ||
56 | { | ||
57 | return (adc_read(ADC_VBAT) * BATTERY_SCALE_FACTOR) >> 10; | ||
58 | } | ||
59 | |||