diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2006-10-30 11:33:38 +0000 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2006-10-30 11:33:38 +0000 |
commit | 9e8fe0e4c662d3d5c26ea2f1f64c7da66cf3ce04 (patch) | |
tree | e5b0bd4076b66c55b49f36cdd0898de2e2717a86 /firmware/target/coldfire | |
parent | ede3d646b9a248a1893ec20482eaa30641df078e (diff) | |
download | rockbox-9e8fe0e4c662d3d5c26ea2f1f64c7da66cf3ce04.tar.gz rockbox-9e8fe0e4c662d3d5c26ea2f1f64c7da66cf3ce04.zip |
General: changed local adc to voltage conversions in several places to use battery_voltage. Added battery_read_info function for unfiltered battery information. x5: removed adc_read as a distinct function. Removed adc tick task. adc_init is empty inline. Adjusted battery scale, voltage to level array and read 10 bits from the ADC for battery since 255 levels is not enough for true centivolt resolution.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11396 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/coldfire')
-rw-r--r-- | firmware/target/coldfire/iaudio/x5/adc-target.h | 5 | ||||
-rwxr-xr-x | firmware/target/coldfire/iaudio/x5/adc-x5.c | 48 | ||||
-rw-r--r-- | firmware/target/coldfire/iaudio/x5/pcf50606-x5.c | 4 |
3 files changed, 23 insertions, 34 deletions
diff --git a/firmware/target/coldfire/iaudio/x5/adc-target.h b/firmware/target/coldfire/iaudio/x5/adc-target.h index 4081562fe5..28ba6225d1 100644 --- a/firmware/target/coldfire/iaudio/x5/adc-target.h +++ b/firmware/target/coldfire/iaudio/x5/adc-target.h | |||
@@ -28,5 +28,8 @@ | |||
28 | 28 | ||
29 | /* Force a scan now */ | 29 | /* Force a scan now */ |
30 | unsigned short adc_scan(int channel); | 30 | unsigned short adc_scan(int channel); |
31 | 31 | static inline unsigned short adc_read(int channel) | |
32 | { return adc_scan(channel); } | ||
33 | static inline void adc_init(void) | ||
34 | {} | ||
32 | #endif /* _ADC_TARGET_H_ */ | 35 | #endif /* _ADC_TARGET_H_ */ |
diff --git a/firmware/target/coldfire/iaudio/x5/adc-x5.c b/firmware/target/coldfire/iaudio/x5/adc-x5.c index 72aec7d547..1895cacfe9 100755 --- a/firmware/target/coldfire/iaudio/x5/adc-x5.c +++ b/firmware/target/coldfire/iaudio/x5/adc-x5.c | |||
@@ -24,49 +24,35 @@ | |||
24 | #include "adc.h" | 24 | #include "adc.h" |
25 | #include "pcf50606.h" | 25 | #include "pcf50606.h" |
26 | 26 | ||
27 | static unsigned short adcdata[NUM_ADC_CHANNELS]; | 27 | /* get remaining 2 bits and return 10 bit value */ |
28 | 28 | static int get_10bit_voltage(int msbdata) | |
29 | static const int adcc2_parms[] = | ||
30 | { | 29 | { |
31 | [ADC_BUTTONS] = 0x80 | (5 << 1) | 1, /* ADCIN2 */ | 30 | int data = msbdata << 2; |
32 | [ADC_REMOTE] = 0x80 | (6 << 1) | 1, /* ADCIN3 */ | 31 | data |= pcf50606_read(0x31) & 0x3; |
33 | [ADC_BATTERY] = 0x80 | (0 << 1) | 1, /* BATVOLT, resistive divider */ | 32 | return data; |
34 | }; | 33 | } |
35 | 34 | ||
36 | unsigned short adc_scan(int channel) | 35 | unsigned short adc_scan(int channel) |
37 | { | 36 | { |
37 | static const int adcc2_parms[] = | ||
38 | { | ||
39 | [ADC_BUTTONS] = 0x81 | (5 << 1), /* 8b - ADCIN2 */ | ||
40 | [ADC_REMOTE] = 0x81 | (6 << 1), /* 8b - ADCIN3 */ | ||
41 | [ADC_BATTERY] = 0x01 | (0 << 1), /* 10b - BATVOLT, resistive divider */ | ||
42 | }; | ||
43 | |||
38 | int level; | 44 | int level; |
39 | unsigned char data; | 45 | int data; |
40 | 46 | ||
41 | level = set_irq_level(HIGHEST_IRQ_LEVEL); | 47 | level = set_irq_level(HIGHEST_IRQ_LEVEL); |
42 | 48 | ||
43 | pcf50606_write(0x2f, adcc2_parms[channel]); | 49 | pcf50606_write(0x2f, adcc2_parms[channel]); |
44 | data = pcf50606_read(0x30); | 50 | data = pcf50606_read(0x30); |
45 | 51 | ||
46 | adcdata[channel] = data; | 52 | if (channel == ADC_BATTERY) |
53 | data = get_10bit_voltage(data); | ||
47 | 54 | ||
48 | set_irq_level(level); | 55 | set_irq_level(level); |
49 | return data; | ||
50 | } | ||
51 | |||
52 | unsigned short adc_read(int channel) | ||
53 | { | ||
54 | return adcdata[channel]; | ||
55 | } | ||
56 | |||
57 | static int adc_counter; | ||
58 | |||
59 | static void adc_tick(void) | ||
60 | { | ||
61 | if (++adc_counter == HZ) | ||
62 | { | ||
63 | adc_counter = 0; | ||
64 | adc_scan(ADC_BATTERY); | ||
65 | } | ||
66 | } | ||
67 | 56 | ||
68 | void adc_init(void) | 57 | return (unsigned short)data; |
69 | { | ||
70 | adc_scan(ADC_BATTERY); | ||
71 | tick_add_task(adc_tick); | ||
72 | } | 58 | } |
diff --git a/firmware/target/coldfire/iaudio/x5/pcf50606-x5.c b/firmware/target/coldfire/iaudio/x5/pcf50606-x5.c index 3443d1e567..59140667ef 100644 --- a/firmware/target/coldfire/iaudio/x5/pcf50606-x5.c +++ b/firmware/target/coldfire/iaudio/x5/pcf50606-x5.c | |||
@@ -128,8 +128,8 @@ void GPI0(void) | |||
128 | if (data[2] & 0x06) | 128 | if (data[2] & 0x06) |
129 | { | 129 | { |
130 | /* ACDINS/ACDREM */ | 130 | /* ACDINS/ACDREM */ |
131 | /* Check if adc_scan should actually scan main buttons or not - | 131 | /* Check if main buttons should be actually be scanned or not |
132 | bias towards "yes" out of paranoia. */ | 132 | - bias towards "yes" out of paranoia. */ |
133 | button_enable_scan((data[2] & 0x02) != 0 || | 133 | button_enable_scan((data[2] & 0x02) != 0 || |
134 | (pcf50606_read(0x33) & 0x01) != 0); | 134 | (pcf50606_read(0x33) & 0x01) != 0); |
135 | } | 135 | } |