diff options
author | Jonathan Gordon <rockbox@jdgordon.info> | 2007-10-22 15:28:40 +0000 |
---|---|---|
committer | Jonathan Gordon <rockbox@jdgordon.info> | 2007-10-22 15:28:40 +0000 |
commit | 4c06ad6e72293e94a867bdca9296abc06ab98ab3 (patch) | |
tree | 2de60349cd1760de7aee3a45f9135da7cc93fe0e /firmware | |
parent | 0ed79898afe2e21fcd86544b427f2f1ffa177130 (diff) | |
download | rockbox-4c06ad6e72293e94a867bdca9296abc06ab98ab3.tar.gz rockbox-4c06ad6e72293e94a867bdca9296abc06ab98ab3.zip |
mr500 sort of working battery measurments. probably could be done better, but it works
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15271 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c | 13 | ||||
-rwxr-xr-x | firmware/target/arm/tms320dm320/mrobe-500/powermgmt-mr500.c | 35 |
2 files changed, 46 insertions, 2 deletions
diff --git a/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c b/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c index f31c6ecb9f..10587a485f 100644 --- a/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c +++ b/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c | |||
@@ -187,8 +187,21 @@ int button_read_device(int *data) | |||
187 | } | 187 | } |
188 | 188 | ||
189 | /* Touchpad data available interupt */ | 189 | /* Touchpad data available interupt */ |
190 | void read_battery_inputs(void); | ||
190 | void GIO14(void) | 191 | void GIO14(void) |
191 | { | 192 | { |
193 | short tsadc = tsc2100_readreg(TSADC_PAGE, TSADC_ADDRESS); | ||
194 | short adscm = (tsadc&TSADC_ADSCM_MASK)>>TSADC_ADSCM_SHIFT; | ||
195 | switch (adscm) | ||
196 | { | ||
197 | case 1: | ||
198 | case 2: | ||
199 | touch_available = true; | ||
200 | break; | ||
201 | case 0xb: | ||
202 | read_battery_inputs(); | ||
203 | break; | ||
204 | } | ||
192 | touch_available = true; | 205 | touch_available = true; |
193 | IO_INTC_IRQ2 = (1<<3); /* IRQ_GIO14 == 35 */ | 206 | IO_INTC_IRQ2 = (1<<3); /* IRQ_GIO14 == 35 */ |
194 | } | 207 | } |
diff --git a/firmware/target/arm/tms320dm320/mrobe-500/powermgmt-mr500.c b/firmware/target/arm/tms320dm320/mrobe-500/powermgmt-mr500.c index 40d65d145d..0f85a5b007 100755 --- a/firmware/target/arm/tms320dm320/mrobe-500/powermgmt-mr500.c +++ b/firmware/target/arm/tms320dm320/mrobe-500/powermgmt-mr500.c | |||
@@ -20,7 +20,10 @@ | |||
20 | #include "config.h" | 20 | #include "config.h" |
21 | #include "adc.h" | 21 | #include "adc.h" |
22 | #include "powermgmt.h" | 22 | #include "powermgmt.h" |
23 | #include "tsc2100.h" | ||
24 | #include "kernel.h" | ||
23 | 25 | ||
26 | unsigned short current_voltage = 3910; | ||
24 | const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] = | 27 | const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] = |
25 | { | 28 | { |
26 | 3450 | 29 | 3450 |
@@ -42,10 +45,38 @@ const unsigned short percent_to_volt_charge[11] = | |||
42 | { | 45 | { |
43 | 3480, 3550, 3590, 3610, 3630, 3650, 3700, 3760, 3800, 3910, 3990 | 46 | 3480, 3550, 3590, 3610, 3630, 3650, 3700, 3760, 3800, 3910, 3990 |
44 | }; | 47 | }; |
45 | 48 | void read_battery_inputs(void) | |
49 | { | ||
50 | short tsadc = tsc2100_readreg(TSADC_PAGE, TSADC_ADDRESS); | ||
51 | short adscm = (tsadc&TSADC_ADSCM_MASK)>>TSADC_ADSCM_SHIFT; | ||
52 | if (adscm == 0xb) /* battery is available */ | ||
53 | { | ||
54 | current_voltage = tsc2100_readreg(0, 5); /* BAT1 */ | ||
55 | tsc2100_readreg(0, 6); /* BAT2 */ | ||
56 | tsc2100_readreg(0, 7); /* AUX */ | ||
57 | /* reset the TSC2100 to read touches */ | ||
58 | tsadc &= ~(TSADC_PSTCM|TSADC_ADST|TSADC_ADSCM_MASK); | ||
59 | tsadc |= TSADC_PSTCM|(0x2<<TSADC_ADSCM_SHIFT); | ||
60 | tsc2100_writereg(TSADC_PAGE, TSADC_ADDRESS, tsadc); | ||
61 | tsc2100_writereg(TSSTAT_PAGE, TSSTAT_ADDRESS, 2<<TSSTAT_PINTDAV_SHIFT); | ||
62 | } | ||
63 | } | ||
64 | |||
46 | /* Returns battery voltage from ADC [millivolts] */ | 65 | /* Returns battery voltage from ADC [millivolts] */ |
47 | unsigned int battery_adc_voltage(void) | 66 | unsigned int battery_adc_voltage(void) |
48 | { | 67 | { |
49 | return 3910; | 68 | static unsigned last_tick = 0; |
69 | short tsadc = tsc2100_readreg(TSADC_PAGE, TSADC_ADDRESS); | ||
70 | if (TIME_BEFORE(last_tick+2*HZ, current_tick)) | ||
71 | { | ||
72 | tsadc &= ~(TSADC_PSTCM|TSADC_ADST|TSADC_ADSCM_MASK); | ||
73 | tsadc |= 0xb<<TSADC_ADSCM_SHIFT; | ||
74 | tsc2100_writereg(TSADC_PAGE, TSADC_ADDRESS, tsadc&(~(1<<15))); | ||
75 | tsc2100_writereg(TSSTAT_PAGE, TSSTAT_ADDRESS, 2<<TSSTAT_PINTDAV_SHIFT); | ||
76 | last_tick = current_tick; | ||
77 | } | ||
78 | else | ||
79 | read_battery_inputs(); | ||
80 | return current_voltage; | ||
50 | } | 81 | } |
51 | 82 | ||