forked from len0rd/rockbox
DBOP noise on C200v2 goes away if we precharge long enough.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27148 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
ac40959c48
commit
eefe273ce6
2 changed files with 5 additions and 51 deletions
|
@ -34,48 +34,8 @@
|
||||||
/* doesn't work with the new ams sansas so far and is not needed */
|
/* doesn't work with the new ams sansas so far and is not needed */
|
||||||
static short int dbop_input_value = 0;
|
static short int dbop_input_value = 0;
|
||||||
|
|
||||||
#if defined(SANSA_C200V2)
|
|
||||||
/*
|
|
||||||
* workaround DBOP noise issue cause it's really annoying if your
|
|
||||||
* buttons don't work in the debug menu...
|
|
||||||
*/
|
|
||||||
static short int input_value_tmp[2];
|
|
||||||
int dbop_denoise_reject = 0;
|
|
||||||
int dbop_denoise_accept = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* read the DBOP data pins */
|
/* read the DBOP data pins */
|
||||||
#if defined(SANSA_C200V2)
|
|
||||||
unsigned short dbop_read_input_once(void);
|
|
||||||
|
|
||||||
unsigned short dbop_read_input(void)
|
unsigned short dbop_read_input(void)
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
while (1) {
|
|
||||||
for (i=0; i<2; i++) {
|
|
||||||
input_value_tmp[i] = dbop_read_input_once();
|
|
||||||
}
|
|
||||||
/* noise rejection */
|
|
||||||
if (input_value_tmp[0] == input_value_tmp[1]) {
|
|
||||||
dbop_denoise_accept++;
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
dbop_denoise_reject++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (dbop_denoise_accept + dbop_denoise_reject > 1000) {
|
|
||||||
dbop_denoise_accept /= 2;
|
|
||||||
dbop_denoise_reject /= 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
return dbop_input_value;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned short dbop_read_input_once(void)
|
|
||||||
#else
|
|
||||||
unsigned short dbop_read_input(void)
|
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
unsigned int dbop_ctrl_old = DBOP_CTRL;
|
unsigned int dbop_ctrl_old = DBOP_CTRL;
|
||||||
unsigned int dbop_timpol23_old = DBOP_TIMPOL_23;
|
unsigned int dbop_timpol23_old = DBOP_TIMPOL_23;
|
||||||
|
@ -92,6 +52,11 @@ unsigned short dbop_read_input(void)
|
||||||
(1 << 16) | /* enw=1 (enable write) */
|
(1 << 16) | /* enw=1 (enable write) */
|
||||||
(1 << 12); /* ow=1 (16-bit data width) */
|
(1 << 12); /* ow=1 (16-bit data width) */
|
||||||
DBOP_DOUT = DBOP_PRECHARGE;
|
DBOP_DOUT = DBOP_PRECHARGE;
|
||||||
|
#if defined(SANSA_C200V2)
|
||||||
|
/* two additional writes to precharge longer get rid of the read noise */
|
||||||
|
DBOP_DOUT = DBOP_PRECHARGE;
|
||||||
|
DBOP_DOUT = DBOP_PRECHARGE;
|
||||||
|
#endif
|
||||||
while ((DBOP_STAT & (1<<10)) == 0);
|
while ((DBOP_STAT & (1<<10)) == 0);
|
||||||
|
|
||||||
#if defined(SANSA_FUZE) || defined(SANSA_E200V2)
|
#if defined(SANSA_FUZE) || defined(SANSA_E200V2)
|
||||||
|
|
|
@ -269,21 +269,10 @@ bool __dbg_hw_info(void)
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
#ifdef SANSA_C200V2
|
#ifdef SANSA_C200V2
|
||||||
extern int dbop_denoise_accept;
|
|
||||||
extern int dbop_denoise_reject;
|
|
||||||
|
|
||||||
lcd_clear_display();
|
lcd_clear_display();
|
||||||
line = 0;
|
line = 0;
|
||||||
lcd_puts(0, line++, "[Submodel:]");
|
lcd_puts(0, line++, "[Submodel:]");
|
||||||
lcd_putsf(0, line++, "C200v2 variant %d", c200v2_variant);
|
lcd_putsf(0, line++, "C200v2 variant %d", c200v2_variant);
|
||||||
if (dbop_denoise_accept) {
|
|
||||||
lcd_putsf(0, line++, "DBOP noise: %d%%",
|
|
||||||
(100*dbop_denoise_reject)/dbop_denoise_accept);
|
|
||||||
} else {
|
|
||||||
lcd_puts(0, line++, "DBOP noise: oo");
|
|
||||||
}
|
|
||||||
lcd_putsf(0, line++, "reject: %d", dbop_denoise_reject);
|
|
||||||
lcd_putsf(0, line++, "accept: %d", dbop_denoise_accept);
|
|
||||||
lcd_update();
|
lcd_update();
|
||||||
int btn = button_get_w_tmo(HZ/10);
|
int btn = button_get_w_tmo(HZ/10);
|
||||||
if(btn == (DEBUG_CANCEL|BUTTON_REL))
|
if(btn == (DEBUG_CANCEL|BUTTON_REL))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue