summaryrefslogtreecommitdiff
path: root/firmware/drivers/adc.c
diff options
context:
space:
mode:
authorBrandon Low <lostlogic@rockbox.org>2006-03-09 01:36:22 +0000
committerBrandon Low <lostlogic@rockbox.org>2006-03-09 01:36:22 +0000
commitca9e8b6cf5d1bdadf0040eb2f4baec1cbd5e3d7a (patch)
tree4b3253906eb2397fe80ac747f6873878fc11861a /firmware/drivers/adc.c
parentc24569feeedc9e6bda80b84d9dd6398f1bb9c586 (diff)
downloadrockbox-ca9e8b6cf5d1bdadf0040eb2f4baec1cbd5e3d7a.tar.gz
rockbox-ca9e8b6cf5d1bdadf0040eb2f4baec1cbd5e3d7a.zip
Use an 8 bit ADC read for battery reading on ipod, that provides better than centivolt precision any way, also enable charging, it seems to detect fine when charging by USB
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8966 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/drivers/adc.c')
-rw-r--r--firmware/drivers/adc.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/firmware/drivers/adc.c b/firmware/drivers/adc.c
index e5dd4c1e53..a75f788417 100644
--- a/firmware/drivers/adc.c
+++ b/firmware/drivers/adc.c
@@ -298,12 +298,17 @@ static struct adc_struct adcdata[NUM_ADC_CHANNELS] IDATA_ATTR;
298 * a 13 bit value corresponding to 0-5.4v, the resulting range is 13FB-17FA, 298 * a 13 bit value corresponding to 0-5.4v, the resulting range is 13FB-17FA,
299 * representing 3.1-5.4v */ 299 * representing 3.1-5.4v */
300static unsigned short ten_bit_subtractor(unsigned short data) { 300static unsigned short ten_bit_subtractor(unsigned short data) {
301 return (data<<2)+0x13FB; 301 return (data<<2)+0x4FB;
302} 302}
303 303
304static unsigned short _adc_scan(struct adc_struct *adc) 304static unsigned short _adc_scan(struct adc_struct *adc)
305{ 305{
306 unsigned short data = pcf50605_a2d_read(adc->channelnum); 306 unsigned short data;
307
308 /* ADCC1, 8 bit, start */
309 pcf50605_write(0x2f, 0x80 | (adc->channelnum << 1) | 0x1);
310 data = pcf50605_read(0x30); /* ADCS1 */
311
307 if (adc->conversion) { 312 if (adc->conversion) {
308 data = adc->conversion(data); 313 data = adc->conversion(data);
309 } 314 }