|
|
@@ -18,9 +18,9 @@
|
|
|
#define ADC_DETINTER 0x30
|
|
|
#define ADC_SCTR 0x34
|
|
|
|
|
|
-#define ADC_CLK_FREQ 10000
|
|
|
-#define ADC_DEBOUNCE_CNT 0x50
|
|
|
-
|
|
|
+#define ADC_CLK_FREQ 1000000
|
|
|
+#define ADC_DEBOUNCE_CNT 0x10000
|
|
|
+#define ADC_TRANS_INTERVAL_MS 1
|
|
|
|
|
|
typedef struct adc_private_data {
|
|
|
eAdcID id;
|
|
|
@@ -147,7 +147,7 @@ static void adc_set_debounce_cnt(adc_pdata_t *adc, uint32_t debounce_cnt)
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
- * clk unit = 1/adc_clk
|
|
|
+ * clk unit = 1/(adc_clk/2)
|
|
|
*/
|
|
|
static void adc_set_transform_interval(adc_pdata_t *adc, uint32_t interval)
|
|
|
{
|
|
|
@@ -181,7 +181,7 @@ static void adc_set_deinter(adc_pdata_t *adc, uint32_t count)
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- mincnt = ADC_DEBOUNCE_CNT * ulClkGetRate(clkid) / 2 / ulClkGetRate(CLK_APB);
|
|
|
+ mincnt = ADC_DEBOUNCE_CNT * (ulClkGetRate(clkid) / 1000) / 2 / (ulClkGetRate(CLK_APB) / 1000);
|
|
|
adc_set_transform_interval(adc, configMAX(mincnt, count));
|
|
|
}
|
|
|
|
|
|
@@ -190,7 +190,7 @@ static void adc_set_deinter_ms(adc_pdata_t *adc, uint32_t ms)
|
|
|
uint32_t count;
|
|
|
|
|
|
count = (ms * ADC_CLK_FREQ)/1000;
|
|
|
- count /= 5;
|
|
|
+ count /= 2;
|
|
|
if(count < 0xffff)
|
|
|
adc_set_deinter(adc, count);
|
|
|
}
|
|
|
@@ -434,7 +434,7 @@ int adc_init(void)
|
|
|
/* set debounce count */
|
|
|
adc_set_debounce_cnt(adc, ADC_DEBOUNCE_CNT);
|
|
|
|
|
|
- adc_set_deinter_ms(adc, 100);
|
|
|
+ adc_set_deinter_ms(adc, ADC_TRANS_INTERVAL_MS);
|
|
|
|
|
|
request_irq(adc->irq, 0, adc_int_handler, (void *)adc);
|
|
|
}
|