forked from len0rd/rockbox
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
This commit is contained in:
parent
c24569feee
commit
ca9e8b6cf5
3 changed files with 9 additions and 16 deletions
|
|
@ -298,12 +298,17 @@ static struct adc_struct adcdata[NUM_ADC_CHANNELS] IDATA_ATTR;
|
||||||
* a 13 bit value corresponding to 0-5.4v, the resulting range is 13FB-17FA,
|
* a 13 bit value corresponding to 0-5.4v, the resulting range is 13FB-17FA,
|
||||||
* representing 3.1-5.4v */
|
* representing 3.1-5.4v */
|
||||||
static unsigned short ten_bit_subtractor(unsigned short data) {
|
static unsigned short ten_bit_subtractor(unsigned short data) {
|
||||||
return (data<<2)+0x13FB;
|
return (data<<2)+0x4FB;
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned short _adc_scan(struct adc_struct *adc)
|
static unsigned short _adc_scan(struct adc_struct *adc)
|
||||||
{
|
{
|
||||||
unsigned short data = pcf50605_a2d_read(adc->channelnum);
|
unsigned short data;
|
||||||
|
|
||||||
|
/* ADCC1, 8 bit, start */
|
||||||
|
pcf50605_write(0x2f, 0x80 | (adc->channelnum << 1) | 0x1);
|
||||||
|
data = pcf50605_read(0x30); /* ADCS1 */
|
||||||
|
|
||||||
if (adc->conversion) {
|
if (adc->conversion) {
|
||||||
data = adc->conversion(data);
|
data = adc->conversion(data);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -98,18 +98,6 @@ int pcf50605_write_multiple(int address, const unsigned char* buf, int count)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned short pcf50605_a2d_read(int adc_input)
|
|
||||||
{
|
|
||||||
unsigned short hi;
|
|
||||||
unsigned char lo;
|
|
||||||
|
|
||||||
ipod_i2c_send(0x8, 0x2f, (adc_input<<1) | 0x1); /* ADCC2, ADCMUX = adc_input, ADCSTART = 1 */
|
|
||||||
hi = i2c_readbyte(0x8, 0x30); /* ADCS1 */
|
|
||||||
lo = (i2c_readbyte(0x8, 0x31) & 0x3); /* ADCS2 */
|
|
||||||
|
|
||||||
return (hi << 2) | lo;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* The following command puts the iPod into a deep sleep. Warning
|
/* The following command puts the iPod into a deep sleep. Warning
|
||||||
from the good people of ipodlinux - never issue this command
|
from the good people of ipodlinux - never issue this command
|
||||||
without setting CHGWAK or EXTONWAK if you ever want to be able to
|
without setting CHGWAK or EXTONWAK if you ever want to be able to
|
||||||
|
|
|
||||||
|
|
@ -61,10 +61,10 @@
|
||||||
/* Type of mobile power */
|
/* Type of mobile power */
|
||||||
#define CONFIG_BATTERY BATT_LIPOL1300
|
#define CONFIG_BATTERY BATT_LIPOL1300
|
||||||
|
|
||||||
#define BATTERY_SCALE_FACTOR 586 /* FIX: this value is picked at random */
|
#define BATTERY_SCALE_FACTOR 2353
|
||||||
|
|
||||||
/* Define this if the platform can charge batteries */
|
/* Define this if the platform can charge batteries */
|
||||||
//#define HAVE_CHARGING 1
|
#define HAVE_CHARGING 1
|
||||||
|
|
||||||
/* define this if the hardware can be powered off while charging */
|
/* define this if the hardware can be powered off while charging */
|
||||||
//#define HAVE_POWEROFF_WHILE_CHARGING
|
//#define HAVE_POWEROFF_WHILE_CHARGING
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue