From eef8ba414d5a5989ab459a7c114fba64465cafa5 Mon Sep 17 00:00:00 2001 From: ranma Date: Sun, 27 Jun 2010 02:50:24 +0000 Subject: [PATCH] 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 --- firmware/target/arm/as3525/dbop-as3525.c | 45 ++++--------------------------- firmware/target/arm/as3525/debug-as3525.c | 11 -------- 2 files changed, 5 insertions(+), 51 deletions(-) diff --git a/firmware/target/arm/as3525/dbop-as3525.c b/firmware/target/arm/as3525/dbop-as3525.c index 87bc46e14..1816b5205 100644 --- a/firmware/target/arm/as3525/dbop-as3525.c +++ b/firmware/target/arm/as3525/dbop-as3525.c @@ -34,49 +34,9 @@ /* doesn't work with the new ams sansas so far and is not needed */ 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 */ -#if defined(SANSA_C200V2) -unsigned short dbop_read_input_once(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_timpol23_old = DBOP_TIMPOL_23; @@ -92,6 +52,11 @@ unsigned short dbop_read_input(void) (1 << 16) | /* enw=1 (enable write) */ (1 << 12); /* ow=1 (16-bit data width) */ 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); #if defined(SANSA_FUZE) || defined(SANSA_E200V2) diff --git a/firmware/target/arm/as3525/debug-as3525.c b/firmware/target/arm/as3525/debug-as3525.c index e6ae3a4a5..71a8a8502 100644 --- a/firmware/target/arm/as3525/debug-as3525.c +++ b/firmware/target/arm/as3525/debug-as3525.c @@ -269,21 +269,10 @@ bool __dbg_hw_info(void) while(1) { #ifdef SANSA_C200V2 - extern int dbop_denoise_accept; - extern int dbop_denoise_reject; - lcd_clear_display(); line = 0; lcd_puts(0, line++, "[Submodel:]"); 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(); int btn = button_get_w_tmo(HZ/10); if(btn == (DEBUG_CANCEL|BUTTON_REL)) -- 2.11.4.GIT