FS#9728: Battery current measuring on the Video iPod

Patch by Boris Gjenero. Displays the current flowing into or out of the
battery on the ipodvideo. Other ipods do not appear to have this ADC channel
connected.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23500 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Torne Wuff 2009-11-03 20:35:04 +00:00
parent 9c343fab5d
commit 2d0af6f3c7
3 changed files with 24 additions and 3 deletions

View file

@ -1125,6 +1125,9 @@ bool dbg_ports(void)
#ifdef ADC_ACCESSORY
lcd_putsf(0, line++, "ACCESSORY: %d", adc_read(ADC_ACCESSORY));
#endif
#ifdef IPOD_VIDEO
lcd_putsf(0, line++, "4066_ISTAT: %d", adc_read(ADC_4066_ISTAT));
#endif
#if defined(IPOD_ACCESSORY_PROTOCOL)
extern unsigned char serbuf[];
@ -1529,6 +1532,16 @@ static bool view_battery(void)
dock ? "enabled" : "disabled");
lcd_putsf(0, 7, "Headphone: %s",
headphone ? "connected" : "disconnected");
#ifdef IPOD_VIDEO
x = (adc_read(ADC_4066_ISTAT) * 2400) /
#if MEM == 64
(1024 * 2);
#else
(1024 * 3);
#endif
lcd_putsf(0, 8, "Ibat: %d mA", x);
lcd_putsf(0, 9, "Vbat * Ibat: %d mW", x * y / 1000);
#endif
#elif defined TOSHIBA_GIGABEAT_S
int line = 3;
unsigned int st;

View file

@ -87,5 +87,9 @@ void adc_init(void)
adc_battery->timeout = 0;
adcdata[ADC_ACCESSORY].channelnum = 4;
adcdata[ADC_ACCESSORY].timeout = 0;
#ifdef IPOD_VIDEO
adcdata[ADC_4066_ISTAT].channelnum = 7;
adcdata[ADC_4066_ISTAT].timeout = 0;
#endif
_adc_read(adc_battery);
}

View file

@ -21,12 +21,16 @@
#ifndef _ADC_TARGET_H_
#define _ADC_TARGET_H_
#define NUM_ADC_CHANNELS 2
#define ADC_BATTERY 0
#define ADC_ACCESSORY 1
#define ADC_UNREG_POWER ADC_BATTERY
#ifdef IPOD_VIDEO
#define ADC_4066_ISTAT 2
#define NUM_ADC_CHANNELS 3
#else
#define NUM_ADC_CHANNELS 2
#endif
/* Force a scan now */
unsigned short adc_scan(int channel);
#endif